[*] 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-50593792.squashfs_v4_le_extract/usr/bin/userdbctl @ 0x201c */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.0000201c ()                              | void fcn_0000201c (uint32_t arg1, uint32_t arg2) {
                                                         |     int16_t var_0h_2;
                                                         |     int16_t var_4h_2;
                                                         |     int16_t var_8h_2;
                                                         |     int16_t var_ch_3;
                                                         |     int16_t var_10h_2;
                                                         |     int16_t var_14h_2;
                                                         |     int16_t var_18h_2;
                                                         |     int16_t var_1ch_2;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x0000201c push.w {r4, r5, r6, r7, r8, sb, lr}       |     
    0x00002020 sub sp, 0x24                              |     
    0x00002022 ldr r6, [pc, 0x198]                       |     
    0x00002024 add r6, pc                                |     r6 = 0x41e6;
    0x00002026 cmp r0, 0                                 |     
                                                         |     if (var_0h_2 == ) {
    0x00002028 beq.w 0x2146                              |         goto label_3;
                                                         |     }
    0x0000202c ldr r3, [pc, 0x190]                       |     
    0x0000202e mov r4, r0                                |     r4 = r0;
    0x00002030 add r3, pc                                |     r3 = 0x41f4;
    0x00002032 ldr r5, [r3]                              |     r5 = *(0x41f4);
    0x00002034 cmp r5, 3                                 |     
                                                         |     if (r5 > 3) {
    0x00002036 bhi.w 0x21a6                              |         goto label_4;
                                                         |     }
                                                         |     /* switch table (4 cases) at 0x203e */
    0x0000203a tbb [pc, r5]                              |     __asm ("tbb [0x00002040]");
    0x00002042 movs r3, 0                                |     r3 = 0;
    0x00002044 ldr r0, [r0, 0x3c]                        |     r0 = *(var_0h_2x3c);
    0x00002046 mov r2, r3                                |     r2 = r3;
    0x00002048 movs r1, 0x12                             |     r1 = 0x12;
    0x0000204a mov r5, r3                                |     r5 = r3;
    0x0000204c blx 0x1670                                |     json_variant_dump ();
                                                         | label_0:
    0x00002050 mov r0, r5                                |     r0 = r5;
    0x00002052 add sp, 0x24                              |     
    0x00002054 pop.w {r4, r5, r6, r7, r8, sb, pc}        |     
    0x00002058 movs r1, 1                                |     r1 = 1;
    0x0000205a blx 0x170c                                |     group_record_show ();
    0x0000205e ldrb r3, [r4, 8]                          |     r3 = *((r4 + 8));
    0x00002060 cmp r3, 0                                 |     
                                                         |     if (r3 != 0) {
    0x00002062 bne 0x2112                                |         goto label_5;
                                                         |     }
                                                         |     do {
                                                         | label_1:
    0x00002064 movs r5, 0                                |         r5 = 0;
    0x00002066 mov r0, r5                                |         r0 = r5;
    0x00002068 add sp, 0x24                              |         
    0x0000206a pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
    0x0000206e mov r7, r1                                |         r7 = r1;
    0x00002070 cmp r1, 0                                 |         
                                                         |         if (r1 == 0) {
    0x00002072 beq.w 0x217a                              |             goto label_6;
                                                         |         }
    0x00002076 ldr r6, [r0, 0xc]                         |         r6 = *(var_0h_2xc);
    0x00002078 blx 0x15f8                                |         group_record_disposition ();
    0x0000207c blx 0x1538                                |         user_disposition_to_string ();
    0x00002080 ldr.w sb, [r4, 0x28]                      |         sb = *((r4 + 0x28));
    0x00002084 mov r5, r0                                |         r5 = r0;
    0x00002086 ldr.w r8, [r4, 0x18]                      |         r8 = *((r4 + 0x18));
    0x00002088 strh r0, [r3]                             |         *(r3) = r0;
    0x0000208a mov r0, r4                                |         r0 = r4;
    0x0000208c movs r4, 0x21                             |         r4 = 0x21;
    0x0000208e blx 0x15f8                                |         group_record_disposition ();
    0x00002092 movs r3, 1                                |         r3 = 1;
    0x00002094 movs r1, 0x1e                             |         r1 = 0x1e;
    0x00002096 str r4, [sp, 0x1c]                        |         var_1ch_2 = r4;
    0x00002098 movs r4, 0xd                              |         r4 = 0xd;
    0x0000209a str r0, [sp, 0x18]                        |         var_18h_2 = r0;
    0x0000209c mov r2, r6                                |         r2 = r6;
    0x0000209e str r1, [sp, 4]                           |         var_4h_2 = r1;
    0x000020a0 mov r0, r7                                |         r0 = r7;
    0x000020a2 str r4, [sp, 0x14]                        |         var_14h_2 = r4;
    0x000020a4 mov r1, r3                                |         r1 = r3;
    0x000020a6 str.w sb, [sp, 8]                         |         __asm ("str.w sb, [var_8h_2]");
    0x000020aa str.w r8, [sp, 0x10]                      |         __asm ("str.w r8, [var_10h_2]");
    0x000020ae str r3, [sp, 0xc]                         |         var_ch_3 = r3;
    0x000020b0 str r5, [sp]                              |         *(sp) = r5;
    0x000020b2 blx 0x161c                                |         r0 = table_add_many_internal ();
    0x000020b6 subs r4, r0, 0                            |         r4 = r0 - 0;
    0x000020b8 bge 0x2064                                |         
                                                         |     } while (r4 >= r0);
    0x000020ba blx 0x14a8                                |     r0 = log_get_max_level ();
    0x000020be cmp r0, 2                                 |     
    0x000020c0 ittt le                                   |     
                                                         |     if (r0 <= 2) {
    0x000020c2 rsble r5, r4, 0                           |         __asm ("rsble r5, r4, 0");
                                                         |     }
                                                         |     if (r0 <= 2) {
    0x000020c4 uxtble r5, r5                             |         __asm ("uxtble r5, r5");
                                                         |     }
                                                         |     if (r0 <= 2) {
    0x000020c6 rsble r5, r5, 0                           |         __asm ("rsble r5, r5, 0");
                                                         |     }
                                                         |     if (r0 > 2) {
    0x000020c8 bgt 0x215a                                |         goto label_7;
                                                         |     }
                                                         | label_2:
    0x000020ca cmp r5, 0                                 |     
    0x000020cc it ge                                     |     
                                                         |     if (r5 < 0) {
    0x000020ce mvnge r5, 0x55                            |         r5 = ~0x55;
                                                         |     }
    0x000020d2 b 0x2050                                  |     goto label_0;
    0x000020d4 ldr r0, [r0, 0x28]                        |     r0 = *(var_0h_2x28);
    0x000020d6 blx 0x1580                                |     r0 = uid_is_valid ();
                                                         |     if (r0 == 0) {
    0x000020da cbz r0, 0x210e                            |         goto label_8;
                                                         |     }
    0x000020dc ldr r1, [pc, 0xe4]                        |     
    0x000020de movs r3, 0                                |     r3 = 0;
    0x000020e0 ldr r0, [r4, 0x2c]                        |     r0 = *((r4 + 0x2c));
    0x000020e2 mov r2, r3                                |     r2 = r3;
    0x000020e4 add r1, pc                                |     r1 = 0x42ac;
    0x000020e6 blx 0x143c                                |     r0 = strv_join_full ();
    0x000020ea mov r6, r0                                |     r6 = r0;
    0x000020ec cmp r0, 0                                 |     
                                                         |     if (r0 == 0) {
    0x000020ee beq 0x218e                                |         goto label_9;
                                                         |     }
    0x000020f0 ldr r1, [pc, 0xd4]                        |     
    0x000020f2 ldr r3, [r4, 0x28]                        |     r3 = *((r4 + 0x28));
    0x000020f4 ldr r2, [r4, 0xc]                         |     r2 = *((r4 + 0xc));
    0x000020f6 add r1, pc                                |     r1 = 0x42c2;
    0x000020f8 str r0, [sp]                              |     *(sp) = r0;
    0x000020fa movs r0, 1                                |     r0 = 1;
    0x000020fc blx 0x14d8                                |     printf_chk ()
                                                         |     do {
    0x00002100 mov r0, r6                                |         r0 = r6;
    0x00002102 blx 0x1544                                |         free (r0);
    0x00002106 mov r0, r5                                |         r0 = r5;
    0x00002108 add sp, 0x24                              |         
    0x0000210a pop.w {r4, r5, r6, r7, r8, sb, pc}        |         
                                                         | label_8:
    0x0000210e mov r6, r0                                |         r6 = r0;
    0x00002110 b 0x2100                                  |         
                                                         |     } while (1);
                                                         | label_5:
    0x00002112 ldr r3, [pc, 0xb8]                        |     r3 = *(0x21ce);
    0x00002114 ldr r3, [r6, r3]                          |     r3 = *((r6 + r3));
    0x00002116 ldr r0, [r3]                              |     r0 = *(0x21ce);
    0x00002118 blx 0x1574                                |     r0 = fflush (r0);
    0x0000211c blx 0x14a8                                |     r0 = log_get_max_level ();
    0x00002120 cmp r0, 3                                 |     
                                                         |     if (r0 <= 3) {
    0x00002122 ble 0x2064                                |         goto label_1;
                                                         |     }
    0x00002124 ldr r0, [r4, 0xc]                         |     r0 = *((r4 + 0xc));
    0x00002126 movs r3, 0xde                             |     r3 = 0xde;
    0x00002128 ldr r2, [pc, 0xa4]                        |     
    0x0000212a ldr r1, [pc, 0xa8]                        |     
    0x0000212c ldr r4, [pc, 0xa8]                        |     
    0x0000212e add r2, pc                                |     r2 = 0x4302;
    0x00002130 add r1, pc                                |     r1 = 0x430a;
    0x00002132 adds r2, 7                                |     r2 += 7;
    0x00002134 add r4, pc                                |     r4 = 0x4310;
    0x00002136 strd r1, r0, [sp, 4]                      |     __asm ("strd r1, r0, [sp, 4]");
    0x0000213a str r4, [sp]                              |     *(sp) = r4;
    0x0000213c movs r1, 0                                |     r1 = 0;
    0x0000213e movs r0, 4                                |     r0 = 4;
    0x00002140 blx 0x16ac                                |     log_internal ();
    0x00002144 b 0x2064                                  |     goto label_1;
                                                         | label_3:
    0x00002146 ldr r1, [pc, 0x94]                        |     
    0x00002148 movs r2, 0xc0                             |     r2 = 0xc0;
    0x0000214a ldr r3, [pc, 0x94]                        |     
    0x0000214c ldr r0, [pc, 0x94]                        |     
    0x0000214e add r1, pc                                |     r1 = "\e[0";
    0x00002150 add r3, pc                                |     r3 = 0x4336;
    0x00002152 adds r1, 7                                |     r1 += 7;
    0x00002154 add r0, pc                                |     r0 = "\e[0";
    0x00002156 blx 0x15a4                                |     log_assert_failed ();
                                                         | label_7:
    0x0000215a ldr r2, [pc, 0x8c]                        |     
    0x0000215c movs r3, 0xee                             |     r3 = 0xee;
    0x0000215e ldr r5, [pc, 0x8c]                        |     
    0x00002160 mov r1, r4                                |     r1 = r4;
    0x00002162 ldr r0, [pc, 0x8c]                        |     
    0x00002164 add r2, pc                                |     r2 = 0x4352;
    0x00002166 add r5, pc                                |     r5 = 0x4358;
    0x00002168 adds r2, 7                                |     r2 += 7;
    0x0000216a add r0, pc                                |     r0 = "No services.";
    0x0000216c strd r0, r5, [sp]                         |     __asm ("strd r0, r5, [sp]");
    0x00002170 movs r0, 3                                |     r0 = 3;
    0x00002172 blx 0x16ac                                |     r0 = log_internal ();
    0x00002176 mov r5, r0                                |     r5 = r0;
    0x00002178 b 0x20ca                                  |     goto label_2;
                                                         | label_6:
    0x0000217a ldr r1, [pc, 0x78]                        |     
    0x0000217c movs r2, 0xe4                             |     r2 = 0xe4;
    0x0000217e ldr r3, [pc, 0x78]                        |     
    0x00002180 ldr r0, [pc, 0x78]                        |     
    0x00002182 add r1, pc                                |     r1 = 0x437c;
    0x00002184 add r3, pc                                |     r3 = 0x4382;
    0x00002186 adds r1, 7                                |     r1 += 7;
    0x00002188 add r0, pc                                |     r0 = 0x4388;
    0x0000218a blx 0x15a4                                |     log_assert_failed ();
                                                         | label_9:
    0x0000218e ldr r1, [pc, 0x70]                        |     
    0x00002190 movs r2, 0xcc                             |     r2 = 0xcc;
    0x00002192 ldr r3, [pc, 0x70]                        |     
    0x00002194 movs r0, 3                                |     r0 = 3;
    0x00002196 add r1, pc                                |     r1 = 0x439c;
    0x00002198 add r3, pc                                |     r3 = 0x43a2;
    0x0000219a adds r1, 7                                |     r1 += 7;
    0x0000219c add sp, 0x24                              |     
    0x0000219e pop.w {r4, r5, r6, r7, r8, sb, lr}        |     
    0x000021a2 b.w 0x17cc                                |     void (*0x17cc)() ();
                                                         | label_4:
    0x000021a6 ldr r1, [pc, 0x60]                        |     
    0x000021a8 movs r2, 0xf3                             |     r2 = 0xf3;
    0x000021aa ldr r3, [pc, 0x60]                        |     
    0x000021ac ldr r0, [pc, 0x60]                        |     
    0x000021ae add r1, pc                                |     r1 = 0x43bc;
    0x000021b0 add r3, pc                                |     r3 = 0x43c2;
    0x000021b2 adds r1, 7                                |     r1 += 7;
    0x000021b4 add r0, pc                                |     r0 = 0x43c8;
    0x000021b6 blx 0x1760                                |     log_assert_failed_unreachable ();
    0x000021ba nop                                       |     
    0x000021bc cmp r6, 0x38                              |     
    0x000021be movs r1, r0                               |     r1 = r0;
    0x000021c0 cmp r7, 0xd0                              |     
    0x000021c2 movs r1, r0                               |     r1 = r0;
    0x000021c4 movs r0, 0xb8                             |     r0 = 0xb8;
    0x000021c6 movs r0, r0                               |     
    0x000021c8 movs r0, 0xaa                             |     r0 = 0xaa;
    0x000021ca movs r0, r0                               |     
    0x000021cc lsls r4, r1, 6                            |     r4 = r1 << 6;
    0x000021ce movs r0, r0                               |     
    0x000021d0 subs r2, r0, r5                           |     r2 = r0 - r5;
    0x000021d2 movs r0, r0                               |     
    0x000021d4 movs r0, 0x7c                             |     r0 = 0x7c;
    0x000021d6 movs r0, r0                               |     
    0x000021d8 cmp r0, 0xb0                              |     
    0x000021da movs r0, r0                               |     
    0x000021dc subs r2, r4, r4                           |     r2 = r4 - r4;
    0x000021de movs r0, r0                               |     
    0x000021e0 cmp r0, 8                                 |     
    0x000021e2 movs r0, r0                               |     
    0x000021e4 movs r0, 0x44                             |     r0 = 0x44;
    0x000021e6 movs r0, r0                               |     
    0x000021e8 subs r4, r1, r4                           |     r4 = r1 - r4;
    0x000021ea movs r0, r0                               |     
    0x000021ec movs r0, 0xb2                             |     r0 = 0xb2;
    0x000021ee movs r0, r0                               |     
    0x000021f0 cmp r0, 0x7a                              |     
    0x000021f2 movs r0, r0                               |     
    0x000021f4 subs r6, r5, r3                           |     r6 = r5 - r3;
    0x000021f6 movs r0, r0                               |     
    0x000021f8 movs r7, 0xd4                             |     r7 = 0xd4;
    0x000021fa movs r0, r0                               |     
    0x000021fc movs r0, 0x88                             |     r0 = 0x88;
    0x000021fe movs r0, r0                               |     
    0x00002200 subs r2, r3, r3                           |     r2 = r3 - r3;
    0x00002202 movs r0, r0                               |     
    0x00002204 cmp r0, 0x4c                              |     
    0x00002206 movs r0, r0                               |     
    0x00002208 subs r2, r0, r3                           |     r2 = r0 - r3;
    0x0000220a movs r0, r0                               |     
    0x0000220c movs r7, 0xa8                             |     r7 = 0xa8;
    0x0000220e movs r0, r0                               |     
    0x00002210 movs r0, 0x88                             |     r0 = 0x88;
    0x00002212 movs r0, r0                               |     
                                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/userdbctl @ 0x2214 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00002214 ()                                  | void fcn_00002214 (uint32_t arg1, uint32_t arg2) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_ch_2;
                                                             |     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;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00002214 svcmi 0xf0e92d                                |     __asm ("svcmi 0xf0e92d");
    0x00002218 sub sp, 0x3c                                  |     
    0x0000221a ldr r6, [pc, 0x1cc]                           |     
    0x0000221c add r6, pc                                    |     r6 = 0x460a;
    0x0000221e cmp r0, 0                                     |     
                                                             |     if (var_0h == ) {
    0x00002220 beq.w 0x2386                                  |         goto label_4;
                                                             |     }
    0x00002224 ldr r3, [pc, 0x1c4]                           |     
    0x00002226 mov r4, r0                                    |     r4 = r0;
    0x00002228 add r3, pc                                    |     r3 = 0x4618;
    0x0000222a ldr r5, [r3]                                  |     r5 = *(0x4618);
    0x0000222c cmp r5, 3                                     |     
                                                             |     if (r5 > 3) {
    0x0000222e bhi.w 0x23d4                                  |         goto label_5;
                                                             |     }
                                                             |     /* switch table (4 cases) at 0x2236 */
    0x00002232 tbb [pc, r5]                                  |     __asm ("tbb [0x00002238]");
    0x0000223a movs r3, 0                                    |     r3 = 0;
    0x0000223c ldr.w r0, [r0, 0x288]                         |     r0 = *(var_0hx288);
    0x00002240 mov r2, r3                                    |     r2 = r3;
    0x00002242 movs r1, 0x12                                 |     r1 = 0x12;
    0x00002244 mov r5, r3                                    |     r5 = r3;
    0x00002246 blx 0x1670                                    |     json_variant_dump ();
                                                             | label_0:
    0x0000224a mov r0, r5                                    |     r0 = r5;
    0x0000224c add sp, 0x3c                                  |     
    0x0000224e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |     
    0x00002252 movs r1, 1                                    |     r1 = 1;
    0x00002254 blx 0x1478                                    |     user_record_show ();
    0x00002258 ldrb r3, [r4, 8]                              |     r3 = *((r4 + 8));
    0x0000225a cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0000225c bne 0x2350                                    |         goto label_6;
                                                             |     }
                                                             |     do {
                                                             | label_1:
    0x0000225e movs r5, 0                                    |         r5 = 0;
    0x00002260 mov r0, r5                                    |         r0 = r5;
    0x00002262 add sp, 0x3c                                  |         
    0x00002264 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}    |         
    0x00002268 mov r7, r1                                    |         r7 = r1;
    0x0000226a cmp r1, 0                                     |         
                                                             |         if (r1 == 0) {
    0x0000226c beq.w 0x23ba                                  |             goto label_7;
                                                             |         }
    0x00002270 ldr.w fp, [r0, 0xc]                           |         fp = *(var_0hxc);
    0x00002274 blx 0x1664                                    |         user_record_disposition ();
    0x00002278 blx 0x1538                                    |         r0 = user_disposition_to_string ();
    0x0000227c mov r6, r0                                    |         r6 = r0;
    0x0000227e mov r0, r4                                    |         r0 = r4;
    0x00002280 ldr.w sl, [r4, 0x128]                         |         sl = *((r4 + 0x128));
    0x00002284 blx 0x152c                                    |         user_record_gid ();
    0x00002288 ldr r5, [r4, 0x18]                            |         r5 = *((r4 + 0x18));
    0x0000228a mov r8, r0                                    |         r8 = r0;
                                                             |         if (r5 != 0) {
    0x0000228c cbz r5, 0x2296                                |             
    0x0000228e ldrb r3, [r5]                                 |             r3 = *(r5);
    0x00002290 cmp r3, 0                                     |             
    0x00002292 it eq                                         |             
                                                             |             if (r3 == 0) {
    0x00002294 moveq r5, 0                                   |                 r5 = 0;
                                                             |                 goto label_8;
                                                             |             }
                                                             |         }
                                                             | label_8:
    0x00002296 mov r0, r4                                    |         r0 = r4;
    0x00002298 blx 0x17a8                                    |         r0 = user_record_home_directory ();
    0x0000229c mov sb, r0                                    |         sb = r0;
    0x0000229e mov r0, r4                                    |         r0 = r4;
    0x000022a0 blx 0x1694                                    |         r0 = user_record_shell ();
    0x000022a4 mov r3, r0                                    |         r3 = r0;
    0x000022a6 mov r0, r4                                    |         r0 = r4;
    0x000022a8 mov r4, r3                                    |         r4 = r3;
    0x000022aa blx 0x1664                                    |         user_record_disposition ();
    0x000022ae movs r3, 0x1e                                 |         r3 = 0x1e;
    0x000022b0 str r4, [sp, 0x28]                            |         var_28h = r4;
    0x000022b2 str r3, [sp, 0xc]                             |         var_ch_2 = r3;
    0x000022b4 movs r4, 0x21                                 |         r4 = 0x21;
    0x000022b6 movs r3, 0x1d                                 |         r3 = 0x1d;
    0x000022b8 str r4, [sp, 0x34]                            |         var_34h = r4;
    0x000022ba strd r3, sl, [sp, 4]                          |         __asm ("strd r3, sl, [sp, 4]");
    0x000022be movs r4, 0xd                                  |         r4 = 0xd;
    0x000022c0 movs r3, 1                                    |         r3 = 1;
    0x000022c2 str r0, [sp, 0x30]                            |         var_30h = r0;
    0x000022c4 str r4, [sp, 0x2c]                            |         var_2ch = r4;
    0x000022c6 mov r2, fp                                    |         r2 = fp;
    0x000022c8 mov r0, r7                                    |         r0 = r7;
    0x000022ca mov r1, r3                                    |         r1 = r3;
    0x000022cc str.w sb, [sp, 0x20]                          |         __asm ("str.w sb, [var_20h]");
    0x000022d0 str r5, [sp, 0x18]                            |         var_18h = r5;
    0x000022d2 str.w r8, [sp, 0x10]                          |         __asm ("str.w r8, [var_10h]");
    0x000022d6 str r6, [sp]                                  |         *(sp) = r6;
    0x000022d8 str r3, [sp, 0x24]                            |         var_24h = r3;
    0x000022da str r3, [sp, 0x1c]                            |         var_1ch = r3;
    0x000022dc str r3, [sp, 0x14]                            |         var_14h = r3;
    0x000022de blx 0x161c                                    |         r0 = table_add_many_internal ();
    0x000022e2 subs r4, r0, 0                                |         r4 = r0 - 0;
    0x000022e4 bge 0x225e                                    |         
                                                             |     } while (r4 >= r0);
    0x000022e6 blx 0x14a8                                    |     r0 = log_get_max_level ();
    0x000022ea cmp r0, 2                                     |     
    0x000022ec ittt le                                       |     
                                                             |     if (r0 <= 2) {
    0x000022ee rsble r5, r4, 0                               |         __asm ("rsble r5, r4, 0");
                                                             |     }
                                                             |     if (r0 <= 2) {
    0x000022f0 uxtble r5, r5                                 |         __asm ("uxtble r5, r5");
                                                             |     }
                                                             |     if (r0 <= 2) {
    0x000022f2 rsble r5, r5, 0                               |         __asm ("rsble r5, r5, 0");
                                                             |     }
                                                             |     if (r0 > 2) {
    0x000022f4 bgt 0x239a                                    |         goto label_9;
                                                             |     }
                                                             | label_2:
    0x000022f6 cmp r5, 0                                     |     
    0x000022f8 it ge                                         |     
                                                             |     if (r5 < 0) {
    0x000022fa mvnge r5, 0x55                                |         r5 = ~0x55;
                                                             |     }
    0x000022fe b 0x224a                                      |     goto label_0;
    0x00002300 ldr.w r0, [r0, 0x128]                         |     r0 = *(var_0hx128);
    0x00002304 blx 0x1580                                    |     r0 = uid_is_valid ();
    0x00002308 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0000230a beq 0x225e                                    |         goto label_1;
                                                             |     }
    0x0000230c mov r0, r4                                    |     r0 = r4;
    0x0000230e ldr.w r8, [r4, 0xc]                           |     r8 = *((r4 + 0xc));
    0x00002312 ldr.w sb, [r4, 0x128]                         |     sb = *((r4 + 0x128));
    0x00002316 blx 0x152c                                    |     r0 = user_record_gid ();
    0x0000231a mov r7, r0                                    |     r7 = r0;
    0x0000231c mov r0, r4                                    |     r0 = r4;
    0x0000231e blx 0x1688                                    |     r0 = user_record_real_name ();
    0x00002322 mov r6, r0                                    |     r6 = r0;
    0x00002324 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002326 beq 0x23ce                                    |         goto label_10;
                                                             |     }
                                                             | label_3:
    0x00002328 mov r0, r4                                    |     r0 = r4;
    0x0000232a blx 0x17a8                                    |     r0 = user_record_home_directory ();
    0x0000232e mov r3, r0                                    |     r3 = r0;
    0x00002330 mov r0, r4                                    |     r0 = r4;
    0x00002332 mov r4, r3                                    |     r4 = r3;
    0x00002334 blx 0x1694                                    |     user_record_shell ();
    0x00002338 ldr r1, [pc, 0xb4]                            |     
    0x0000233a mov r3, sb                                    |     r3 = sb;
    0x0000233c strd r4, r0, [sp, 8]                          |     __asm ("strd r4, r0, [sp, 8]");
    0x00002340 mov r2, r8                                    |     r2 = r8;
    0x00002342 str r6, [sp, 4]                               |     var_4h = r6;
    0x00002344 movs r0, 1                                    |     r0 = 1;
    0x00002346 add r1, pc                                    |     r1 = 0x473a;
    0x00002348 str r7, [sp]                                  |     *(sp) = r7;
    0x0000234a blx 0x14d8                                    |     printf_chk ()
    0x0000234e b 0x224a                                      |     goto label_0;
                                                             | label_6:
    0x00002350 ldr r3, [pc, 0xa0]                            |     r3 = *(0x23f4);
    0x00002352 ldr r3, [r6, r3]                              |     r3 = *((r6 + r3));
    0x00002354 ldr r0, [r3]                                  |     r0 = *(0x23f4);
    0x00002356 blx 0x1574                                    |     r0 = fflush (r0);
    0x0000235a blx 0x14a8                                    |     r0 = log_get_max_level ();
    0x0000235e cmp r0, 3                                     |     
                                                             |     if (r0 <= 3) {
    0x00002360 ble.w 0x225e                                  |         goto label_1;
                                                             |     }
    0x00002364 ldr r0, [r4, 0xc]                             |     r0 = *((r4 + 0xc));
    0x00002366 movs r3, 0x45                                 |     r3 = 0x45;
    0x00002368 ldr r2, [pc, 0x8c]                            |     
    0x0000236a ldr r1, [pc, 0x90]                            |     
    0x0000236c ldr r4, [pc, 0x90]                            |     
    0x0000236e add r2, pc                                    |     r2 = 0x476a;
    0x00002370 add r1, pc                                    |     r1 = 0x4772;
    0x00002372 adds r2, 7                                    |     r2 += 7;
    0x00002374 add r4, pc                                    |     r4 = 0x4778;
    0x00002376 strd r1, r0, [sp, 4]                          |     __asm ("strd r1, r0, [sp, 4]");
    0x0000237a str r4, [sp]                                  |     *(sp) = r4;
    0x0000237c movs r1, 0                                    |     r1 = 0;
    0x0000237e movs r0, 4                                    |     r0 = 4;
    0x00002380 blx 0x16ac                                    |     log_internal ();
    0x00002384 b 0x225e                                      |     goto label_1;
                                                             | label_4:
    0x00002386 ldr r1, [pc, 0x7c]                            |     
    0x00002388 movs r2, 0x2a                                 |     r2 = 0x2a;
    0x0000238a ldr r3, [pc, 0x7c]                            |     
    0x0000238c ldr r0, [pc, 0x7c]                            |     
    0x0000238e add r1, pc                                    |     r1 = 0x4798;
    0x00002390 add r3, pc                                    |     r3 = 0x479e;
    0x00002392 adds r1, 7                                    |     r1 += 7;
    0x00002394 add r0, pc                                    |     r0 = "classic";
    0x00002396 blx 0x15a4                                    |     log_assert_failed ();
                                                             | label_9:
    0x0000239a ldr r2, [pc, 0x74]                            |     
    0x0000239c movs r3, 0x58                                 |     r3 = 0x58;
    0x0000239e ldr r5, [pc, 0x74]                            |     
    0x000023a0 mov r1, r4                                    |     r1 = r4;
    0x000023a2 ldr r0, [pc, 0x74]                            |     
    0x000023a4 add r2, pc                                    |     r2 = 0x47ba;
    0x000023a6 add r5, pc                                    |     r5 = "help";
    0x000023a8 adds r2, 7                                    |     r2 += 7;
    0x000023aa add r0, pc                                    |     r0 = "classic\nfriendly\njson\ntable";
    0x000023ac strd r0, r5, [sp]                             |     __asm ("strd r0, r5, [sp]");
    0x000023b0 movs r0, 3                                    |     r0 = 3;
    0x000023b2 blx 0x16ac                                    |     r0 = log_internal ();
    0x000023b6 mov r5, r0                                    |     r5 = r0;
    0x000023b8 b 0x22f6                                      |     goto label_2;
                                                             | label_7:
    0x000023ba ldr r1, [pc, 0x60]                            |     
    0x000023bc movs r2, 0x4b                                 |     r2 = 0x4b;
    0x000023be ldr r3, [pc, 0x60]                            |     
    0x000023c0 ldr r0, [pc, 0x60]                            |     
    0x000023c2 add r1, pc                                    |     r1 = "Invalid --output= mode: %s";
    0x000023c4 add r3, pc                                    |     r3 = 0x47ea;
    0x000023c6 adds r1, 7                                    |     r1 += 7;
    0x000023c8 add r0, pc                                    |     r0 = 0x47f0;
    0x000023ca blx 0x15a4                                    |     log_assert_failed ();
                                                             | label_10:
    0x000023ce ldr r6, [pc, 0x58]                            |     
    0x000023d0 add r6, pc                                    |     r6 = 0x47fe;
    0x000023d2 b 0x2328                                      |     goto label_3;
                                                             | label_5:
    0x000023d4 ldr r1, [pc, 0x54]                            |     
    0x000023d6 movs r2, 0x5d                                 |     r2 = 0x5d;
    0x000023d8 ldr r3, [pc, 0x54]                            |     
    0x000023da ldr r0, [pc, 0x58]                            |     
    0x000023dc add r1, pc                                    |     r1 = "--with-dropin=";
    0x000023de add r3, pc                                    |     r3 = 0x4812;
    0x000023e0 adds r1, 7                                    |     r1 += 7;
    0x000023e2 add r0, pc                                    |     
    0x000023e4 blx 0x1760                                    |     log_assert_failed_unreachable ();
    0x000023e8 cmp r4, 0x40                                  |     
    0x000023ea movs r1, r0                                   |     r1 = r0;
    0x000023ec cmp r5, 0xd8                                  |     
    0x000023ee movs r1, r0                                   |     r1 = r0;
    0x000023f0 subs r2, r2, 4                                |     r2 -= 4;
    0x000023f2 movs r0, r0                                   |     
    0x000023f4 lsls r4, r1, 6                                |     r4 = r1 << 6;
    0x000023f6 movs r0, r0                                   |     
    0x000023f8 adds r2, r0, r4                               |     r2 = r0 + r4;
    0x000023fa movs r0, r0                                   |     
    0x000023fc subs r0, r0, 4                                |     r0 -= 4;
    0x000023fe movs r0, r0                                   |     
    0x00002400 movs r6, 0x14                                 |     r6 = 0x14;
    0x00002402 movs r0, r0                                   |     
    0x00002404 adds r2, r4, r3                               |     r2 = r4 + r3;
    0x00002406 movs r0, r0                                   |     
    0x00002408 movs r5, 0xac                                 |     r5 = 0xac;
    0x0000240a movs r0, r0                                   |     
    0x0000240c subs r0, r0, 3                                |     r0 -= 3;
    0x0000240e movs r0, r0                                   |     
    0x00002410 adds r4, r1, r3                               |     r4 = r1 + r3;
    0x00002412 movs r0, r0                                   |     
    0x00002414 subs r2, r6, 1                                |     r2 = r6 - 1;
    0x00002416 movs r0, r0                                   |     
    0x00002418 movs r5, 0xde                                 |     r5 = 0xde;
    0x0000241a movs r0, r0                                   |     
    0x0000241c adds r6, r5, r2                               |     r6 = r5 + r2;
    0x0000241e movs r0, r0                                   |     
    0x00002420 movs r5, 0x78                                 |     r5 = 0x78;
    0x00002422 movs r0, r0                                   |     
    0x00002424 subs r0, r1, 1                                |     r0 = r1 - 1;
    0x00002426 movs r0, r0                                   |     
    0x00002428 subs r4, r3, 2                                |     r4 = r3 - 2;
    0x0000242a movs r0, r0                                   |     
    0x0000242c adds r4, r2, r2                               |     r4 = r2 + r2;
    0x0000242e movs r0, r0                                   |     
    0x00002430 movs r5, 0x5e                                 |     r5 = 0x5e;
    0x00002432 movs r0, r0                                   |     
    0x00002434 subs r6, r5, 3                                |     r6 = r5 - 3;
    0x00002436 movs r0, r0                                   |     
    0x00002438 push {r4, lr}                                 |     
    0x0000243a mov r4, r0                                    |     r4 = r0;
    0x0000243c ldr r0, [r0]                                  |     r0 = "--with-varlink=";
                                                             |     if (r0 != 0) {
    0x0000243e cbz r0, 0x2446                                |         
    0x00002440 blx 0x1598                                    |         strv_free ();
    0x00002444 str r0, [r4]                                  |         *(r4) = r0;
                                                             |     }
    0x00002446 pop {r4, pc}                                  |     
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/userdbctl @ 0x2448 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00002448 ()                                      | void fcn_00002448 (void * arg1, void * arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h_2;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch_2;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h_2;
                                                                 |     int16_t var_2ch_2;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_10h_3;
                                                                 |     int16_t var_14h_2;
                                                                 |     int16_t var_18h_2;
                                                                 |     int16_t var_1ch_3;
                                                                 |     int16_t var_24h_3;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int32_t var_0h_6;
                                                                 |     int32_t var_0h_7;
                                                                 |     int16_t var_8h_3;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h_4;
                                                                 |     void * var_14h_3;
                                                                 |     void * ptr;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_0h_3;
                                                                 |     int32_t var_4h_5;
                                                                 |     int16_t var_8h_4;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_0h_4;
                                                                 |     int16_t var_4h_3;
                                                                 |     int16_t var_8h_5;
                                                                 |     int16_t var_ch_3;
                                                                 |     int16_t var_14h_4;
                                                                 |     int16_t var_18h_4;
                                                                 |     int16_t var_1ch_4;
                                                                 |     size_t addrlen;
                                                                 |     int16_t var_a4h;
                                                                 |     int16_t var_0h_5;
                                                                 |     void * var_4h_4;
                                                                 |     int32_t var_4h_6;
                                                                 |     int32_t var_ch_4;
                                                                 |     int32_t var_ch_5;
                                                                 |     int16_t var_14h_5;
                                                                 |     int16_t var_18h_5;
                                                                 |     int16_t var_20h_2;
                                                                 |     int16_t var_24h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00002448 ssub16mi fp, r5, r0                               |     __asm ("ssub16mi fp, r5, r0");
    0x0000244c ldr r2, [pc, 0x1a4]                               |     
    0x0000244e sub sp, 0x28                                      |     
    0x00002450 ldr r3, [pc, 0x1a4]                               |     r3 = *(0x25f8);
    0x00002452 add r2, pc                                        |     r2 = 0x4a4a;
    0x00002454 ldr r3, [r2, r3]                                  |     
    0x00002456 ldr r3, [r3]                                      |     r3 = *(0x4a4a);
    0x00002458 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x0000245a mov.w r3, 0                                       |     r3 = 0;
    0x0000245e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002460 beq 0x2538                                        |         goto label_70;
                                                                 |     }
    0x00002462 mov r6, r1                                        |     r6 = r1;
    0x00002464 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00002466 beq 0x254e                                        |         goto label_71;
                                                                 |     }
    0x00002468 ldr r3, [pc, 0x190]                               |     
    0x0000246a add r3, pc                                        |     r3 = 0x4a6a;
    0x0000246c ldr r4, [r3]                                      |     r4 = *(0x4a6a);
    0x0000246e cmp r4, 3                                         |     
                                                                 |     if (r4 > 3) {
    0x00002470 bhi.w 0x25dc                                      |         goto label_72;
                                                                 |     }
                                                                 |     /* switch table (4 cases) at 0x2478 */
    0x00002474 tbb [pc, r4]                                      |     __asm ("tbb [0x0000247c]");
    0x0000247c ldr r3, [pc, 0x180]                               |     
    0x0000247e movs r5, 0                                        |     r5 = 0;
    0x00002480 movs r1, 8                                        |     r1 = 8;
    0x00002482 movs r2, 9                                        |     r2 = 9;
    0x00002484 str r1, [sp, 0x18]                                |     var_18h_5 = r1;
    0x00002486 movs r1, 7                                        |     r1 = 7;
    0x00002488 add r3, pc                                        |     r3 = 0x4a8c;
    0x0000248a strd r0, r2, [sp, 4]                              |     __asm ("strd r0, r2, [var_4h_4]");
    0x0000248e strd r3, r5, [sp, 0xc]                            |     __asm ("strd r3, r5, [var_ch_4]");
    0x00002492 add r0, sp, 0x20                                  |     r0 += var_20h_2;
    0x00002494 ldr r3, [pc, 0x16c]                               |     
    0x00002496 str r6, [sp, 0x14]                                |     var_14h_5 = r6;
    0x00002498 str r5, [sp]                                      |     *(sp) = r5;
    0x0000249a add r3, pc                                        |     r3 = 0x4aa2;
    0x0000249c str r5, [sp, 0x20]                                |     var_20h_2 = r5;
    0x0000249e blx 0x164c                                        |     json_build ();
    0x000024a2 subs r4, r0, 0                                    |     r4 -= var_20h_2;
                                                                 |     if (r4 < var_20h_2) {
    0x000024a4 blt 0x2514                                        |         goto label_73;
                                                                 |     }
    0x000024a6 ldr r0, [sp, 0x20]                                |     r0 = var_20h_2;
    0x000024a8 mov r3, r5                                        |     r3 = r5;
    0x000024aa mov r2, r5                                        |     r2 = r5;
    0x000024ac movs r1, 0x12                                     |     r1 = 0x12;
    0x000024ae blx 0x1670                                        |     json_variant_dump ();
    0x000024b2 ldr r0, [sp, 0x20]                                |     r0 = var_20h_2;
                                                                 |     if (r0 == 0) {
    0x000024b4 cbz r0, 0x2500                                    |         goto label_74;
                                                                 |     }
    0x000024b6 blx 0x1748                                        |     json_variant_unref ();
    0x000024ba b 0x2500                                          |     goto label_74;
    0x000024bc ldr r1, [pc, 0x148]                               |     
    0x000024be mov r3, r0                                        |     r3 = r0;
    0x000024c0 mov r2, r6                                        |     r2 = r6;
    0x000024c2 movs r0, 1                                        |     r0 = 1;
    0x000024c4 movs r4, 0                                        |     r4 = 0;
    0x000024c6 add r1, pc                                        |     r1 = 0x4ad2;
    0x000024c8 blx 0x14d8                                        |     printf_chk ()
                                                                 |     do {
                                                                 | label_0:
    0x000024cc ldr r2, [pc, 0x13c]                               |         
    0x000024ce ldr r3, [pc, 0x128]                               |         r3 = *(0x25fa);
    0x000024d0 add r2, pc                                        |         r2 = 0x4ae0;
    0x000024d2 ldr r3, [r2, r3]                                  |         r3 = *(0x4ae0);
    0x000024d4 ldr r2, [r3]                                      |         r2 = *(0x4ae0);
    0x000024d6 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x000024d8 eors r2, r3                                       |         r2 ^= r3;
    0x000024da mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000024de bne 0x25d8                                        |             goto label_75;
                                                                 |         }
    0x000024e0 mov r0, r4                                        |         r0 = r4;
    0x000024e2 add sp, 0x28                                      |         
    0x000024e4 pop {r4, r5, r6, pc}                              |         
    0x000024e6 cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x000024e8 beq 0x2564                                        |             goto label_76;
                                                                 |         }
    0x000024ea movs r3, 1                                        |         r3 = 1;
    0x000024ec movs r1, 0x21                                     |         r1 = 0x21;
    0x000024ee mov r2, r0                                        |         r2 = r0;
    0x000024f0 str r1, [sp, 4]                                   |         var_4h_4 = r1;
    0x000024f2 mov r0, r5                                        |         r0 = r5;
    0x000024f4 mov r1, r3                                        |         r1 = r3;
    0x000024f6 str r6, [sp]                                      |         *(sp) = r6;
    0x000024f8 blx 0x161c                                        |         r0 = table_add_many_internal ();
    0x000024fc subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 < r0) {
    0x000024fe blt 0x257a                                        |             goto label_77;
                                                                 |         }
                                                                 | label_74:
    0x00002500 movs r4, 0                                        |         r4 = 0;
    0x00002502 b 0x24cc                                          |         
                                                                 |     } while (1);
    0x00002504 ldr r1, [pc, 0x108]                               |     
    0x00002506 mov r2, r0                                        |     r2 = r0;
    0x00002508 mov r3, r6                                        |     r3 = r6;
    0x0000250a movs r0, 1                                        |     r0 = 1;
    0x0000250c add r1, pc                                        |     r1 = 0x4b20;
    0x0000250e blx 0x14d8                                        |     printf_chk ()
    0x00002512 b 0x24cc                                          |     goto label_0;
                                                                 | label_73:
    0x00002514 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002518 cmp r0, 2                                         |     
    0x0000251a ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x0000251c rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x0000251e uxtble r4, r4                                     |         __asm ("uxtble r4, r4");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00002520 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 > 2) {
    0x00002522 bgt 0x2594                                        |         goto label_78;
                                                                 |     }
                                                                 | label_1:
    0x00002524 ldr r0, [sp, 0x20]                                |     r0 = var_20h_2;
    0x00002526 cmp r4, 0                                         |     
    0x00002528 it ge                                             |     
                                                                 |     if (r4 < 0) {
    0x0000252a mvnge r4, 0x55                                    |         r4 = ~0x55;
                                                                 |     }
    0x0000252e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002530 beq 0x24cc                                        |         goto label_0;
                                                                 |     }
    0x00002532 blx 0x1748                                        |     json_variant_unref ();
    0x00002536 b 0x24cc                                          |     goto label_0;
                                                                 | label_70:
    0x00002538 ldr r1, [pc, 0xd8]                                |     
    0x0000253a mov.w r2, 0x158                                   |     r2 = 0x158;
    0x0000253e ldr r3, [pc, 0xd8]                                |     
    0x00002540 ldr r0, [pc, 0xd8]                                |     
    0x00002542 add r1, pc                                        |     r1 = 0x4b5a;
    0x00002544 add r3, pc                                        |     r3 = 0x4b62;
    0x00002546 adds r1, 7                                        |     r1 += 7;
    0x00002548 add r0, pc                                        |     r0 = 0x4b68;
    0x0000254a blx 0x15a4                                        |     log_assert_failed ();
                                                                 | label_71:
    0x0000254e ldr r1, [pc, 0xd0]                                |     
    0x00002550 movw r2, 0x159                                    |     r2 = 0x159;
    0x00002554 ldr r3, [pc, 0xcc]                                |     
    0x00002556 ldr r0, [pc, 0xd0]                                |     
    0x00002558 add r1, pc                                        |     r1 = 0x4b7e;
    0x0000255a add r3, pc                                        |     r3 = 0x4b82;
    0x0000255c adds r1, 7                                        |     r1 += 7;
    0x0000255e add r0, pc                                        |     r0 = 0x4b8c;
    0x00002560 blx 0x15a4                                        |     log_assert_failed ();
                                                                 | label_76:
    0x00002564 ldr r1, [pc, 0xc4]                                |     
    0x00002566 movw r2, 0x177                                    |     r2 = 0x177;
    0x0000256a ldr r3, [pc, 0xc4]                                |     
    0x0000256c ldr r0, [pc, 0xc4]                                |     
    0x0000256e add r1, pc                                        |     r1 = 0x4b9e;
    0x00002570 add r3, pc                                        |     r3 = 0x4ba6;
    0x00002572 adds r1, 7                                        |     r1 += 7;
    0x00002574 add r0, pc                                        |     r0 = 0x4bac;
    0x00002576 blx 0x15a4                                        |     log_assert_failed ();
    0x00002578 invalid                                           |     
                                                                 | label_77:
    0x0000257a blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x0000257e cmp r0, 2                                         |     
    0x00002580 ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x00002582 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00002584 uxtble r4, r4                                     |         __asm ("uxtble r4, r4");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00002586 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
    0x00002588 bgt 0x25b6                                        |     
                                                                 |     while (1) {
    0x0000258a cmp r4, 0                                         |         
    0x0000258c it ge                                             |         
                                                                 |         if (r4 < 0) {
    0x0000258e mvnge r4, 0x55                                    |             r4 = ~0x55;
                                                                 |         }
    0x00002592 b 0x24cc                                          |         goto label_0;
                                                                 | label_78:
    0x00002594 ldr r2, [pc, 0xa0]                                |         
    0x00002596 mov r1, r4                                        |         r1 = r4;
    0x00002598 ldr r5, [pc, 0xa0]                                |         
    0x0000259a movw r3, 0x16b                                    |         r3 = 0x16b;
    0x0000259e ldr r0, [pc, 0xa0]                                |         
    0x000025a0 add r2, pc                                        |         r2 = 0x4bdc;
    0x000025a2 add r5, pc                                        |         r5 = 0x4be2;
    0x000025a4 adds r2, 7                                        |         r2 += 7;
    0x000025a6 add r0, pc                                        |         r0 = 0x4bec;
    0x000025a8 strd r0, r5, [sp]                                 |         __asm ("strd r0, r5, [sp]");
    0x000025ac movs r0, 3                                        |         r0 = 3;
    0x000025ae blx 0x16ac                                        |         r0 = log_internal ();
    0x000025b2 mov r4, r0                                        |         r4 = r0;
    0x000025b4 b 0x2524                                          |         goto label_1;
    0x000025b6 ldr r2, [pc, 0x8c]                                |         
    0x000025b8 mov r1, r4                                        |         r1 = r4;
    0x000025ba ldr r5, [pc, 0x8c]                                |         
    0x000025bc mov.w r3, 0x17e                                   |         r3 = 0x17e;
    0x000025c0 ldr r0, [pc, 0x88]                                |         
    0x000025c2 add r2, pc                                        |         r2 = 0x4c0c;
    0x000025c4 add r5, pc                                        |         r5 = 0x4c12;
    0x000025c6 adds r2, 7                                        |         r2 += 7;
    0x000025c8 add r0, pc                                        |         r0 = 0x4c18;
    0x000025ca strd r0, r5, [sp]                                 |         __asm ("strd r0, r5, [sp]");
    0x000025ce movs r0, 3                                        |         r0 = 3;
    0x000025d0 blx 0x16ac                                        |         r0 = log_internal ();
    0x000025d4 mov r4, r0                                        |         r4 = r0;
    0x000025d6 b 0x258a                                          |         
                                                                 |     }
                                                                 | label_75:
    0x000025d8 blx 0x16a0                                        |     stack_chk_fail ();
                                                                 | label_72:
    0x000025dc ldr r1, [pc, 0x70]                                |     
    0x000025de movw r2, 0x183                                    |     r2 = 0x183;
    0x000025e2 ldr r3, [pc, 0x70]                                |     
    0x000025e4 ldr r0, [pc, 0x70]                                |     
    0x000025e6 add r1, pc                                        |     r1 = 0x4c3a;
    0x000025e8 add r3, pc                                        |     r3 = 0x4c42;
    0x000025ea adds r1, 7                                        |     r1 += 7;
    0x000025ec add r0, pc                                        |     r0 = 0x4c48;
    0x000025ee blx 0x1760                                        |     log_assert_failed_unreachable ();
    0x000025f2 nop                                               |     
    0x000025f4 cmp r2, 0xa                                       |     
    0x000025f6 movs r1, r0                                       |     r1 = r0;
    0x000025f8 lsls r4, r7, 5                                    |     r4 = r7 << 5;
    0x000025fa movs r0, r0                                       |     
    0x000025fc cmp r3, 0x96                                      |     
    0x000025fe movs r1, r0                                       |     r1 = r0;
    0x00002600 subs r0, r5, 1                                    |     r0 = r5 - 1;
    0x00002602 movs r0, r0                                       |     
    0x00002604 subs r6, r1, 1                                    |     r6 = r1 - 1;
    0x00002606 movs r0, r0                                       |     
    0x00002608 subs r2, r3, 1                                    |     r2 = r3 - 1;
    0x0000260a movs r0, r0                                       |     
    0x0000260c cmp r1, 0x8c                                      |     
    0x0000260e movs r1, r0                                       |     r1 = r0;
    0x00002610 adds r4, r5, 7                                    |     r4 = r5 + 7;
    0x00002612 movs r0, r0                                       |     
    0x00002614 asrs r6, r5, 0x1c                                 |     r6 = r5 >> 0x1c;
    0x00002616 movs r0, r0                                       |     
    0x00002618 movs r4, 0x20                                     |     r4 = 0x20;
    0x0000261a movs r0, r0                                       |     
    0x0000261c adds r0, r4, 6                                    |     r0 = r4 + 6;
    0x0000261e movs r0, r0                                       |     
    0x00002620 asrs r0, r3, 0x1c                                 |     r0 = r3 >> 0x1c;
    0x00002622 movs r0, r0                                       |     
    0x00002624 movs r4, 0xa                                      |     r4 = 0xa;
    0x00002626 movs r0, r0                                       |     
    0x00002628 adds r2, r2, 6                                    |     r2 += 6;
    0x0000262a movs r0, r0                                       |     
    0x0000262c asrs r2, r0, 0x1c                                 |     r2 = r0 >> 0x1c;
    0x0000262e movs r0, r0                                       |     
    0x00002630 movs r3, 0xf4                                     |     r3 = 0xf4;
    0x00002632 movs r0, r0                                       |     
    0x00002634 adds r4, r3, 2                                    |     r4 = r3 + 2;
    0x00002636 movs r0, r0                                       |     
    0x00002638 asrs r0, r2, 0x1b                                 |     r0 = r2 >> 0x1b;
    0x0000263a movs r0, r0                                       |     
    0x0000263c adds r6, r3, 5                                    |     r6 = r3 + 5;
    0x0000263e movs r0, r0                                       |     
    0x00002640 movs r4, 0x5a                                     |     r4 = 0x5a;
    0x00002642 movs r0, r0                                       |     
    0x00002644 asrs r6, r5, 0x1a                                 |     r6 = r5 >> 0x1a;
    0x00002646 movs r0, r0                                       |     
    0x00002648 adds r4, r2, 1                                    |     r4 = r2 + 1;
    0x0000264a movs r0, r0                                       |     
    0x0000264c movs r4, 0x38                                     |     r4 = 0x38;
    0x0000264e movs r0, r0                                       |     
    0x00002650 asrs r2, r1, 0x1a                                 |     r2 = r1 >> 0x1a;
    0x00002652 movs r0, r0                                       |     
    0x00002654 movs r3, 0x7c                                     |     r3 = 0x7c;
    0x00002656 movs r0, r0                                       |     
    0x00002658 adds r4, r4, 3                                    |     r4 += 3;
    0x0000265a movs r0, r0                                       |     
    0x0000265c ldr r2, [pc, 0x378]                               |     
    0x0000265e ldr r3, [pc, 0x37c]                               |     r3 = *(0x29de);
    0x00002660 ldr r0, [pc, 0x37c]                               |     
    0x00002662 add r2, pc                                        |     r2 = 0x503e;
    0x00002664 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00002668 ldr r3, [r2, r3]                                  |     
    0x0000266a sub sp, 0xac                                      |     
    0x0000266c add r0, pc                                        |     r0 = 0x5050;
    0x0000266e ldr r3, [r3]                                      |     r3 = *(0x503e);
    0x00002670 str r3, [sp, 0xa4]                                |     var_a4h = r3;
    0x00002672 mov.w r3, 0                                       |     r3 = 0;
    0x00002676 blx 0x1448                                        |     r0 = opendir ();
    0x0000267a mov sb, r0                                        |     sb = r0;
    0x0000267c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000267e beq.w 0x27a8                                      |         goto label_79;
                                                                 |     }
    0x00002682 ldr r1, [pc, 0x360]                               |     
    0x00002684 movs r2, 0                                        |     r2 = 0;
    0x00002686 ldr r0, [pc, 0x360]                               |     
    0x00002688 add r1, pc                                        |     r1 = 0x5072;
    0x0000268a add r0, pc                                        |     r0 = 0x5078;
    0x0000268c blx 0x16b8                                        |     table_new_internal ();
    0x00002690 str r0, [sp, 0x14]                                |     var_14h_4 = r0;
    0x00002692 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002694 beq.w 0x27ea                                      |         goto label_80;
                                                                 |     }
    0x00002698 mov.w r2, -1                                      |     r2 = -1;
    0x0000269c movs r1, 0                                        |     r1 = 0;
    0x0000269e blx 0x14fc                                        |     table_set_sort_internal ();
    0x000026a2 mov r0, sb                                        |     r0 = sb;
    0x000026a4 blx 0x179c                                        |     r0 = readdir_ensure_type ();
    0x000026a8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000026aa beq.w 0x2832                                      |         goto label_81;
                                                                 |     }
    0x000026ae ldr r3, [pc, 0x33c]                               |     
    0x000026b0 movw fp, 0x801                                    |     
    0x000026b4 movt fp, 8                                        |     fp = 0x80801;
    0x000026b8 add r3, pc                                        |     r3 = 0x50aa;
    0x000026ba str r3, [sp, 0x18]                                |     var_18h_4 = r3;
    0x000026bc ldr r3, [pc, 0x330]                               |     
    0x000026be add r3, pc                                        |     r3 = 0x50b2;
    0x000026c0 str r3, [sp, 0x1c]                                |     var_1ch_4 = r3;
    0x000026c2 b 0x2708                                          |     goto label_82;
                                                                 | label_2:
    0x000026c4 ldr r6, [pc, 0x32c]                               |     
    0x000026c6 ldr r3, [pc, 0x330]                               |     
    0x000026c8 add r6, pc                                        |     r6 = 0x50c0;
    0x000026ca add r3, pc                                        |     r3 = 0x50c8;
                                                                 | label_3:
    0x000026cc str r3, [sp, 8]                                   |     var_8h_5 = r3;
    0x000026ce movs r3, 0x27                                     |     r3 = 0x27;
    0x000026d0 movs r1, 0x21                                     |     r1 = 0x21;
    0x000026d2 str r3, [sp, 4]                                   |     var_4h_3 = r3;
    0x000026d4 movs r3, 1                                        |     r3 = 1;
    0x000026d6 str r1, [sp, 0xc]                                 |     var_ch_3 = r1;
    0x000026d8 ldr r0, [sp, 0x14]                                |     r0 = var_14h_4;
    0x000026da mov r2, r4                                        |     r2 = r4;
    0x000026dc mov r1, r3                                        |     r1 = r3;
    0x000026de str r6, [sp]                                      |     *(sp) = r6;
    0x000026e0 blx 0x161c                                        |     r0 = table_add_many_internal ();
    0x000026e4 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000026e6 blt.w 0x28da                                      |         goto label_83;
                                                                 |     }
    0x000026ea mov r0, r8                                        |     r0 = r8;
    0x000026ec blx 0x1514                                        |     safe_close ();
    0x000026f0 mov r0, r5                                        |     r0 = r5;
    0x000026f2 blx 0x1544                                        |     free (r0);
    0x000026f6 mov r0, r7                                        |     r0 = r7;
    0x000026f8 blx 0x1544                                        |     free (r0);
                                                                 |     do {
    0x000026fc mov r0, sb                                        |         r0 = sb;
    0x000026fe blx 0x179c                                        |         r0 = readdir_ensure_type ();
    0x00002702 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00002704 beq.w 0x2832                                      |             goto label_81;
                                                                 |         }
                                                                 | label_82:
    0x00002708 add.w r4, r0, 0x13                                |         r4 = r0 + 0x13;
    0x0000270c mov r0, r4                                        |         r0 = r4;
    0x0000270e blx 0x14c0                                        |         r0 = hidden_or_backup_file ();
    0x00002712 mov r6, r0                                        |         r6 = r0;
    0x00002714 cmp r0, 0                                         |         
    0x00002716 bne 0x26fc                                        |         
                                                                 |     } while (r0 != 0);
    0x00002718 ldr r1, [sp, 0x18]                                |     r1 = var_18h_4;
    0x0000271a mov.w r3, -1                                      |     r3 = -1;
    0x0000271e mov r2, r4                                        |     r2 = r4;
    0x00002720 blx 0x15d4                                        |     r0 = path_extend_internal ();
    0x00002724 mov r7, r0                                        |     r7 = r0;
    0x00002726 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002728 beq.w 0x2870                                      |         goto label_84;
                                                                 |     }
    0x0000272c add.w sl, sp, 0x24                                |     sl += addrlen;
    0x00002730 mov r1, r0                                        |     r1 = r0;
    0x00002732 mov r0, sl                                        |     r0 = sl;
    0x00002734 blx 0x1718                                        |     sockaddr_un_set_path ();
    0x00002738 subs r5, r0, 0                                    |     r5 -= addrlen;
                                                                 |     if (r5 < addrlen) {
    0x0000273a blt.w 0x28a0                                      |         goto label_85;
                                                                 |     }
    0x0000273e mov r2, r6                                        |     r2 = r6;
    0x00002740 mov r1, fp                                        |     r1 = fp;
    0x00002742 movs r0, 1                                        |     r0 = 1;
    0x00002744 blx 0x1568                                        |     r0 = socket (r0, r1, r2);
    0x00002748 subs.w r8, r0, 0                                  |     r8 = r0 - 0;
                                                                 |     if (r8 < r0) {
    0x0000274c blt.w 0x28c2                                      |         goto label_86;
                                                                 |     }
    0x00002750 mov r2, r5                                        |     r2 = r5;
    0x00002752 mov r1, sl                                        |     r1 = sl;
    0x00002754 blx 0x1430                                        |     r0 = connect (r0, r1, r2);
    0x00002758 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000275a blt 0x2770                                        |         goto label_87;
                                                                 |     }
    0x0000275c blx 0x15e0                                        |     r0 = get_color_mode ();
    0x00002760 mov r5, r0                                        |     r5 = r0;
    0x00002762 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002764 beq 0x26c4                                        |         goto label_2;
                                                                 |     }
    0x00002766 ldr r3, [pc, 0x294]                               |     
    0x00002768 mov r5, r6                                        |     r5 = r6;
    0x0000276a ldr r6, [sp, 0x1c]                                |     r6 = var_1ch_4;
    0x0000276c add r3, pc                                        |     r3 = 0x516e;
    0x0000276e b 0x26cc                                          |     goto label_3;
                                                                 | label_87:
    0x00002770 blx 0x17c0                                        |     r0 = errno_location ();
    0x00002774 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00002776 blx 0x1754                                        |     errno_to_name ();
    0x0000277a ldr r2, [pc, 0x284]                               |     
    0x0000277c mov r1, r0                                        |     r1 = r0;
    0x0000277e ldr r0, [pc, 0x284]                               |     
    0x00002780 mov r3, r6                                        |     r3 = r6;
    0x00002782 add r2, pc                                        |     r2 = 0x5188;
    0x00002784 add r0, pc                                        |     r0 = 0x518e;
    0x00002786 blx 0x1508                                        |     r0 = strjoin_real ();
    0x0000278a mov r6, r0                                        |     r6 = r0;
    0x0000278c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000278e beq.w 0x29aa                                      |         goto label_88;
                                                                 |     }
    0x00002792 blx 0x15e0                                        |     r0 = get_color_mode ();
                                                                 |     if (r0 == 0) {
    0x00002796 cbnz r0, 0x27a0                                   |         
    0x00002798 ldr r3, [pc, 0x26c]                               |         
    0x0000279a mov r5, r6                                        |         r5 = r6;
    0x0000279c add r3, pc                                        |         r3 = 0x51a8;
    0x0000279e b 0x26cc                                          |         goto label_3;
                                                                 |     }
    0x000027a0 ldr r3, [pc, 0x268]                               |     
    0x000027a2 mov r5, r6                                        |     r5 = r6;
    0x000027a4 add r3, pc                                        |     r3 = 0x51b4;
    0x000027a6 b 0x26cc                                          |     goto label_3;
                                                                 | label_79:
    0x000027a8 blx 0x17c0                                        |     r0 = errno_location ();
    0x000027ac ldr r4, [r0]                                      |     r4 = *(r0);
    0x000027ae blx 0x14a8                                        |     log_get_max_level ();
    0x000027b2 cmp r4, 2                                         |     
                                                                 |     if (r4 == 2) {
    0x000027b4 beq 0x2808                                        |         goto label_89;
                                                                 |     }
    0x000027b6 cmp r0, 2                                         |     
                                                                 |     if (r0 > 2) {
    0x000027b8 bgt 0x284e                                        |         goto label_90;
                                                                 |     }
    0x000027ba cmp r4, 0                                         |     
    0x000027bc it lt                                             |     
                                                                 |     if (r4 < 0) {
    0x000027be rsblt r4, r4, 0                                   |         __asm ("rsblt r4, r4, 0");
                                                                 |     }
    0x000027c0 uxtb r4, r4                                       |     r4 = (int8_t) r4;
    0x000027c2 rsbs r4, r4, 0                                    |     r4 -= ;
                                                                 | label_5:
    0x000027c4 cmp r4, 0                                         |     
    0x000027c6 it ge                                             |     
    0x000027c8 mvnge r4, 0x55                                    |     r4 = ~0x55;
                                                                 |     while (1) {
                                                                 | label_4:
    0x000027cc ldr r2, [pc, 0x240]                               |         
    0x000027ce ldr r3, [pc, 0x20c]                               |         r3 = *(0x29de);
    0x000027d0 add r2, pc                                        |         r2 = 0x51e4;
    0x000027d2 ldr r3, [r2, r3]                                  |         r3 = *(0x51e4);
    0x000027d4 ldr r2, [r3]                                      |         r2 = *(0x51e4);
    0x000027d6 ldr r3, [sp, 0xa4]                                |         r3 = var_a4h;
    0x000027d8 eors r2, r3                                       |         r2 ^= r3;
    0x000027da mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000027de bne.w 0x29d2                                      |             goto label_91;
                                                                 |         }
    0x000027e2 mov r0, r4                                        |         r0 = r4;
    0x000027e4 add sp, 0xac                                      |         
    0x000027e6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_80:
    0x000027ea ldr r1, [pc, 0x228]                               |         
    0x000027ec mov.w r2, 0x1ec                                   |         r2 = 0x1ec;
    0x000027f0 ldr r3, [pc, 0x224]                               |         
    0x000027f2 movs r0, 3                                        |         r0 = 3;
    0x000027f4 add r1, pc                                        |         r1 = 0x520e;
    0x000027f6 add r3, pc                                        |         r3 = 0x5212;
    0x000027f8 adds r1, 7                                        |         r1 += 7;
    0x000027fa blx 0x17d0                                        |         r0 = fcn_000017d0 ();
    0x000027fe mov r4, r0                                        |         r4 = r0;
    0x00002800 mov r0, sb                                        |         r0 = sb;
    0x00002802 blx 0x1658                                        |         closedir ();
    0x00002806 b 0x27cc                                          |         
                                                                 |     }
                                                                 | label_89:
    0x00002808 cmp r0, 5                                         |     
    0x0000280a it le                                             |     
                                                                 |     if (r0 <= 5) {
    0x0000280c movle r4, sb                                      |         r4 = sb;
                                                                 |         goto label_92;
                                                                 |     }
                                                                 |     if (r0 <= 5) {
                                                                 | label_92:
    0x0000280e ble 0x27cc                                        |         goto label_4;
                                                                 |     }
    0x00002810 ldr r2, [pc, 0x208]                               |     
    0x00002812 movw r3, 0x1e3                                    |     r3 = 0x1e3;
    0x00002816 ldr r0, [pc, 0x208]                               |     
    0x00002818 mov r4, sb                                        |     r4 = sb;
    0x0000281a ldr r1, [pc, 0x208]                               |     
    0x0000281c add r2, pc                                        |     r2 = 0x523c;
    0x0000281e add r0, pc                                        |     r0 = 0x5244;
    0x00002820 adds r2, 7                                        |     r2 += 7;
    0x00002822 add r1, pc                                        |     r1 = 0x524c;
    0x00002824 strd r1, r0, [sp]                                 |     __asm ("strd r1, r0, [sp]");
    0x00002828 mov r1, sb                                        |     r1 = sb;
    0x0000282a movs r0, 6                                        |     r0 = 6;
    0x0000282c blx 0x16ac                                        |     log_internal ();
    0x00002830 b 0x27cc                                          |     goto label_4;
                                                                 | label_81:
    0x00002832 blx 0x17c0                                        |     r0 = errno_location ();
    0x00002836 ldr r4, [r0]                                      |     r4 = *(r0);
    0x00002838 cmp r4, 0                                         |     
    0x0000283a it gt                                             |     
                                                                 |     if (r4 > 0) {
    0x0000283c rsbgt r4, r4, 0                                   |         __asm ("rsbgt r4, r4, 0");
                                                                 |     }
                                                                 |     if (r4 <= 0) {
    0x0000283e ble 0x28f6                                        |         goto label_93;
                                                                 |     }
                                                                 |     do {
                                                                 | label_7:
    0x00002840 mov r0, sb                                        |         r0 = sb;
    0x00002842 blx 0x1658                                        |         closedir ();
    0x00002846 ldr r0, [sp, 0x14]                                |         r0 = var_14h_4;
    0x00002848 blx 0x1520                                        |         table_unref ();
    0x0000284c b 0x27cc                                          |         goto label_4;
                                                                 | label_90:
    0x0000284e ldr r2, [pc, 0x1d8]                               |         
    0x00002850 mov r1, r4                                        |         r1 = r4;
    0x00002852 ldr r5, [pc, 0x1d8]                               |         
    0x00002854 movw r3, 0x1e7                                    |         r3 = 0x1e7;
    0x00002858 ldr r0, [pc, 0x1d4]                               |         
    0x0000285a add r2, pc                                        |         r2 = 0x5288;
    0x0000285c add r5, pc                                        |         r5 = 0x528e;
    0x0000285e adds r2, 7                                        |         r2 += 7;
    0x00002860 add r0, pc                                        |         r0 = 0x5294;
    0x00002862 strd r0, r5, [sp]                                 |         __asm ("strd r0, r5, [sp]");
    0x00002866 movs r0, 3                                        |         r0 = 3;
    0x00002868 blx 0x16ac                                        |         r0 = log_internal ();
    0x0000286c mov r4, r0                                        |         r4 = r0;
    0x0000286e b 0x27c4                                          |         goto label_5;
                                                                 | label_84:
    0x00002870 ldr r1, [pc, 0x1c0]                               |         
    0x00002872 mov.w r2, 0x1f8                                   |         r2 = 0x1f8;
    0x00002876 ldr r3, [pc, 0x1c0]                               |         
    0x00002878 movs r0, 3                                        |         r0 = 3;
    0x0000287a mov r5, r7                                        |         r5 = r7;
    0x0000287c mov.w r8, -1                                      |         r8 = -1;
    0x00002880 add r1, pc                                        |         r1 = 0x52b8;
    0x00002882 add r3, pc                                        |         r3 = 0x52c0;
    0x00002884 adds r1, 7                                        |         r1 += 7;
    0x00002886 blx 0x17d0                                        |         r0 = fcn_000017d0 ();
    0x0000288a mov r4, r0                                        |         r4 = r0;
                                                                 | label_6:
    0x0000288c mov r0, r8                                        |         r0 = r8;
    0x0000288e blx 0x1514                                        |         safe_close ();
    0x00002892 mov r0, r5                                        |         r0 = r5;
    0x00002894 blx 0x1544                                        |         free (r0);
    0x00002898 mov r0, r7                                        |         r0 = r7;
    0x0000289a blx 0x1544                                        |         free (r0);
    0x0000289e b 0x2840                                          |         
                                                                 |     } while (1);
                                                                 | label_85:
    0x000028a0 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x000028a4 cmp r0, 2                                         |     
    0x000028a6 ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x000028a8 rsble r4, r5, 0                                   |         __asm ("rsble r4, r5, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x000028aa uxtble r4, r4                                     |         __asm ("uxtble r4, r4");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x000028ac rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 > 2) {
    0x000028ae bgt 0x2918                                        |         goto label_94;
                                                                 |     }
                                                                 | label_8:
    0x000028b0 cmp r4, 0                                         |     
    0x000028b2 mov.w r8, -1                                      |     r8 = -1;
    0x000028b6 mov.w r5, 0                                       |     r5 = 0;
                                                                 |     if (r4 < 0) {
    0x000028ba blt 0x288c                                        |         goto label_6;
                                                                 |     }
                                                                 |     do {
    0x000028bc mvn r4, 0x55                                      |         r4 = ~0x55;
    0x000028c0 b 0x288c                                          |         goto label_6;
                                                                 | label_86:
    0x000028c2 blx 0x14a8                                        |         r0 = log_get_max_level ();
    0x000028c6 cmp r0, 2                                         |         
    0x000028c8 itt le                                            |         
                                                                 |         if (r0 <= 2) {
    0x000028ca uxtble r4, r5                                     |             __asm ("uxtble r4, r5");
                                                                 |         }
                                                                 |         if (r0 <= 2) {
    0x000028cc rsble r4, r4, 0                                   |             __asm ("rsble r4, r4, 0");
                                                                 |         }
                                                                 |         if (r0 > 2) {
    0x000028ce bgt 0x293c                                        |             goto label_95;
                                                                 |         }
                                                                 | label_9:
    0x000028d0 cmp r4, 0                                         |         
    0x000028d2 mov.w r5, 0                                       |         r5 = 0;
    0x000028d6 bge 0x28bc                                        |         
                                                                 |     } while (r4 >= 0);
    0x000028d8 b 0x288c                                          |     goto label_6;
                                                                 | label_83:
    0x000028da mov r4, r0                                        |     r4 = r0;
    0x000028dc blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x000028e0 cmp r0, 2                                         |     
    0x000028e2 ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x000028e4 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x000028e6 uxtble r4, r4                                     |         __asm ("uxtble r4, r4");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x000028e8 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
    0x000028ea bgt 0x295e                                        |     
                                                                 |     while (1) {
    0x000028ec cmp r4, 0                                         |         
    0x000028ee it ge                                             |         
                                                                 |         if (r4 < 0) {
    0x000028f0 mvnge r4, 0x55                                    |             r4 = ~0x55;
                                                                 |         }
    0x000028f4 b 0x288c                                          |         goto label_6;
                                                                 | label_93:
    0x000028f6 ldr r0, [sp, 0x14]                                |         r0 = var_14h_4;
    0x000028f8 blx 0x1400                                        |         r0 = table_get_rows ();
    0x000028fc mov r4, r0                                        |         r4 = r0;
    0x000028fe cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00002900 beq 0x2980                                        |             goto label_96;
                                                                 |         }
    0x00002902 ldr r3, [pc, 0x138]                               |         
    0x00002904 add r3, pc                                        |         
    0x00002906 ldr r3, [r3]                                      |         r3 = *(0x5346);
    0x00002908 cmp r3, 3                                         |         
                                                                 |         if (r3 == 3) {
    0x0000290a beq 0x29c4                                        |             goto label_97;
                                                                 |         }
    0x0000290c movs r1, 0                                        |         r1 = 0;
    0x0000290e ldr r0, [sp, 0x14]                                |         r0 = var_14h_4;
    0x00002910 mov r4, r1                                        |         r4 = r1;
    0x00002912 blx 0x1454                                        |         table_print ();
    0x00002916 b 0x2840                                          |         goto label_7;
                                                                 | label_94:
    0x00002918 ldr r3, [pc, 0x124]                               |         
    0x0000291a mov r1, r5                                        |         r1 = r5;
    0x0000291c ldr r2, [pc, 0x124]                               |         
    0x0000291e movs r0, 3                                        |         r0 = 3;
    0x00002920 str r7, [sp, 8]                                   |         var_8h_5 = r7;
    0x00002922 add r3, pc                                        |         r3 = 0x5366;
    0x00002924 str r3, [sp, 4]                                   |         var_4h_3 = r3;
    0x00002926 add r2, pc                                        |         r2 = 0x536e;
    0x00002928 ldr r3, [pc, 0x11c]                               |         
    0x0000292a adds r2, 7                                        |         r2 += 7;
    0x0000292c add r3, pc                                        |         r3 = 0x5378;
    0x0000292e str r3, [sp]                                      |         *(sp) = r3;
    0x00002930 mov.w r3, 0x1fc                                   |         r3 = 0x1fc;
    0x00002934 blx 0x16ac                                        |         r0 = log_internal ();
    0x00002938 mov r4, r0                                        |         r4 = r0;
    0x0000293a b 0x28b0                                          |         goto label_8;
                                                                 | label_95:
    0x0000293c ldr r3, [pc, 0x10c]                               |         
    0x0000293e mov r1, r5                                        |         r1 = r5;
    0x00002940 ldr r2, [pc, 0x10c]                               |         
    0x00002942 movs r0, 3                                        |         r0 = 3;
    0x00002944 add r3, pc                                        |         r3 = 0x5394;
    0x00002946 str r3, [sp, 4]                                   |         var_4h_3 = r3;
    0x00002948 add r2, pc                                        |         r2 = 0x539c;
    0x0000294a ldr r3, [pc, 0x108]                               |         
    0x0000294c adds r2, 7                                        |         r2 += 7;
    0x0000294e add r3, pc                                        |         r3 = 0x53a8;
    0x00002950 str r3, [sp]                                      |         *(sp) = r3;
    0x00002952 movw r3, 0x201                                    |         r3 = 0x201;
    0x00002956 blx 0x16ac                                        |         r0 = log_internal ();
    0x0000295a mov r4, r0                                        |         r4 = r0;
    0x0000295c b 0x28d0                                          |         goto label_9;
    0x0000295e ldr r3, [pc, 0xf8]                                |         
    0x00002960 mov r1, r4                                        |         r1 = r4;
    0x00002962 ldr r2, [pc, 0xf8]                                |         
    0x00002964 movs r0, 3                                        |         r0 = 3;
    0x00002966 add r3, pc                                        |         r3 = 0x53c4;
    0x00002968 str r3, [sp, 4]                                   |         var_4h_3 = r3;
    0x0000296a add r2, pc                                        |         r2 = 0x53cc;
    0x0000296c ldr r3, [pc, 0xf0]                                |         
    0x0000296e adds r2, 7                                        |         r2 += 7;
    0x00002970 add r3, pc                                        |         r3 = 0x53d4;
    0x00002972 str r3, [sp]                                      |         *(sp) = r3;
    0x00002974 movw r3, 0x20e                                    |         r3 = 0x20e;
    0x00002978 blx 0x16ac                                        |         r0 = log_internal ();
    0x0000297c mov r4, r0                                        |         r4 = r0;
    0x0000297e b 0x28ec                                          |         
                                                                 |     }
                                                                 | label_96:
    0x00002980 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002984 cmp r0, 5                                         |     
                                                                 |     if (r0 <= 5) {
    0x00002986 ble.w 0x2840                                      |         goto label_7;
                                                                 |     }
    0x0000298a ldr r3, [pc, 0xd8]                                |     
    0x0000298c mov r1, r4                                        |     r1 = r4;
    0x0000298e ldr r2, [pc, 0xd8]                                |     
    0x00002990 movs r0, 6                                        |     r0 = 6;
    0x00002992 add r3, pc                                        |     r3 = 0x53fc;
    0x00002994 str r3, [sp, 4]                                   |     var_4h_3 = r3;
    0x00002996 add r2, pc                                        |     r2 = 0x5404;
    0x00002998 ldr r3, [pc, 0xd0]                                |     
    0x0000299a adds r2, 7                                        |     r2 += 7;
    0x0000299c add r3, pc                                        |     r3 = 0x540c;
    0x0000299e str r3, [sp]                                      |     *(sp) = r3;
    0x000029a0 movw r3, 0x212                                    |     r3 = 0x212;
    0x000029a4 blx 0x16ac                                        |     log_internal ();
    0x000029a8 b 0x2840                                          |     goto label_7;
                                                                 | label_88:
    0x000029aa ldr r1, [pc, 0xc4]                                |     
    0x000029ac mov r5, r0                                        |     r5 = r0;
    0x000029ae ldr r3, [pc, 0xc4]                                |     
    0x000029b0 movw r2, 0x206                                    |     r2 = 0x206;
    0x000029b4 movs r0, 3                                        |     r0 = 3;
    0x000029b6 add r1, pc                                        |     r1 = 0x542c;
    0x000029b8 adds r1, 7                                        |     r1 += 7;
    0x000029ba add r3, pc                                        |     r3 = 0x5434;
    0x000029bc blx 0x17d0                                        |     r0 = fcn_000017d0 ();
    0x000029c0 mov r4, r0                                        |     r4 = r0;
    0x000029c2 b 0x288c                                          |     goto label_6;
                                                                 | label_97:
    0x000029c4 ldr r0, [sp, 0x14]                                |     r0 = var_14h_4;
    0x000029c6 movs r2, 0x12                                     |     r2 = 0x12;
    0x000029c8 movs r1, 0                                        |     r1 = 0;
    0x000029ca movs r4, 0                                        |     r4 = 0;
    0x000029cc blx 0x1490                                        |     table_print_json ();
    0x000029d0 b 0x2840                                          |     goto label_7;
                                                                 | label_91:
    0x000029d2 blx 0x16a0                                        |     stack_chk_fail ();
    0x000029d6 nop                                               |     
    0x000029d8 movs r7, 0xfa                                     |     r7 = 0xfa;
    0x000029da movs r1, r0                                       |     r1 = r0;
    0x000029dc lsls r4, r7, 5                                    |     r4 = r7 << 5;
    0x000029de movs r0, r0                                       |     
    0x000029e0 adds r0, r3, 3                                    |     r0 = r3 + 3;
    0x000029e2 movs r0, r0                                       |     
    0x000029e4 adds r4, r1, 4                                    |     r4 = r1 + 4;
    0x000029e6 movs r0, r0                                       |     
    0x000029e8 adds r6, r2, 4                                    |     r6 = r2 + 4;
    0x000029ea movs r0, r0                                       |     
    0x000029ec adds r4, r1, 2                                    |     r4 = r1 + 2;
    0x000029ee movs r0, r0                                       |     
    0x000029f0 adds r2, r5, 1                                    |     r2 = r5 + 1;
    0x000029f2 movs r0, r0                                       |     
    0x000029f4 adds r0, r4, 1                                    |     r0 = r4 + 1;
    0x000029f6 movs r0, r0                                       |     
    0x000029f8 subs r2, r4, r6                                   |     r2 = r4 - r6;
    0x000029fa movs r0, r0                                       |     
    0x000029fc subs r0, r0, r7                                   |     r0 -= r7;
    0x000029fe movs r0, r0                                       |     
    0x00002a00 adds r6, r1, 2                                    |     r6 = r1 + 2;
    0x00002a02 movs r0, r0                                       |     
    0x00002a04 adds r0, r2, 2                                    |     r0 = r2 + 2;
    0x00002a06 movs r0, r0                                       |     
    0x00002a08 subs r0, r2, r3                                   |     r0 = r2 - r3;
    0x00002a0a movs r0, r0                                       |     
    0x00002a0c subs r4, r2, r6                                   |     r4 = r2 - r6;
    0x00002a0e movs r0, r0                                       |     
    0x00002a10 movs r6, 0x8c                                     |     r6 = 0x8c;
    0x00002a12 movs r1, r0                                       |     r1 = r0;
    0x00002a14 asrs r4, r7, 0x11                                 |     r4 = r7 >> 0x11;
    0x00002a16 movs r0, r0                                       |     
    0x00002a18 movs r1, 0x9e                                     |     r1 = 0x9e;
    0x00002a1a movs r0, r0                                       |     
    0x00002a1c asrs r4, r2, 0x11                                 |     r4 = r2 >> 0x11;
    0x00002a1e movs r0, r0                                       |     
    0x00002a20 subs r6, r7, r4                                   |     r6 = r7 - r4;
    0x00002a22 movs r0, r0                                       |     
    0x00002a24 movs r1, 0x72                                     |     r1 = 0x72;
    0x00002a26 movs r0, r0                                       |     
    0x00002a28 asrs r6, r2, 0x10                                 |     r6 = r2 >> 0x10;
    0x00002a2a movs r0, r0                                       |     
    0x00002a2c subs r0, r2, r4                                   |     r0 = r2 - r4;
    0x00002a2e movs r0, r0                                       |     
    0x00002a30 movs r1, 0x34                                     |     r1 = 0x34;
    0x00002a32 movs r0, r0                                       |     
    0x00002a34 asrs r0, r6, 0xf                                  |     r0 = r6 >> 0xf;
    0x00002a36 movs r0, r0                                       |     
    0x00002a38 movs r1, 0x12                                     |     r1 = 0x12;
    0x00002a3a movs r0, r0                                       |     
    0x00002a3c movs r6, 0xfc                                     |     r6 = 0xfc;
    0x00002a3e movs r1, r0                                       |     r1 = r0;
    0x00002a40 subs r6, r0, r2                                   |     r6 = r0 - r2;
    0x00002a42 movs r0, r0                                       |     
    0x00002a44 asrs r2, r1, 0xd                                  |     r2 = r1 >> 0xd;
    0x00002a46 movs r0, r0                                       |     
    0x00002a48 movs r0, 0x68                                     |     r0 = 0x68;
    0x00002a4a movs r0, r0                                       |     
    0x00002a4c subs r0, r3, r2                                   |     r0 = r3 - r2;
    0x00002a4e movs r0, r0                                       |     
    0x00002a50 asrs r0, r5, 0xc                                  |     r0 = r5 >> 0xc;
    0x00002a52 movs r0, r0                                       |     
    0x00002a54 movs r0, 0x46                                     |     r0 = 0x46;
    0x00002a56 movs r0, r0                                       |     
    0x00002a58 adds r2, r6, r2                                   |     r2 = r6 + r2;
    0x00002a5a movs r0, r0                                       |     
    0x00002a5c asrs r6, r0, 0xc                                  |     r6 = r0 >> 0xc;
    0x00002a5e movs r0, r0                                       |     
    0x00002a60 movs r0, 0x24                                     |     r0 = 0x24;
    0x00002a62 movs r0, r0                                       |     
    0x00002a64 adds r2, r1, r7                                   |     r2 = r1 + r7;
    0x00002a66 movs r0, r0                                       |     
    0x00002a68 asrs r2, r3, 0xb                                  |     r2 = r3 >> 0xb;
    0x00002a6a movs r0, r0                                       |     
    0x00002a6c subs r0, r7, 7                                    |     r0 = r7 - 7;
    0x00002a6e movs r0, r0                                       |     
    0x00002a70 asrs r2, r7, 0xa                                  |     r2 = r7 >> 0xa;
    0x00002a72 movs r0, r0                                       |     
    0x00002a74 subs r2, r3, 7                                    |     r2 = r3 - 7;
    0x00002a76 movs r0, r0                                       |     
    0x00002a78 ldr r3, [pc, 0x1c0]                               |     
    0x00002a7a push {r4, r5, r6, r7, lr}                         |     
    0x00002a7c mov r6, r1                                        |     r6 = r1;
    0x00002a7e ldr r5, [pc, 0x1c0]                               |     
    0x00002a80 sub sp, 0x1c                                      |     
    0x00002a82 add r3, pc                                        |     r3 = 0x56c2;
    0x00002a84 movs r4, 0                                        |     r4 = 0;
    0x00002a86 ldr r0, [r1, 4]                                   |     r0 = *((r1 + 4));
    0x00002a88 add r2, sp, 0x10                                  |     r2 += var_10h;
    0x00002a8a ldr r1, [r3]                                      |     r1 = *(0x56c2);
    0x00002a8c add r5, pc                                        |     r5 = 0x56d2;
    0x00002a8e ldr r3, [pc, 0x1b4]                               |     r3 = *(0x2c46);
    0x00002a90 ldr r7, [pc, 0x1b4]                               |     
    0x00002a92 ldr r3, [r5, r3]                                  |     
    0x00002a94 add r7, pc                                        |     r7 = 0x56e0;
    0x00002a96 ldr r3, [r3]                                      |     r3 = *(0x56d2);
    0x00002a98 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00002a9a mov.w r3, 0                                       |     r3 = 0;
    0x00002a9e str r4, [sp, 0x10]                                |     var_10h = r4;
    0x00002aa0 blx 0x1730                                        |     r0 = userdb_by_name ();
    0x00002aa4 mov r4, r0                                        |     r4 = r0;
    0x00002aa6 adds r0, 3                                        |     r0 += 3;
                                                                 |     if (r0 == 3) {
    0x00002aa8 beq 0x2b16                                        |         goto label_98;
                                                                 |     }
    0x00002aaa cmn.w r4, 0x70                                    |     
                                                                 |     if (r4 == 0x70) {
    0x00002aae beq 0x2ba8                                        |         goto label_99;
                                                                 |     }
    0x00002ab0 cmn.w r4, 0x16                                    |     
                                                                 |     if (r4 == 0x16) {
    0x00002ab4 beq 0x2b56                                        |         goto label_100;
                                                                 |     }
    0x00002ab6 cmp r4, 0                                         |     
                                                                 |     if (r4 < 0) {
    0x00002ab8 blt.w 0x2bd4                                      |         goto label_101;
                                                                 |     }
    0x00002abc ldr r5, [sp, 0x10]                                |     r5 = var_10h;
    0x00002abe ldr.w r4, [r5, 0x100]                             |     r4 = *((r5 + 0x100));
    0x00002ac2 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00002ac4 beq 0x2b7a                                        |         goto label_102;
                                                                 |     }
    0x00002ac6 ldr r0, [r4]                                      |     r0 = *(r4);
    0x00002ac8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002aca beq 0x2b7a                                        |         goto label_102;
                                                                 |     }
                                                                 |     do {
    0x00002acc blx 0x16d0                                        |         puts (r0);
    0x00002ad0 ldr r0, [r4, 4]!                                  |         r0 = *((r4 += 4));
    0x00002ad4 cmp r0, 0                                         |         
    0x00002ad6 bne 0x2acc                                        |         
                                                                 |     } while (r0 != 0);
    0x00002ad8 ldr r5, [sp, 0x10]                                |     r5 = var_10h;
                                                                 | label_13:
    0x00002ada ldrb r4, [r5, 8]                                  |     r4 = *((r5 + 8));
    0x00002adc cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00002ade beq 0x2b4e                                        |         goto label_103;
                                                                 |     }
    0x00002ae0 ldr r3, [pc, 0x168]                               |     r3 = *(0x2c4c);
    0x00002ae2 ldr r3, [r7, r3]                                  |     r3 = *((r7 + r3));
    0x00002ae4 ldr r0, [r3]                                      |     r0 = *(0x2c4c);
    0x00002ae6 blx 0x1574                                        |     r0 = fflush (r0);
    0x00002aea blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002aee cmp r0, 3                                         |     
    0x00002af0 it le                                             |     
                                                                 |     if (r0 > 3) {
    0x00002af2 movle r4, 0                                       |         r4 = 0;
                                                                 |     }
                                                                 |     if (r0 > 3) {
    0x00002af4 bgt 0x2bea                                        |         goto label_104;
                                                                 |     }
                                                                 |     do {
                                                                 | label_10:
    0x00002af6 ldr r5, [sp, 0x10]                                |         r5 = var_10h;
                                                                 |         if (r5 != 0) {
    0x00002af8 cbnz r5, 0x2b4e                                   |             goto label_103;
                                                                 |         }
                                                                 | label_11:
    0x00002afa ldr r2, [pc, 0x154]                               |         
    0x00002afc ldr r3, [pc, 0x144]                               |         r3 = *(0x2c44);
    0x00002afe add r2, pc                                        |         r2 = 0x5754;
    0x00002b00 ldr r3, [r2, r3]                                  |         r3 = *(0x5754);
    0x00002b02 ldr r2, [r3]                                      |         r2 = *(0x5754);
    0x00002b04 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x00002b06 eors r2, r3                                       |         r2 ^= r3;
    0x00002b08 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00002b0c bne.w 0x2c38                                      |             goto label_105;
                                                                 |         }
    0x00002b10 mov r0, r4                                        |         r0 = r4;
    0x00002b12 add sp, 0x1c                                      |         
    0x00002b14 pop {r4, r5, r6, r7, pc}                          |         
                                                                 | label_98:
    0x00002b16 blx 0x14a8                                        |         r0 = log_get_max_level ();
    0x00002b1a cmp r0, 2                                         |         
    0x00002b1c ble 0x2af6                                        |         
                                                                 |     } while (r0 <= 2);
    0x00002b1e ldr r2, [pc, 0x134]                               |     
    0x00002b20 mov r1, r4                                        |     r1 = r4;
    0x00002b22 ldr r3, [pc, 0x134]                               |     
    0x00002b24 ldr r0, [r6, 4]                                   |     r0 = *((r6 + 4));
    0x00002b26 ldr r5, [pc, 0x134]                               |     
    0x00002b28 add r2, pc                                        |     r2 = 0x5782;
    0x00002b2a add r3, pc                                        |     r3 = 0x5788;
    0x00002b2c adds r2, 7                                        |     r2 += 7;
    0x00002b2e strd r3, r0, [sp, 4]                              |     __asm ("strd r3, r0, [var_8h_4]");
    0x00002b32 mov.w r3, 0x224                                   |     r3 = 0x224;
    0x00002b36 add r5, pc                                        |     r5 = 0x5798;
                                                                 | label_12:
    0x00002b38 movs r0, 3                                        |     r0 = 3;
    0x00002b3a str r5, [sp]                                      |     *(sp) = r5;
    0x00002b3c blx 0x16ac                                        |     r0 = log_internal ();
    0x00002b40 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00002b42 blt 0x2af6                                        |         goto label_10;
                                                                 |     }
                                                                 | label_14:
    0x00002b44 ldr r5, [sp, 0x10]                                |     r5 = var_10h;
    0x00002b46 mvn r4, 0x55                                      |     r4 = ~0x55;
    0x00002b4a cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00002b4c beq 0x2afa                                        |         goto label_11;
                                                                 |     }
                                                                 | label_103:
    0x00002b4e mov r0, r5                                        |     r0 = r5;
    0x00002b50 blx 0x167c                                        |     user_record_unref ();
    0x00002b54 b 0x2afa                                          |     goto label_11;
                                                                 | label_100:
    0x00002b56 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002b5a cmp r0, 2                                         |     
                                                                 |     if (r0 <= 2) {
    0x00002b5c ble 0x2af6                                        |         goto label_10;
                                                                 |     }
    0x00002b5e ldr r2, [pc, 0x100]                               |     
    0x00002b60 mov r1, r4                                        |     r1 = r4;
    0x00002b62 ldr r3, [pc, 0x100]                               |     
    0x00002b64 ldr r0, [r6, 4]                                   |     r0 = *((r6 + 4));
    0x00002b66 ldr r5, [pc, 0x100]                               |     
    0x00002b68 add r2, pc                                        |     r2 = 0x57ce;
    0x00002b6a add r3, pc                                        |     r3 = 0x57d4;
    0x00002b6c adds r2, 7                                        |     r2 += 7;
    0x00002b6e strd r3, r0, [sp, 4]                              |     __asm ("strd r3, r0, [var_8h_4]");
    0x00002b72 mov.w r3, 0x228                                   |     r3 = 0x228;
    0x00002b76 add r5, pc                                        |     r5 = 0x57e4;
    0x00002b78 b 0x2b38                                          |     goto label_12;
                                                                 | label_102:
    0x00002b7a blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002b7e cmp r0, 6                                         |     
                                                                 |     if (r0 <= 6) {
    0x00002b80 ble 0x2ada                                        |         goto label_13;
                                                                 |     }
    0x00002b82 ldr r2, [pc, 0xe8]                                |     
    0x00002b84 ldr r3, [pc, 0xe8]                                |     
    0x00002b86 ldr r0, [pc, 0xec]                                |     
    0x00002b88 ldr r1, [r6, 4]                                   |     r1 = *((r6 + 4));
    0x00002b8a add r2, pc                                        |     r2 = 0x57fc;
    0x00002b8c add r3, pc                                        |     r3 = 0x5800;
    0x00002b8e adds r2, 7                                        |     r2 += 7;
    0x00002b90 add r0, pc                                        |     r0 = 0x580a;
    0x00002b92 strd r3, r1, [sp, 4]                              |     __asm ("strd r3, r1, [var_8h_4]");
    0x00002b96 movw r3, 0x22d                                    |     r3 = 0x22d;
    0x00002b9a str r0, [sp]                                      |     *(sp) = r0;
    0x00002b9c movs r1, 0                                        |     r1 = 0;
    0x00002b9e movs r0, 7                                        |     r0 = 7;
    0x00002ba0 blx 0x16ac                                        |     log_internal ();
    0x00002ba4 ldr r5, [sp, 0x10]                                |     r5 = var_10h;
    0x00002ba6 b 0x2ada                                          |     goto label_13;
                                                                 | label_99:
    0x00002ba8 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002bac cmp r0, 2                                         |     
                                                                 |     if (r0 <= 2) {
    0x00002bae ble 0x2af6                                        |         goto label_10;
                                                                 |     }
    0x00002bb0 ldr r2, [pc, 0xc4]                                |     
    0x00002bb2 mov r1, r4                                        |     r1 = r4;
    0x00002bb4 ldr r5, [pc, 0xc4]                                |     
    0x00002bb6 movw r3, 0x226                                    |     r3 = 0x226;
    0x00002bba ldr r0, [pc, 0xc4]                                |     
    0x00002bbc add r2, pc                                        |     r2 = 0x5838;
    0x00002bbe add r5, pc                                        |     r5 = 0x583e;
    0x00002bc0 adds r2, 7                                        |     r2 += 7;
    0x00002bc2 add r0, pc                                        |     r0 = 0x5848;
    0x00002bc4 strd r0, r5, [sp]                                 |     __asm ("strd r0, r5, [sp]");
    0x00002bc8 movs r0, 3                                        |     r0 = 3;
    0x00002bca blx 0x16ac                                        |     r0 = log_internal ();
    0x00002bce subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x00002bd0 bge 0x2b44                                        |         goto label_14;
                                                                 |     }
    0x00002bd2 b 0x2af6                                          |     goto label_10;
                                                                 | label_101:
    0x00002bd4 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002bd8 cmp r0, 2                                         |     
    0x00002bda ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x00002bdc rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00002bde uxtble r4, r4                                     |         __asm ("uxtble r4, r4");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00002be0 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 > 2) {
    0x00002be2 bgt 0x2c12                                        |         goto label_106;
                                                                 |     }
                                                                 | label_15:
    0x00002be4 cmp r4, 0                                         |     
                                                                 |     if (r4 >= 0) {
    0x00002be6 bge 0x2b44                                        |         goto label_14;
                                                                 |     }
    0x00002be8 b 0x2af6                                          |     goto label_10;
                                                                 | label_104:
    0x00002bea ldr r4, [sp, 0x10]                                |     r4 = var_10h;
    0x00002bec movw r3, 0x237                                    |     r3 = 0x237;
    0x00002bf0 ldr r2, [pc, 0x90]                                |     
    0x00002bf2 ldr r0, [pc, 0x94]                                |     
    0x00002bf4 ldr r1, [pc, 0x94]                                |     
    0x00002bf6 ldr r4, [r4, 0xc]                                 |     r4 = *((r4 + 0xc));
    0x00002bf8 add r2, pc                                        |     r2 = 0x5880;
    0x00002bfa add r0, pc                                        |     r0 = 0x5888;
    0x00002bfc adds r2, 7                                        |     r2 += 7;
    0x00002bfe add r1, pc                                        |     r1 = 0x588e;
    0x00002c00 strd r1, r0, [sp]                                 |     __asm ("strd r1, r0, [sp]");
    0x00002c04 movs r1, 0                                        |     r1 = 0;
    0x00002c06 str r4, [sp, 8]                                   |     var_8h_4 = r4;
    0x00002c08 movs r0, 4                                        |     r0 = 4;
    0x00002c0a movs r4, 0                                        |     r4 = 0;
    0x00002c0c blx 0x16ac                                        |     log_internal ();
    0x00002c10 b 0x2af6                                          |     goto label_10;
                                                                 | label_106:
    0x00002c12 ldr r2, [pc, 0x7c]                                |     
    0x00002c14 mov r1, r4                                        |     r1 = r4;
    0x00002c16 ldr r3, [pc, 0x7c]                                |     
    0x00002c18 ldr r5, [pc, 0x7c]                                |     
    0x00002c1a ldr r0, [r6, 4]                                   |     r0 = *((r6 + 4));
    0x00002c1c add r2, pc                                        |     r2 = 0x58b2;
    0x00002c1e add r3, pc                                        |     r3 = 0x58b8;
    0x00002c20 adds r2, 7                                        |     r2 += 7;
    0x00002c22 add r5, pc                                        |     r5 = 0x58be;
    0x00002c24 strd r3, r0, [sp, 4]                              |     __asm ("strd r3, r0, [var_8h_4]");
    0x00002c28 movw r3, 0x22a                                    |     r3 = 0x22a;
    0x00002c2c movs r0, 3                                        |     r0 = 3;
    0x00002c2e str r5, [sp]                                      |     *(sp) = r5;
    0x00002c30 blx 0x16ac                                        |     r0 = log_internal ();
    0x00002c34 mov r4, r0                                        |     r4 = r0;
    0x00002c36 b 0x2be4                                          |     goto label_15;
                                                                 | label_105:
    0x00002c38 blx 0x16a0                                        |     stack_chk_fail ();
    0x00002c3c movs r5, 0x96                                     |     r5 = 0x96;
    0x00002c3e movs r1, r0                                       |     r1 = r0;
    0x00002c40 movs r3, 0xd0                                     |     r3 = 0xd0;
    0x00002c42 movs r1, r0                                       |     r1 = r0;
    0x00002c44 lsls r4, r7, 5                                    |     r4 = r7 << 5;
    0x00002c46 movs r0, r0                                       |     
    0x00002c48 movs r3, 0xc8                                     |     r3 = 0xc8;
    0x00002c4a movs r1, r0                                       |     r1 = r0;
    0x00002c4c lsls r4, r1, 6                                    |     r4 = r1 << 6;
    0x00002c4e movs r0, r0                                       |     
    0x00002c50 movs r3, 0x5e                                     |     r3 = 0x5e;
    0x00002c52 movs r1, r0                                       |     r1 = r0;
    0x00002c54 asrs r0, r1, 5                                    |     r0 = r1 >> 5;
    0x00002c56 movs r0, r0                                       |     
    0x00002c58 adds r2, r6, r3                                   |     r2 = r6 + r3;
    0x00002c5a movs r0, r0                                       |     
    0x00002c5c subs r2, r6, 1                                    |     r2 = r6 - 1;
    0x00002c5e movs r0, r0                                       |     
    0x00002c60 asrs r0, r1, 4                                    |     r0 = r1 >> 4;
    0x00002c62 movs r0, r0                                       |     
    0x00002c64 adds r6, r1, r4                                   |     r6 = r1 + r4;
    0x00002c66 movs r0, r0                                       |     
    0x00002c68 subs r2, r6, 0                                    |     r2 = r6 - 0;
    0x00002c6a movs r0, r0                                       |     
    0x00002c6c asrs r6, r4, 3                                    |     r6 = r4 >> 3;
    0x00002c6e movs r0, r0                                       |     
    0x00002c70 adds r0, r7, r4                                   |     r0 = r7 + r4;
    0x00002c72 movs r0, r0                                       |     
    0x00002c74 subs r0, r3, 0                                    |     r0 = r3 - 0;
    0x00002c76 movs r0, r0                                       |     
    0x00002c78 asrs r4, r6, 2                                    |     r4 = r6 >> 2;
    0x00002c7a movs r0, r0                                       |     
    0x00002c7c adds r6, r6, r1                                   |     r6 += r1;
    0x00002c7e movs r0, r0                                       |     
    0x00002c80 adds r6, r4, 7                                    |     r6 = r4 + 7;
    0x00002c82 movs r0, r0                                       |     
    0x00002c84 asrs r0, r7, 1                                    |     r0 = r7 >> 1;
    0x00002c86 movs r0, r0                                       |     
    0x00002c88 asrs r6, r6, 0x19                                 |     r6 >>= 0x19;
    0x00002c8a movs r0, r0                                       |     
    0x00002c8c adds r2, r5, 6                                    |     r2 = r5 + 6;
    0x00002c8e movs r0, r0                                       |     
    0x00002c90 asrs r4, r2, 1                                    |     r4 = r2 >> 1;
    0x00002c92 movs r0, r0                                       |     
    0x00002c94 adds r2, r1, r2                                   |     r2 = r1 + r2;
    0x00002c96 movs r0, r0                                       |     
    0x00002c98 adds r6, r0, 6                                    |     r6 = r0 + 6;
    0x00002c9a movs r0, r0                                       |     
    0x00002c9c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00002ca0 sub sp, 0x24                                      |     
    0x00002ca2 ldr.w r4, [pc, 0x414]                             |     r4 = *(0x000030b8);
    0x00002ca6 mov r8, r1                                        |     r8 = r1;
    0x00002ca8 ldr.w r3, [pc, 0x410]                             |     
    0x00002cac add r4, pc                                        |     r4 += pc;
    0x00002cae ldr.w r2, [pc, 0x410]                             |     r2 = *(0x000030c0);
    0x00002cb2 ldr r3, [r4, r3]                                  |     r3 = *((r4 + r3));
    0x00002cb4 mov r4, r0                                        |     r4 = r0;
    0x00002cb6 add r2, pc                                        |     r2 += pc;
    0x00002cb8 ldr r3, [r3]                                      |     r3 = *(0x30bc);
    0x00002cba str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00002cbc mov.w r3, 0                                       |     r3 = 0;
    0x00002cc0 ldr r3, [r2]                                      |     r3 = *(r2);
    0x00002cc2 cmp r3, 0                                         |     
    0x00002cc4 itt lt                                            |     
                                                                 |     if (r3 >= 0) {
    0x00002cc6 movlt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 >= 0) {
    0x00002cc8 strlt r3, [r2]                                    |         *(r2) = r3;
                                                                 |     }
                                                                 |     if (r3 < 0) {
    0x00002cca blt.w 0x2f04                                      |         goto label_107;
                                                                 |     }
    0x00002cce cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x00002cd0 beq.w 0x2f04                                      |         goto label_107;
                                                                 |     }
    0x00002cd4 cmp r0, 1                                         |     
                                                                 |     if (r0 <= 1) {
    0x00002cd6 ble.w 0x2e88                                      |         goto label_108;
                                                                 |     }
    0x00002cda ldr r6, [r1, 4]                                   |     r6 = *((r1 + 4));
    0x00002cdc adds r3, r1, 4                                    |     r3 = r1 + 4;
    0x00002cde movs r5, 0                                        |     r5 = 0;
    0x00002ce0 str r3, [sp, 0xc]                                 |     var_ch_2 = r3;
    0x00002ce2 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x00002ce4 beq.w 0x2fca                                      |         goto label_109;
                                                                 |     }
                                                                 | label_26:
    0x00002ce8 ldr.w sb, [pc, 0x3d8]                             |     
    0x00002cec ldr.w fp, [pc, 0x3d8]                             |     
    0x00002cf0 ldr r3, [pc, 0x3d8]                               |     
    0x00002cf2 add sb, pc                                        |     sb = 0x5dba;
    0x00002cf4 add fp, pc                                        |     fp = 0x5dc0;
    0x00002cf6 add r3, pc                                        |     r3 = 0x5dc6;
    0x00002cf8 str r3, [sp, 8]                                   |     var_8h_3 = r3;
                                                                 | label_16:
    0x00002cfa ldr.w r4, [r8]                                    |     r4 = *(r8);
    0x00002cfe movs r3, 0                                        |     r3 = 0;
    0x00002d00 mov r1, sb                                        |     r1 = sb;
    0x00002d02 str r3, [sp, 0x10]                                |     var_10h_4 = r3;
    0x00002d04 mov r0, r4                                        |     r0 = r4;
    0x00002d06 blx 0x1784                                        |     r0 = strcmp (r0, r1);
    0x00002d0a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002d0c beq.w 0x2e28                                      |         goto label_110;
                                                                 |     }
    0x00002d10 mov r0, r4                                        |     r0 = r4;
    0x00002d12 mov r1, fp                                        |     r1 = fp;
    0x00002d14 blx 0x1784                                        |     strcmp (r0, r1);
    0x00002d16 ldc p8, c2, [r6, -0]!                             |     __asm ("ldc p8, c2, [r6, -0]!");
                                                                 |     if (r0 != 0) {
    0x00002d1a bne.w 0x30a2                                      |         goto label_111;
                                                                 |     }
    0x00002d1e ldr r3, [sp, 8]                                   |     r3 = var_8h_3;
    0x00002d20 mov r0, r6                                        |     r0 = r6;
    0x00002d22 add r2, sp, 0x10                                  |     r2 += var_10h_4;
    0x00002d24 ldr r1, [r3]                                      |     r1 = *(r3);
    0x00002d26 blx 0x14f0                                        |     r0 = membershipdb_by_user ();
    0x00002d2a subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00002d2c blt.w 0x302e                                      |         goto label_112;
                                                                 |     }
                                                                 | label_18:
    0x00002d30 add r7, sp, 0x18                                  |     r7 += ptr;
    0x00002d32 add r6, sp, 0x14                                  |     r6 += var_14h_3;
    0x00002d34 movs r4, 0                                        |     r4 = 0;
    0x00002d36 b 0x2d60                                          |     
                                                                 |     while (r3 != r0) {
    0x00002d38 cmn.w r0, 0x70                                    |         
                                                                 |         if (r0 == 0x70) {
    0x00002d3c beq.w 0x2e5a                                      |             goto label_113;
                                                                 |         }
    0x00002d40 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00002d42 blt 0x2df0                                        |             goto label_114;
                                                                 |         }
    0x00002d44 ldrd r0, r1, [sp, 0x14]                           |         __asm ("ldrd r0, r1, [ptr]");
    0x00002d48 mov r2, r5                                        |         r2 = r5;
    0x00002d4a bl 0x2448                                         |         fcn_00002448 (r0, r1, r2);
    0x00002d4c invalid                                           |         
    0x00002d50 lsrs r0, r0, 8                                    |         r0 >>= 8;
                                                                 |         if (r0 < r0) {
    0x00002d52 blt 0x2e0e                                        |             goto label_20;
                                                                 |         }
    0x00002d54 ldr r0, [sp, 0x18]                                |         r0 = ptr;
    0x00002d56 blx 0x1544                                        |         free (r0);
    0x00002d5a ldr r0, [sp, 0x14]                                |         r0 = var_14h_3;
    0x00002d5c blx 0x1544                                        |         free (r0);
    0x00002d60 ldr r0, [sp, 0x10]                                |         r0 = var_10h_4;
    0x00002d62 mov r2, r7                                        |         r2 = r7;
    0x00002d64 mov r1, r6                                        |         r1 = r6;
    0x00002d66 strd r4, r4, [sp, 0x14]                           |         __asm ("strd r4, r4, [ptr]");
    0x00002d6a blx 0x1790                                        |         membershipdb_iterator_get ();
    0x00002d6c ldc p1, c15, [r2, -0x40]                          |         __asm ("ldc p1, c15, [r2, -0x40]");
    0x00002d70 lsrs r3, r0, 0x1c                                 |         r3 = r0 >> 0x1c;
    0x00002d72 mov sl, r0                                        |         sl = r0;
    0x00002d74 bne 0x2d38                                        |         
                                                                 |     }
    0x00002d76 ldr r0, [sp, 0x18]                                |     r0 = ptr;
    0x00002d78 blx 0x1544                                        |     free (r0);
    0x00002d7c ldr r0, [sp, 0x14]                                |     r0 = var_14h_3;
    0x00002d7e blx 0x1544                                        |     free (r0);
    0x00002d82 ldr r0, [sp, 0x10]                                |     r0 = var_10h_4;
                                                                 |     if (r0 != 0) {
    0x00002d84 cbz r0, 0x2d8a                                    |         
    0x00002d86 blx 0x17dc                                        |         fcn_000017dc ();
                                                                 |     }
    0x00002d8a ldr r3, [sp, 0xc]                                 |     r3 = var_ch_2;
    0x00002d8c ldr r6, [r3, 4]!                                  |     r6 = *((r3 += 4));
    0x00002d90 str r3, [sp, 0xc]                                 |     var_ch_2 = r3;
    0x00002d92 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00002d94 bne 0x2cfa                                        |         goto label_16;
                                                                 |     }
                                                                 | label_23:
    0x00002d96 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00002d98 beq.w 0x2fca                                      |         goto label_109;
                                                                 |     }
                                                                 | label_24:
    0x00002d9c movs r1, 0                                        |     r1 = 0;
    0x00002d9e mov r0, r5                                        |     r0 = r5;
    0x00002da0 blx 0x1454                                        |     r0 = table_print ();
    0x00002da4 subs r4, r0, 0                                    |     r4 = r0 - 0;
    0x00002da6 it ge                                             |     
                                                                 |     if (r4 < r0) {
    0x00002da8 movge sl, 0                                       |         sl = 0;
                                                                 |     }
                                                                 |     if (r4 >= r0) {
    0x00002dac bge 0x2dcc                                        |         goto label_115;
                                                                 |     }
    0x00002dae blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002db2 cmp r0, 2                                         |     
    0x00002db4 ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x00002db6 rsble r1, r4, 0                                   |         __asm ("rsble r1, r4, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00002db8 uxtble r1, r1                                     |         __asm ("uxtble r1, r1");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00002dba rsble sl, r1, 0                                   |         __asm ("rsble sl, r1, 0");
                                                                 |     }
                                                                 |     if (r0 > 2) {
    0x00002dbe bgt.w 0x305a                                      |         goto label_116;
                                                                 |     }
                                                                 | label_31:
    0x00002dc2 cmp.w sl, 0                                       |     
    0x00002dc6 it ge                                             |     
    0x00002dc8 mvnge sl, 0x55                                    |     sl = ~0x55;
                                                                 |     while (r5 != 0) {
                                                                 | label_115:
    0x00002dcc mov r0, r5                                        |         r0 = r5;
    0x00002dce blx 0x1520                                        |         table_unref ();
                                                                 | label_17:
    0x00002dd2 ldr r2, [pc, 0x2fc]                               |         
    0x00002dd4 ldr r3, [pc, 0x2e4]                               |         r3 = *(0x30bc);
    0x00002dd6 add r2, pc                                        |         r2 = 0x5eac;
    0x00002dd8 ldr r3, [r2, r3]                                  |         r3 = *(0x5eac);
    0x00002dda ldr r2, [r3]                                      |         r2 = *(0x5eac);
    0x00002ddc ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x00002dde eors r2, r3                                       |         r2 ^= r3;
    0x00002de0 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00002de4 bne.w 0x309e                                      |             goto label_117;
                                                                 |         }
    0x00002de8 mov r0, sl                                        |         r0 = sl;
    0x00002dea add sp, 0x24                                      |         
    0x00002dec pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_114:
    0x00002df0 blx 0x14a8                                        |         r0 = log_get_max_level ();
    0x00002df4 cmp r0, 2                                         |         
                                                                 |         if (r0 > 2) {
    0x00002df6 bgt.w 0x2f38                                      |             goto label_118;
                                                                 |         }
                                                                 | label_28:
    0x00002dfa rsb.w r1, sl, 0                                   |         r1 = sl - ;
    0x00002dfe uxtb r1, r1                                       |         r1 = (int8_t) r1;
    0x00002e00 rsb.w sl, r1, 0                                   |         sl = r1 - ;
                                                                 | label_27:
    0x00002e04 cmp.w sl, 0                                       |         
                                                                 |         if (sl >= 0) {
    0x00002e08 blt 0x2e0e                                        |             
                                                                 | label_21:
    0x00002e0a mvn sl, 0x55                                      |             sl = ~0x55;
                                                                 |         }
                                                                 | label_20:
    0x00002e0e ldr r0, [sp, 0x18]                                |         r0 = ptr;
    0x00002e10 blx 0x1544                                        |         free (r0);
    0x00002e14 ldr r0, [sp, 0x14]                                |         r0 = var_14h_3;
    0x00002e16 blx 0x1544                                        |         free (r0);
    0x00002e18 invalid                                           |         
                                                                 | label_19:
    0x00002e1a ldr r0, [sp, 0x10]                                |         r0 = var_10h_4;
                                                                 |         if (r0 != 0) {
    0x00002e1c cbz r0, 0x2e22                                    |             
    0x00002e1e blx 0x17dc                                        |             fcn_000017dc ();
                                                                 |         }
    0x00002e22 cmp r5, 0                                         |         
    0x00002e24 bne 0x2dcc                                        |         
                                                                 |     }
    0x00002e26 b 0x2dd2                                          |     goto label_17;
                                                                 | label_110:
    0x00002e28 ldr r3, [pc, 0x2a8]                               |     
    0x00002e2a mov r0, r6                                        |     r0 = r6;
    0x00002e2c add r2, sp, 0x10                                  |     r2 += var_10h_4;
    0x00002e2e add r3, pc                                        |     r3 = 0x5f06;
    0x00002e30 ldr r1, [r3]                                      |     r1 = *(0x5f06);
    0x00002e32 blx 0x1610                                        |     r0 = membershipdb_by_group ();
    0x00002e36 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x00002e38 bge.w 0x2d30                                      |         goto label_18;
                                                                 |     }
    0x00002e3c blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002e40 cmp r0, 2                                         |     
                                                                 |     if (r0 > 2) {
    0x00002e42 bgt.w 0x307c                                      |         goto label_119;
                                                                 |     }
                                                                 | label_29:
    0x00002e46 rsbs r1, r4, 0                                    |     r1 = r4 - ;
    0x00002e48 uxtb r1, r1                                       |     r1 = (int8_t) r1;
    0x00002e4a rsb.w sl, r1, 0                                   |     sl = r1 - ;
                                                                 | label_30:
    0x00002e4e cmp.w sl, 0                                       |     
    0x00002e52 it ge                                             |     
                                                                 |     if (sl < 0) {
    0x00002e54 mvnge sl, 0x55                                    |         sl = ~0x55;
                                                                 |     }
    0x00002e58 b 0x2e1a                                          |     goto label_19;
                                                                 | label_113:
    0x00002e5a blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002e5e cmp r0, 2                                         |     
                                                                 |     if (r0 <= 2) {
    0x00002e60 ble 0x2e0e                                        |         goto label_20;
                                                                 |     }
    0x00002e62 ldr r2, [pc, 0x274]                               |     
    0x00002e64 mov r1, sl                                        |     r1 = sl;
    0x00002e66 ldr r0, [pc, 0x274]                               |     
    0x00002e68 ldr r3, [pc, 0x274]                               |     
    0x00002e6a add r2, pc                                        |     r2 = 0x5f48;
    0x00002e6c add r0, pc                                        |     r0 = 0x5f4e;
    0x00002e6e adds r2, 7                                        |     r2 += 7;
    0x00002e70 add r3, pc                                        |     r3 = 0x5f54;
    0x00002e72 strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x00002e74 adds r0, 0                                        |     r0 += 0;
    0x00002e76 mov.w r3, 0x1b0                                   |     r3 = 0x1b0;
    0x00002e7a movs r0, 3                                        |     r0 = 3;
    0x00002e7c blx 0x16ac                                        |     r0 = log_internal ();
    0x00002e80 subs.w sl, r0, 0                                  |     sl = r0 - 0;
                                                                 |     if (sl >= r0) {
    0x00002e84 bge 0x2e0a                                        |         goto label_21;
                                                                 |     }
    0x00002e86 b 0x2e0e                                          |     goto label_20;
                                                                 | label_108:
    0x00002e88 movs r5, 0                                        |     r5 = 0;
                                                                 | label_25:
    0x00002e8a ldr r3, [pc, 0x258]                               |     
    0x00002e8c movs r4, 0                                        |     r4 = 0;
    0x00002e8e add r1, sp, 0x10                                  |     r1 += var_10h_4;
    0x00002e90 str r4, [sp, 0x10]                                |     var_10h_4 = r4;
    0x00002e92 add r3, pc                                        |     r3 = 0x5f7c;
    0x00002e94 ldr r0, [r3]                                      |     r0 = *(0x5f7c);
    0x00002e96 blx 0x13f4                                        |     r0 = membershipdb_all ();
    0x00002e9a subs r6, r0, 0                                    |     r6 = r0 - 0;
                                                                 |     if (r6 < r0) {
    0x00002e9c blt 0x2f5a                                        |         goto label_120;
                                                                 |     }
    0x00002e9e add r7, sp, 0x18                                  |     r7 += ptr;
    0x00002ea0 add r6, sp, 0x14                                  |     r6 += var_14h_3;
    0x00002ea2 b 0x2ece                                          |     goto label_121;
                                                                 | label_22:
    0x00002ea4 cmn.w r0, 0x70                                    |     
                                                                 |     if (r0 == 0x70) {
    0x00002ea8 beq.w 0x2fd0                                      |         goto label_122;
                                                                 |     }
    0x00002eac cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00002eae blt.w 0x3002                                      |         goto label_123;
                                                                 |     }
    0x00002eb2 ldrd r0, r1, [sp, 0x14]                           |     __asm ("ldrd r0, r1, [ptr]");
    0x00002eb6 mov r2, r5                                        |     r2 = r5;
    0x00002eb8 bl 0x2448                                         |     r0 = fcn_00002448 (r0, r1, r2);
    0x00002ebc subs.w sl, r0, 0                                  |     sl = r0 - 0;
                                                                 |     if (sl < r0) {
    0x00002ec0 blt 0x2e0e                                        |         goto label_20;
                                                                 |     }
    0x00002ec2 ldr r0, [sp, 0x18]                                |     r0 = ptr;
    0x00002ec4 blx 0x1544                                        |     free (r0);
    0x00002ec8 ldr r0, [sp, 0x14]                                |     r0 = var_14h_3;
    0x00002eca blx 0x1544                                        |     free (r0);
                                                                 | label_121:
    0x00002ece ldr r0, [sp, 0x10]                                |     r0 = var_10h_4;
    0x00002ed0 mov r2, r7                                        |     r2 = r7;
    0x00002ed2 mov r1, r6                                        |     r1 = r6;
    0x00002ed4 strd r4, r4, [sp, 0x14]                           |     __asm ("strd r4, r4, [ptr]");
    0x00002ed8 blx 0x1790                                        |     r0 = membershipdb_iterator_get ();
    0x00002edc cmn.w r0, 3                                       |     
    0x00002ee0 mov sl, r0                                        |     sl = r0;
                                                                 |     if (r0 != 3) {
    0x00002ee2 bne 0x2ea4                                        |         goto label_22;
                                                                 |     }
    0x00002ee4 ldr r0, [sp, 0x18]                                |     r0 = ptr;
    0x00002ee6 blx 0x1544                                        |     free (r0);
    0x00002eea ldr r0, [sp, 0x14]                                |     r0 = var_14h_3;
    0x00002eec blx 0x1544                                        |     free (r0);
    0x00002ef0 ldr r0, [sp, 0x10]                                |     r0 = var_10h_4;
    0x00002ef2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00002ef4 beq.w 0x2d96                                      |         goto label_23;
                                                                 |     }
    0x00002ef8 blx 0x17dc                                        |     fcn_000017dc ();
    0x00002efc cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x00002efe bne.w 0x2d9c                                      |         goto label_24;
                                                                 |     }
    0x00002f02 b 0x2fca                                          |     goto label_109;
                                                                 | label_107:
    0x00002f04 ldr r1, [pc, 0x1e0]                               |     
    0x00002f06 movs r2, 0                                        |     r2 = 0;
    0x00002f08 ldr r0, [pc, 0x1e0]                               |     
    0x00002f0a add r1, pc                                        |     r1 = 0x5ff6;
    0x00002f0c add r0, pc                                        |     r0 = 0x5ffc;
    0x00002f0e blx 0x16b8                                        |     r0 = table_new_internal ();
    0x00002f12 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 == 0) {
    0x00002f14 cbz r0, 0x2f78                                    |         goto label_124;
                                                                 |     }
    0x00002f16 mov.w r3, -1                                      |     r3 = -1;
    0x00002f1a movs r2, 1                                        |     r2 = 1;
    0x00002f1c movs r1, 0                                        |     r1 = 0;
    0x00002f1e blx 0x14fc                                        |     table_set_sort_internal ();
    0x00002f22 cmp r4, 1                                         |     
                                                                 |     if (r4 <= 1) {
    0x00002f24 ble 0x2e8a                                        |         goto label_25;
                                                                 |     }
    0x00002f26 ldr.w r6, [r8, 4]                                 |     r6 = *((r8 + 4));
    0x00002f2a add.w r3, r8, 4                                   |     r3 = r8 + 4;
    0x00002f2c lsls r4, r0, 0xc                                  |     r4 = r0 << 0xc;
    0x00002f2e str r3, [sp, 0xc]                                 |     var_ch_2 = r3;
    0x00002f30 cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x00002f32 bne.w 0x2ce8                                      |         goto label_26;
                                                                 |     }
    0x00002f36 b 0x2d9c                                          |     goto label_24;
                                                                 | label_118:
    0x00002f38 ldr r2, [pc, 0x1b4]                               |     
    0x00002f3a mov r1, sl                                        |     r1 = sl;
    0x00002f3c ldr r0, [pc, 0x1b4]                               |     
    0x00002f3e ldr r3, [pc, 0x1b8]                               |     
    0x00002f40 add r2, pc                                        |     r2 = 0x6034;
    0x00002f42 add r0, pc                                        |     r0 = 0x603a;
    0x00002f44 adds r2, 7                                        |     r2 += 7;
    0x00002f46 add r3, pc                                        |     r3 = 0x6044;
    0x00002f48 strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x00002f4c mov.w r3, 0x1b2                                   |     r3 = 0x1b2;
    0x00002f50 movs r0, 3                                        |     r0 = 3;
    0x00002f52 blx 0x16ac                                        |     r0 = log_internal ();
    0x00002f56 mov sl, r0                                        |     sl = r0;
    0x00002f58 b 0x2e04                                          |     goto label_27;
                                                                 | label_120:
    0x00002f5a blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002f5e cmp r0, 2                                         |     
    0x00002f60 ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x00002f62 rsble r1, r6, 0                                   |         __asm ("rsble r1, r6, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00002f64 uxtble r1, r1                                     |         __asm ("uxtble r1, r1");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00002f66 rsble sl, r1, 0                                   |         __asm ("rsble sl, r1, 0");
                                                                 |     }
    0x00002f6a bgt 0x2fa8                                        |     
                                                                 |     while (1) {
    0x00002f6c cmp.w sl, 0                                       |         
    0x00002f70 it ge                                             |         
                                                                 |         if (sl < 0) {
    0x00002f72 mvnge sl, 0x55                                    |             sl = ~0x55;
                                                                 |         }
    0x00002f76 b 0x2e1a                                          |         goto label_19;
                                                                 | label_124:
    0x00002f78 ldr r2, [pc, 0x180]                               |         
    0x00002f7a ldr r3, [pc, 0x140]                               |         r3 = *(0x30be);
    0x00002f7c add r2, pc                                        |         r2 = 0x607c;
    0x00002f7e ldr r3, [r2, r3]                                  |         r3 = *(0x607c);
    0x00002f80 ldr r2, [r3]                                      |         r2 = *(0x607c);
    0x00002f82 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x00002f84 eors r2, r3                                       |         r2 ^= r3;
    0x00002f86 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00002f8a bne.w 0x309e                                      |             goto label_117;
                                                                 |         }
    0x00002f8c strh r0, [r1, 4]                                  |         *((r1 + 4)) = r0;
    0x00002f8e ldr r1, [pc, 0x170]                               |         
    0x00002f90 movw r2, 0x193                                    |         r2 = 0x193;
    0x00002f94 ldr r3, [pc, 0x16c]                               |         
    0x00002f96 movs r0, 3                                        |         r0 = 3;
    0x00002f98 add r1, pc                                        |         r1 = 0x609e;
    0x00002f9a add r3, pc                                        |         r3 = 0x60a2;
    0x00002f9c adds r1, 7                                        |         r1 += 7;
    0x00002f9e add sp, 0x24                                      |         
    0x00002fa0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |         
    0x00002fa4 b.w 0x17cc                                        |         void (*0x17cc)() ();
    0x00002fa8 ldr r2, [pc, 0x15c]                               |         
    0x00002faa mov r1, r6                                        |         r1 = r6;
    0x00002fac ldr r0, [pc, 0x15c]                               |         
    0x00002fae ldr r3, [pc, 0x160]                               |         
    0x00002fb0 add r2, pc                                        |         r2 = 0x60bc;
    0x00002fb2 add r0, pc                                        |         r0 = 0x60c2;
    0x00002fb4 adds r2, 7                                        |         r2 += 7;
    0x00002fb6 add r3, pc                                        |         r3 = 0x60cc;
    0x00002fb8 strd r3, r0, [sp]                                 |         __asm ("strd r3, r0, [sp]");
    0x00002fbc mov.w r3, 0x1be                                   |         r3 = 0x1be;
    0x00002fc0 movs r0, 3                                        |         r0 = 3;
    0x00002fc2 blx 0x16ac                                        |         r0 = log_internal ();
    0x00002fc6 mov sl, r0                                        |         sl = r0;
    0x00002fc8 b 0x2f6c                                          |         
                                                                 |     }
                                                                 | label_109:
    0x00002fca mov.w sl, 0                                       |     sl = 0;
    0x00002fce b 0x2dd2                                          |     goto label_17;
                                                                 | label_122:
    0x00002fd0 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00002fd4 cmp r0, 2                                         |     
                                                                 |     if (r0 <= 2) {
    0x00002fd6 ble.w 0x2e0e                                      |         goto label_20;
                                                                 |     }
    0x00002fda ldr r2, [pc, 0x138]                               |     
    0x00002fdc mov r1, sl                                        |     r1 = sl;
    0x00002fde ldr r0, [pc, 0x138]                               |     
    0x00002fe0 ldr r3, [pc, 0x138]                               |     
    0x00002fe2 add r2, pc                                        |     r2 = 0x60fc;
    0x00002fe4 add r0, pc                                        |     r0 = 0x6102;
    0x00002fe6 adds r2, 7                                        |     r2 += 7;
    0x00002fe8 add r3, pc                                        |     r3 = 0x6108;
    0x00002fea strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x00002fee movw r3, 0x1c7                                    |     r3 = 0x1c7;
    0x00002ff2 movs r0, 3                                        |     r0 = 3;
    0x00002ff4 blx 0x16ac                                        |     r0 = log_internal ();
    0x00002ff8 subs.w sl, r0, 0                                  |     sl = r0 - 0;
                                                                 |     if (sl >= r0) {
    0x00002ffc bge.w 0x2e0a                                      |         goto label_21;
                                                                 |     }
    0x00003000 b 0x2e0e                                          |     goto label_20;
                                                                 | label_123:
    0x00003002 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00003006 cmp r0, 2                                         |     
                                                                 |     if (r0 <= 2) {
    0x00003008 ble.w 0x2dfa                                      |         goto label_28;
                                                                 |     }
    0x0000300c ldr r2, [pc, 0x110]                               |     
    0x0000300e mov r1, sl                                        |     r1 = sl;
    0x00003010 ldr r0, [pc, 0x110]                               |     
    0x00003012 ldr r3, [pc, 0x114]                               |     
    0x00003014 add r2, pc                                        |     r2 = 0x6138;
    0x00003016 add r0, pc                                        |     r0 = 0x613e;
    0x00003018 adds r2, 7                                        |     r2 += 7;
    0x0000301a add r3, pc                                        |     r3 = 0x6148;
    0x0000301c strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x00003020 movw r3, 0x1c9                                    |     r3 = 0x1c9;
    0x00003024 movs r0, 3                                        |     r0 = 3;
    0x00003026 blx 0x16ac                                        |     r0 = log_internal ();
    0x0000302a mov sl, r0                                        |     sl = r0;
    0x0000302c b 0x2e04                                          |     goto label_27;
                                                                 | label_112:
    0x0000302e blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00003032 cmp r0, 2                                         |     
                                                                 |     if (r0 <= 2) {
    0x00003034 ble.w 0x2e46                                      |         goto label_29;
                                                                 |     }
    0x00003038 ldr r2, [pc, 0xf0]                                |     
    0x0000303a mov r1, r4                                        |     r1 = r4;
    0x0000303c ldr r0, [pc, 0xf0]                                |     
    0x0000303e ldr r3, [pc, 0xf4]                                |     
    0x00003040 add r2, pc                                        |     r2 = 0x6170;
    0x00003042 add r0, pc                                        |     r0 = 0x6176;
    0x00003044 adds r2, 7                                        |     r2 += 7;
    0x00003046 add r3, pc                                        |     r3 = 0x6180;
    0x00003048 strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x0000304c movw r3, 0x1a5                                    |     r3 = 0x1a5;
    0x00003050 movs r0, 3                                        |     r0 = 3;
    0x00003052 blx 0x16ac                                        |     r0 = log_internal ();
    0x00003056 mov sl, r0                                        |     sl = r0;
    0x00003058 b 0x2e4e                                          |     goto label_30;
                                                                 | label_116:
    0x0000305a ldr r2, [pc, 0xdc]                                |     
    0x0000305c mov r1, r4                                        |     r1 = r4;
    0x0000305e ldr r0, [pc, 0xdc]                                |     
    0x00003060 ldr r3, [pc, 0xdc]                                |     
    0x00003062 add r2, pc                                        |     r2 = 0x61a0;
    0x00003064 add r0, pc                                        |     r0 = 0x61a6;
    0x00003066 adds r2, 7                                        |     r2 += 7;
    0x00003068 add r3, pc                                        |     r3 = 0x61ac;
    0x0000306a strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x0000306e mov.w r3, 0x1d4                                   |     r3 = 0x1d4;
    0x00003072 movs r0, 3                                        |     r0 = 3;
    0x00003074 blx 0x16ac                                        |     r0 = log_internal ();
    0x00003078 mov sl, r0                                        |     sl = r0;
    0x0000307a b 0x2dc2                                          |     goto label_31;
                                                                 | label_119:
    0x0000307c ldr r2, [pc, 0xc4]                                |     
    0x0000307e mov r1, r4                                        |     r1 = r4;
    0x00003080 ldr r0, [pc, 0xc4]                                |     
    0x00003082 ldr r3, [pc, 0xc8]                                |     
    0x00003084 add r2, pc                                        |     r2 = 0x61cc;
    0x00003086 add r0, pc                                        |     r0 = 0x61d2;
    0x00003088 adds r2, 7                                        |     r2 += 7;
    0x0000308a add r3, pc                                        |     r3 = 0x61dc;
    0x0000308c strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x00003090 movw r3, 0x1a1                                    |     r3 = 0x1a1;
    0x00003094 movs r0, 3                                        |     r0 = 3;
    0x00003096 blx 0x16ac                                        |     r0 = log_internal ();
    0x0000309a mov sl, r0                                        |     sl = r0;
    0x0000309c b 0x2e4e                                          |     goto label_30;
                                                                 | label_117:
    0x0000309e blx 0x16a0                                        |     stack_chk_fail ();
                                                                 | label_111:
    0x000030a2 ldr r1, [pc, 0xac]                                |     
    0x000030a4 movw r2, 0x1a7                                    |     
    0x000030a8 ldr r3, [pc, 0xa8]                                |     
    0x000030aa ldr r0, [pc, 0xac]                                |     
    0x000030ac add r1, pc                                        |     
    0x000030ae add r3, pc                                        |     r3 = 0x6206;
    0x000030b0 adds r1, 7                                        |     r1 += 7;
    0x000030b2 add r0, pc                                        |     r0 = 0x6210;
    0x000030b4 blx 0x1760                                        |     log_assert_failed_unreachable ();
    0x000030b8 movs r1, 0xb0                                     |     r1 = 0xb0;
    0x000030ba movs r1, r0                                       |     r1 = r0;
    0x000030bc lsls r4, r7, 5                                    |     r4 = r7 << 5;
    0x000030be movs r0, r0                                       |     
    0x000030c0 movs r3, 0x4a                                     |     r3 = 0x4a;
    0x000030c2 movs r1, r0                                       |     r1 = r0;
    0x000030c4 asrs r6, r7, 0x1f                                 |     r6 = r7 >> 0x1f;
    0x000030c6 movs r0, r0                                       |     
    0x000030c8 adds r4, r6, r0                                   |     r4 = r6 + r0;
    0x000030ca movs r0, r0                                       |     
    0x000030cc movs r3, 0x22                                     |     r3 = 0x22;
    0x000030ce movs r1, r0                                       |     r1 = r0;
    0x000030d0 movs r0, 0x86                                     |     r0 = 0x86;
    0x000030d2 movs r1, r0                                       |     r1 = r0;
    0x000030d4 movs r1, 0xea                                     |     r1 = 0xea;
    0x000030d6 movs r1, r0                                       |     r1 = r0;
    0x000030d8 lsrs r6, r0, 0x18                                 |     r6 = r0 >> 0x18;
    0x000030da movs r0, r0                                       |     
    0x000030dc asrs r4, r0, 0x1c                                 |     r4 = r0 >> 0x1c;
    0x000030de movs r0, r0                                       |     
    0x000030e0 subs r0, r4, r6                                   |     r0 = r4 - r6;
    0x000030e2 movs r0, r0                                       |     
    0x000030e4 movs r1, 0x86                                     |     r1 = 0x86;
    0x000030e6 movs r1, r0                                       |     r1 = r0;
    0x000030e8 asrs r6, r4, 0xf                                  |     r6 = r4 >> 0xf;
    0x000030ea movs r0, r0                                       |     
    0x000030ec asrs r4, r3, 0xf                                  |     r4 = r3 >> 0xf;
    0x000030ee movs r0, r0                                       |     
    0x000030f0 lsrs r0, r6, 0x14                                 |     r0 = r6 >> 0x14;
    0x000030f2 movs r0, r0                                       |     
    0x000030f4 asrs r6, r6, 0x19                                 |     r6 >>= 0x19;
    0x000030f6 movs r0, r0                                       |     
    0x000030f8 subs r2, r1, r3                                   |     r2 = r1 - r3;
    0x000030fa movs r0, r0                                       |     
    0x000030fc subs r0, r4, 3                                    |     r0 = r4 - 3;
    0x000030fe movs r1, r0                                       |     r1 = r0;
    0x00003100 lsrs r0, r3, 0x13                                 |     r0 = r3 >> 0x13;
    0x00003102 movs r0, r0                                       |     
    0x00003104 subs r6, r6, r1                                   |     r6 -= r1;
    0x00003106 movs r0, r0                                       |     
    0x00003108 lsrs r0, r0, 0x13                                 |     r0 >>= 0x13;
    0x0000310a movs r0, r0                                       |     
    0x0000310c asrs r2, r5, 0x18                                 |     r2 = r5 >> 0x18;
    0x0000310e movs r0, r0                                       |     
    0x00003110 subs r2, r3, r1                                   |     r2 = r3 - r1;
    0x00003112 movs r0, r0                                       |     
    0x00003114 lsrs r6, r1, 0x12                                 |     r6 = r1 >> 0x12;
    0x00003116 movs r0, r0                                       |     
    0x00003118 asrs r4, r1, 0x16                                 |     r4 = r1 >> 0x16;
    0x0000311a movs r0, r0                                       |     
    0x0000311c subs r0, r5, r0                                   |     r0 = r5 - r0;
    0x0000311e movs r0, r0                                       |     
    0x00003120 lsrs r4, r3, 0x11                                 |     r4 = r3 >> 0x11;
    0x00003122 movs r0, r0                                       |     
    0x00003124 asrs r2, r4, 0x16                                 |     r2 = r4 >> 0x16;
    0x00003126 movs r0, r0                                       |     
    0x00003128 adds r6, r6, r7                                   |     r6 += r7;
    0x0000312a movs r0, r0                                       |     
    0x0000312c lsrs r0, r6, 0x10                                 |     r0 = r6 >> 0x10;
    0x0000312e movs r0, r0                                       |     
    0x00003130 asrs r6, r6, 0x13                                 |     r6 >>= 0x13;
    0x00003132 movs r0, r0                                       |     
    0x00003134 adds r2, r1, r7                                   |     r2 = r1 + r7;
    0x00003136 movs r0, r0                                       |     
    0x00003138 lsrs r6, r1, 0x10                                 |     r6 = r1 >> 0x10;
    0x0000313a movs r0, r0                                       |     
    0x0000313c asrs r4, r3, 0x16                                 |     r4 = r3 >> 0x16;
    0x0000313e movs r0, r0                                       |     
    0x00003140 adds r0, r5, r6                                   |     r0 = r5 + r6;
    0x00003142 movs r0, r0                                       |     
    0x00003144 lsrs r4, r5, 0xf                                  |     r4 = r5 >> 0xf;
    0x00003146 movs r0, r0                                       |     
    0x00003148 asrs r2, r7, 0x11                                 |     r2 = r7 >> 0x11;
    0x0000314a movs r0, r0                                       |     
    0x0000314c adds r6, r0, r6                                   |     r6 = r0 + r6;
    0x0000314e movs r0, r0                                       |     
    0x00003150 lsrs r4, r0, 0xf                                  |     r4 = r0 >> 0xf;
    0x00003152 movs r0, r0                                       |     
    0x00003154 adds r6, r0, r3                                   |     r6 = r0 + r3;
    0x00003156 movs r0, r0                                       |     
    0x00003158 asrs r6, r5, 0x12                                 |     r6 = r5 >> 0x12;
    0x0000315a movs r0, r0                                       |     
    0x0000315c ldr.w r2, [pc, 0x47c]                             |     r2 = *(0x000035dc);
    0x00003160 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00003164 mov r5, r1                                        |     r5 = r1;
    0x00003166 ldr.w r7, [pc, 0x478]                             |     r7 = *(0x000035e0);
    0x0000316a sub sp, 0x34                                      |     
    0x0000316c add r2, pc                                        |     r2 = 0x3317;
    0x0000316e mov r4, r0                                        |     r4 = r0;
    0x00003170 ldr.w r1, [pc, 0x470]                             |     r1 = *(0x000035e4);
    0x00003174 ldr.w r3, [pc, 0x470]                             |     r3 = *(0x35e8);
    0x00003178 add r7, pc                                        |     r7 += pc;
    0x0000317a ldr r6, [r2]                                      |     r6 = *(0x3317);
    0x0000317c add r1, pc                                        |     r1 = 0x9382;
    0x0000317e str r7, [sp, 0x14]                                |     var_14h_2 = r7;
    0x00003180 ldr r3, [r1, r3]                                  |     
    0x00003182 cmp r6, 0                                         |     
    0x00003184 ldr r3, [r3]                                      |     r3 = *(0x9382);
    0x00003186 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00003188 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r6 < 0) {
    0x0000318c blt.w 0x33b0                                      |         goto label_125;
                                                                 |     }
    0x00003190 cmp r6, 1                                         |     
                                                                 |     if (r6 == 1) {
    0x00003192 beq.w 0x3514                                      |         goto label_126;
                                                                 |     }
    0x00003196 cmp r0, 1                                         |     
                                                                 |     if (r0 <= 1) {
    0x00003198 ble.w 0x32ec                                      |         goto label_127;
                                                                 |     }
                                                                 | label_40:
    0x0000319c ldr r0, [r5, 4]                                   |     r0 = *((r5 + 4));
    0x0000319e adds r5, 4                                        |     r5 += 4;
    0x000031a0 mov r4, r0                                        |     r4 = r0;
    0x000031a2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000031a4 beq.w 0x32ae                                      |         goto label_39;
                                                                 |     }
    0x000031a8 movs r7, 0                                        |     r7 = 0;
                                                                 | label_47:
    0x000031aa ldr.w r3, [pc, 0x440]                             |     
    0x000031ae add r6, sp, 0x28                                  |     r6 += var_28h;
    0x000031b0 ldr.w sl, [pc, 0x43c]                             |     sl = *(0x000035f0);
    0x000031b4 movs r4, 0                                        |     r4 = 0;
    0x000031b6 mov fp, r6                                        |     
    0x000031b8 add.w sb, sp, 0x24                                |     sb += var_24h_3;
    0x000031bc add r3, pc                                        |     r3 = 0x67ae;
    0x000031be mov r6, r4                                        |     r6 = r4;
    0x000031c0 adds r3, 7                                        |     r3 += 7;
    0x000031c2 add sl, pc                                        |     sl += pc;
    0x000031c4 str r3, [sp, 0x18]                                |     var_18h_2 = r3;
    0x000031c6 ldr.w r3, [pc, 0x42c]                             |     
    0x000031ca add r3, pc                                        |     
    0x000031cc adds r3, 7                                        |     r3 += 7;
    0x000031ce str r3, [sp, 0x1c]                                |     var_1ch_3 = r3;
    0x000031d0 ldr.w r3, [pc, 0x424]                             |     r3 = *(0x000035f8);
    0x000031d4 add r3, pc                                        |     r3 = 0x999c;
    0x000031d6 str r3, [sp, 0x10]                                |     var_10h_3 = r3;
    0x000031d8 b 0x321e                                          |     
                                                                 |     while (r0 >= 0) {
    0x000031da ldr.w r1, [sl]                                    |         r1 = *(sl);
    0x000031de mov r2, sb                                        |         r2 = sb;
    0x000031e0 ldr r0, [sp, 0x28]                                |         r0 = var_28h;
    0x000031e2 blx 0x17f4                                        |         r0 = fcn_000017f4 ();
    0x000031e6 mov r8, r0                                        |         r8 = r0;
    0x000031e8 cmp.w r8, 0                                       |         
                                                                 |         if (r8 < 0) {
    0x000031ec blt 0x3240                                        |             goto label_128;
                                                                 |         }
                                                                 |         if (r6 != 0) {
                                                                 | label_32:
    0x000031ee cbz r6, 0x31fe                                    |             
    0x000031f0 ldr.w r3, [pc, 0x408]                             |             r3 = *(0x000035fc);
    0x000031f4 add r3, pc                                        |             r3 += pc;
    0x000031f6 ldr r3, [r3]                                      |             r3 = *(r3);
    0x000031f8 cmp r3, 2                                         |             
                                                                 |             if (r3 == 2) {
    0x000031fa beq.w 0x3362                                      |                 goto label_129;
                                                                 |             }
                                                                 |         }
    0x000031fe ldr r0, [sp, 0x24]                                |         r0 = var_24h_3;
    0x00003200 mov r1, r7                                        |         r1 = r7;
    0x00003202 bl 0x201c                                         |         r0 = fcn_0000201c (r0, r1);
    0x00003206 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00003208 blt.w 0x337e                                      |             goto label_130;
                                                                 |         }
                                                                 | label_37:
    0x0000320c movs r6, 1                                        |         r6 = 1;
                                                                 | label_33:
    0x0000320e ldr r0, [sp, 0x24]                                |         r0 = var_24h_3;
                                                                 |         if (r0 != 0) {
    0x00003210 cbz r0, 0x3216                                    |             
    0x00003212 blx 0x16f4                                        |             group_record_unref ();
                                                                 |         }
    0x00003216 ldr r0, [r5, 4]!                                  |         r0 = *((r5 += 4));
    0x0000321a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0000321c beq 0x3298                                        |             goto label_131;
                                                                 |         }
    0x0000321e movs r3, 0                                        |         r3 = 0;
    0x00003220 mov r1, fp                                        |         r1 = fp;
    0x00003222 str r3, [sp, 0x24]                                |         var_24h_3 = r3;
    0x00003224 blx 0x16c4                                        |         r0 = parse_uid ();
    0x00003228 cmp r0, 0                                         |         
    0x0000322a bge 0x31da                                        |         
                                                                 |     }
    0x0000322c ldr r3, [sp, 0x10]                                |     r3 = var_10h_3;
    0x0000322e mov r2, sb                                        |     r2 = sb;
    0x00003230 ldr r0, [r5]                                      |     r0 = *(r5);
    0x00003232 ldr r1, [r3]                                      |     r1 = *(r3);
    0x00003234 blx 0x1604                                        |     r0 = groupdb_by_name ();
    0x00003238 mov r8, r0                                        |     r8 = r0;
    0x0000323a cmp.w r8, 0                                       |     
                                                                 |     if (r8 >= 0) {
    0x0000323e bge 0x31ee                                        |         goto label_32;
                                                                 |     }
                                                                 | label_128:
    0x00003240 blx 0x14a8                                        |     log_get_max_level ();
    0x00003244 cmn.w r8, 3                                       |     
                                                                 |     if (r8 == 3) {
    0x00003248 beq 0x325e                                        |         goto label_132;
                                                                 |     }
    0x0000324a cmn.w r8, 0x70                                    |     
                                                                 |     if (r8 == 0x70) {
    0x0000324e beq 0x32cc                                        |         goto label_133;
                                                                 |     }
    0x00003250 cmp r0, 2                                         |     
                                                                 |     if (r0 > 2) {
    0x00003252 bgt.w 0x3390                                      |         goto label_134;
                                                                 |     }
                                                                 |     do {
                                                                 | label_34:
    0x00003256 cmp r4, 0                                         |         
    0x00003258 it eq                                             |         
                                                                 |         if (r4 != 0) {
    0x0000325a moveq r4, r8                                      |             r4 = r8;
                                                                 |         }
    0x0000325c b 0x320e                                          |         goto label_33;
                                                                 | label_132:
    0x0000325e cmp r0, 2                                         |         
    0x00003260 ble 0x3256                                        |         
                                                                 |     } while (r0 <= 2);
    0x00003262 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00003264 mov r1, r8                                        |     r1 = r8;
    0x00003266 ldr r2, [pc, 0x398]                               |     
    0x00003268 movs r0, 3                                        |     r0 = 3;
    0x0000326a str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x0000326c ldr r3, [pc, 0x394]                               |     
    0x0000326e add r2, pc                                        |     r2 = 0x6874;
    0x00003270 adds r2, 7                                        |     r2 += 7;
    0x00003272 add r3, pc                                        |     r3 = 0x687a;
    0x00003274 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x00003276 ldr r3, [pc, 0x390]                               |     
    0x00003278 add r3, pc                                        |     r3 = 0x6886;
    0x0000327a str r3, [sp]                                      |     *(sp) = r3;
    0x0000327c mov.w r3, 0x11a                                   |     r3 = 0x11a;
    0x00003280 blx 0x16ac                                        |     log_internal ();
    0x00003284 b 0x3256                                          |     goto label_34;
                                                                 | label_35:
    0x00003286 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
                                                                 |     if (r0 != 0) {
    0x00003288 cbz r0, 0x328e                                    |         
    0x0000328a blx 0x16f4                                        |         group_record_unref ();
                                                                 |     }
    0x0000328e ldr r0, [sp, 0x24]                                |     r0 = var_24h_3;
                                                                 |     if (r0 != 0) {
    0x00003290 cbz r0, 0x3296                                    |         
    0x00003292 blx 0x17dc                                        |         fcn_000017dc ();
                                                                 |     }
    0x00003296 movs r4, 0                                        |     r4 = 0;
                                                                 |     if (r7 != 0) {
                                                                 | label_131:
    0x00003298 cbz r7, 0x32ae                                    |         
                                                                 | label_48:
    0x0000329a movs r1, 0                                        |         r1 = 0;
    0x0000329c mov r0, r7                                        |         r0 = r7;
    0x0000329e blx 0x1454                                        |         r0 = table_print ();
    0x000032a2 subs r5, r0, 0                                    |         r5 = r0 - 0;
                                                                 |         if (r5 < r0) {
    0x000032a4 blt.w 0x343e                                      |             goto label_135;
                                                                 |         }
                                                                 | label_38:
    0x000032a8 mov r0, r7                                        |         r0 = r7;
    0x000032aa blx 0x1520                                        |         table_unref ();
                                                                 |     }
                                                                 | label_39:
    0x000032ae ldr r2, [pc, 0x35c]                               |     
    0x000032b0 ldr r3, [pc, 0x334]                               |     r3 = *(0x35e8);
    0x000032b2 add r2, pc                                        |     r2 = 0x68c4;
    0x000032b4 ldr r3, [r2, r3]                                  |     r3 = *(0x68c4);
    0x000032b6 ldr r2, [r3]                                      |     r2 = *(0x68c4);
    0x000032b8 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000032ba eors r2, r3                                       |     r2 ^= r3;
    0x000032bc mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000032c0 bne.w 0x35d8                                      |         goto label_136;
                                                                 |     }
    0x000032c4 mov r0, r4                                        |     r0 = r4;
    0x000032c6 add sp, 0x34                                      |     
    0x000032c8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_133:
    0x000032cc cmp r0, 2                                         |     
                                                                 |     if (r0 <= 2) {
    0x000032ce ble 0x3256                                        |         goto label_34;
                                                                 |     }
    0x000032d0 ldr r3, [pc, 0x33c]                               |     
    0x000032d2 mov r1, r8                                        |     r1 = r8;
    0x000032d4 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch_3;
    0x000032d6 movs r0, 3                                        |     r0 = 3;
    0x000032d8 add r3, pc                                        |     r3 = 0x68ec;
    0x000032da str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x000032dc ldr r3, [pc, 0x334]                               |     
    0x000032de add r3, pc                                        |     r3 = 0x68f6;
    0x000032e0 str r3, [sp]                                      |     *(sp) = r3;
    0x000032e2 mov.w r3, 0x11c                                   |     r3 = 0x11c;
    0x000032e6 blx 0x16ac                                        |     log_internal ();
    0x000032ea b 0x3256                                          |     goto label_34;
                                                                 | label_127:
    0x000032ec movs r7, 0                                        |     r7 = 0;
                                                                 | label_45:
    0x000032ee ldr r3, [pc, 0x328]                               |     
    0x000032f0 movs r5, 0                                        |     r5 = 0;
    0x000032f2 add r1, sp, 0x24                                  |     r1 += var_24h_3;
    0x000032f4 str r5, [sp, 0x24]                                |     var_24h_3 = r5;
    0x000032f6 add r3, pc                                        |     r3 = 0x6914;
    0x000032f8 ldr r0, [r3]                                      |     r0 = *(0x6914);
    0x000032fa blx 0x1700                                        |     r0 = groupdb_all ();
    0x000032fe subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00003300 blt.w 0x3414                                      |         goto label_137;
                                                                 |     }
    0x00003304 ldr.w sb, [pc, 0x314]                             |     sb = *(0x0000361c);
    0x00003308 add r6, sp, 0x28                                  |     r6 += var_28h;
    0x0000330a ldr r4, [sp, 0x14]                                |     r4 = var_14h_2;
    0x0000330c mov r8, r5                                        |     r8 = r5;
    0x0000330e add sb, pc                                        |     sb += pc;
    0x00003310 b 0x332a                                          |     goto label_138;
                                                                 | label_36:
    0x00003312 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x00003314 mov r1, r7                                        |     r1 = r7;
    0x00003316 bl 0x201c                                         |     r0 = fcn_0000201c (r0, r1);
    0x0000331a cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000331c blt.w 0x34ce                                      |         goto label_139;
                                                                 |     }
    0x00003320 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
                                                                 |     if (r0 != 0) {
    0x00003322 cbz r0, 0x3328                                    |         
    0x00003324 blx 0x16f4                                        |         group_record_unref ();
                                                                 |     }
    0x00003328 movs r5, 1                                        |     r5 = 1;
                                                                 | label_138:
    0x0000332a ldr r0, [sp, 0x24]                                |     r0 = var_24h_3;
    0x0000332c mov r1, r6                                        |     r1 = r6;
    0x0000332e str.w r8, [sp, 0x28]                              |     __asm ("str.w r8, [var_28h]");
    0x00003332 blx 0x1800                                        |     r0 = fcn_00001800 ();
    0x00003336 adds r3, r0, 3                                    |     r3 = r0 + 3;
                                                                 |     if (r3 == r0) {
    0x00003338 beq 0x3286                                        |         goto label_35;
                                                                 |     }
    0x0000333a cmn.w r0, 0x70                                    |     
                                                                 |     if (r0 == 0x70) {
    0x0000333e beq.w 0x349c                                      |         goto label_140;
                                                                 |     }
    0x00003342 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00003344 blt.w 0x34b2                                      |         goto label_141;
                                                                 |     }
    0x00003348 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x0000334a beq 0x3312                                        |         goto label_36;
                                                                 |     }
    0x0000334c ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x00003350 cmp r3, 2                                         |     
                                                                 |     if (r3 != 2) {
    0x00003352 bne 0x3312                                        |         goto label_36;
                                                                 |     }
    0x00003354 ldr r3, [pc, 0x2c8]                               |     r3 = *(0x3620);
    0x00003356 movs r0, 0xa                                      |     r0 = 0xa;
    0x00003358 ldr r3, [r4, r3]                                  |     r3 = *((r4 + r3));
    0x0000335a ldr r1, [r3]                                      |     r1 = *(0x3620);
    0x0000335c blx 0x1724                                        |     putc (r0, r1);
    0x00003360 b 0x3312                                          |     goto label_36;
                                                                 | label_129:
    0x00003362 ldr r2, [sp, 0x14]                                |     r2 = var_14h_2;
    0x00003364 movs r0, 0xa                                      |     r0 = 0xa;
    0x00003366 ldr r3, [pc, 0x2b8]                               |     r3 = *(0x3622);
    0x00003368 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0000336a ldr r1, [r3]                                      |     r1 = *(0x3622);
    0x0000336c blx 0x1724                                        |     putc (r0, r1);
    0x00003370 ldr r0, [sp, 0x24]                                |     r0 = var_24h_3;
    0x00003372 mov r1, r7                                        |     r1 = r7;
    0x00003374 bl 0x201c                                         |     r0 = fcn_0000201c (r0, r1);
    0x00003378 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x0000337a bge.w 0x320c                                      |         goto label_37;
                                                                 |     }
                                                                 | label_130:
    0x0000337e mov r8, r0                                        |     r8 = r0;
    0x00003380 ldr r0, [sp, 0x24]                                |     r0 = var_24h_3;
                                                                 |     if (r0 != 0) {
    0x00003382 cbz r0, 0x3388                                    |         
    0x00003384 blx 0x16f4                                        |         group_record_unref ();
                                                                 |     }
    0x00003388 mov r4, r8                                        |     r4 = r8;
                                                                 | label_41:
    0x0000338a cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x0000338c bne 0x32a8                                        |         goto label_38;
                                                                 |     }
    0x0000338e b 0x32ae                                          |     goto label_39;
                                                                 | label_134:
    0x00003390 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00003392 mov r1, r8                                        |     r1 = r8;
    0x00003394 ldr r2, [sp, 0x18]                                |     r2 = var_18h_2;
    0x00003396 movs r0, 3                                        |     r0 = 3;
    0x00003398 str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x0000339a ldr r3, [pc, 0x288]                               |     
    0x0000339c add r3, pc                                        |     r3 = 0x69c6;
    0x0000339e str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x000033a0 ldr r3, [pc, 0x284]                               |     
    0x000033a2 add r3, pc                                        |     r3 = 0x69ce;
    0x000033a4 str r3, [sp]                                      |     *(sp) = r3;
    0x000033a6 mov.w r3, 0x11e                                   |     r3 = 0x11e;
    0x000033aa blx 0x16ac                                        |     log_internal ();
    0x000033ae b 0x3256                                          |     goto label_34;
                                                                 | label_125:
    0x000033b0 cmp r0, 1                                         |     
    0x000033b2 itt gt                                            |     
                                                                 |     if (r0 <= 1) {
    0x000033b4 movgt r3, 2                                       |         r3 = 2;
                                                                 |     }
                                                                 |     if (r0 > 1) {
    0x000033b6 strgt r3, [r2]                                    |         *(r2) = r3;
                                                                 |         goto label_142;
                                                                 |     }
                                                                 |     if (r0 > 1) {
                                                                 | label_142:
    0x000033b8 bgt.w 0x319c                                      |         goto label_40;
                                                                 |     }
    0x000033bc ldr r1, [pc, 0x26c]                               |     
    0x000033be movs r4, 0                                        |     r4 = 0;
    0x000033c0 movs r5, 1                                        |     r5 = 1;
    0x000033c2 ldr r3, [pc, 0x26c]                               |     
    0x000033c4 str r5, [r2]                                      |     *(r2) = r5;
    0x000033c6 add r1, pc                                        |     r1 = 0x69f6;
    0x000033c8 ldr r2, [pc, 0x268]                               |     
    0x000033ca strd r1, r4, [sp]                                 |     __asm ("strd r1, r4, [sp]");
    0x000033ce add r3, pc                                        |     r3 = 0x6a04;
    0x000033d0 ldr r1, [pc, 0x264]                               |     
    0x000033d2 ldr r0, [pc, 0x268]                               |     
    0x000033d4 add r2, pc                                        |     r2 = 0x6a0c;
    0x000033d6 add r1, pc                                        |     r1 = 0x6a12;
    0x000033d8 add r0, pc                                        |     r0 = 0x6a1a;
    0x000033da blx 0x16b8                                        |     r0 = table_new_internal ();
    0x000033de mov r7, r0                                        |     r7 = r0;
    0x000033e0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000033e2 bne 0x34d2                                        |         goto label_143;
                                                                 |     }
                                                                 | label_46:
    0x000033e4 ldr r2, [pc, 0x258]                               |     
    0x000033e6 ldr r3, [pc, 0x200]                               |     r3 = *(0x35ea);
    0x000033e8 add r2, pc                                        |     r2 = 0x6a2c;
    0x000033ea ldr r3, [r2, r3]                                  |     r3 = *(0x6a2c);
    0x000033ec ldr r2, [r3]                                      |     r2 = *(0x6a2c);
    0x000033ee ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x000033f0 eors r2, r3                                       |     r2 ^= r3;
    0x000033f2 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000033f6 bne.w 0x35d8                                      |         goto label_136;
                                                                 |     }
    0x000033fa ldr r1, [pc, 0x248]                               |     
    0x000033fc movw r2, 0x105                                    |     r2 = 0x105;
    0x00003400 ldr r3, [pc, 0x244]                               |     
    0x00003402 movs r0, 3                                        |     r0 = 3;
    0x00003404 add r1, pc                                        |     r1 = 0x6a4e;
    0x00003406 add r3, pc                                        |     r3 = 0x6a52;
    0x00003408 adds r1, 7                                        |     r1 += 7;
    0x0000340a add sp, 0x34                                      |     
    0x0000340c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x00003410 b.w 0x17cc                                        |     void (*0x17cc)() ();
                                                                 | label_137:
    0x00003414 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00003418 cmp r0, 2                                         |     
    0x0000341a ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x0000341c rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x0000341e uxtble r4, r4                                     |         __asm ("uxtble r4, r4");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00003420 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 > 2) {
    0x00003422 bgt 0x347a                                        |         goto label_144;
                                                                 |     }
                                                                 | label_42:
    0x00003424 cmp r4, 0                                         |     
    0x00003426 it ge                                             |     
                                                                 |     if (r4 < 0) {
    0x00003428 mvnge r4, 0x55                                    |         r4 = ~0x55;
                                                                 |     }
                                                                 | label_43:
    0x0000342c ldr r0, [sp, 0x24]                                |     r0 = var_24h_3;
    0x0000342e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003430 beq 0x338a                                        |         goto label_41;
                                                                 |     }
    0x00003432 blx 0x17dc                                        |     fcn_000017dc ();
    0x00003436 cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x00003438 bne.w 0x32a8                                      |         goto label_38;
                                                                 |     }
    0x0000343c b 0x32ae                                          |     goto label_39;
                                                                 | label_135:
    0x0000343e blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00003442 cmp r0, 2                                         |     
    0x00003444 ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x00003446 rsble r3, r5, 0                                   |         __asm ("rsble r3, r5, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00003448 uxtble r3, r3                                     |         __asm ("uxtble r3, r3");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x0000344a rsble r4, r3, 0                                   |         __asm ("rsble r4, r3, 0");
                                                                 |     }
    0x0000344c bgt 0x3458                                        |     
                                                                 |     while (1) {
    0x0000344e cmp r4, 0                                         |         
    0x00003450 it ge                                             |         
                                                                 |         if (r4 < 0) {
    0x00003452 mvnge r4, 0x55                                    |             r4 = ~0x55;
                                                                 |         }
    0x00003456 b 0x32a8                                          |         goto label_38;
    0x00003458 ldr r2, [pc, 0x1f0]                               |         
    0x0000345a mov r1, r5                                        |         r1 = r5;
    0x0000345c ldr r0, [pc, 0x1f0]                               |         
    0x0000345e ldr r3, [pc, 0x1f4]                               |         
    0x00003460 add r2, pc                                        |         r2 = 0x6ab0;
    0x00003462 add r0, pc                                        |         r0 = 0x6ab6;
    0x00003464 adds r2, 7                                        |         r2 += 7;
    0x00003466 add r3, pc                                        |         r3 = 0x6ac0;
    0x00003468 strd r3, r0, [sp]                                 |         __asm ("strd r3, r0, [sp]");
    0x0000346c movw r3, 0x14f                                    |         r3 = 0x14f;
    0x00003470 movs r0, 3                                        |         r0 = 3;
    0x00003472 blx 0x16ac                                        |         r0 = log_internal ();
    0x00003476 mov r4, r0                                        |         r4 = r0;
    0x00003478 b 0x344e                                          |         
                                                                 |     }
                                                                 | label_144:
    0x0000347a ldr r2, [pc, 0x1dc]                               |     
    0x0000347c mov r1, r4                                        |     r1 = r4;
    0x0000347e ldr r0, [pc, 0x1dc]                               |     
    0x00003480 ldr r3, [pc, 0x1dc]                               |     
    0x00003482 add r2, pc                                        |     r2 = 0x6ae0;
    0x00003484 add r0, pc                                        |     r0 = 0x6ae6;
    0x00003486 adds r2, 7                                        |     r2 += 7;
    0x00003488 add r3, pc                                        |     r3 = 0x6aec;
    0x0000348a strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x0000348e movw r3, 0x133                                    |     r3 = 0x133;
    0x00003492 movs r0, 3                                        |     r0 = 3;
    0x00003494 blx 0x16ac                                        |     r0 = log_internal ();
    0x00003498 mov r4, r0                                        |     r4 = r0;
    0x0000349a b 0x3424                                          |     goto label_42;
                                                                 | label_140:
    0x0000349c mov r4, r0                                        |     r4 = r0;
    0x0000349e blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x000034a2 cmp r0, 2                                         |     
                                                                 |     if (r0 > 2) {
    0x000034a4 bgt 0x3592                                        |         goto label_145;
                                                                 |     }
                                                                 | label_44:
    0x000034a6 ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x000034a8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000034aa beq 0x342c                                        |         goto label_43;
                                                                 |     }
    0x000034ac blx 0x16f4                                        |     group_record_unref ();
    0x000034b0 b 0x342c                                          |     goto label_43;
                                                                 | label_141:
    0x000034b2 mov r4, r0                                        |     r4 = r0;
    0x000034b4 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x000034b8 cmp r0, 2                                         |     
    0x000034ba ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x000034bc rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x000034be uxtble r4, r4                                     |         __asm ("uxtble r4, r4");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x000034c0 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 > 2) {
    0x000034c2 bgt 0x35b6                                        |         goto label_146;
                                                                 |     }
                                                                 | label_50:
    0x000034c4 cmp r4, 0                                         |     
                                                                 |     if (r4 < 0) {
    0x000034c6 blt 0x34a6                                        |         goto label_44;
                                                                 |     }
                                                                 | label_49:
    0x000034c8 mvn r4, 0x55                                      |     r4 = ~0x55;
    0x000034cc b 0x34a6                                          |     goto label_44;
                                                                 | label_139:
    0x000034ce mov r4, r0                                        |     r4 = r0;
    0x000034d0 b 0x34a6                                          |     goto label_44;
                                                                 | label_143:
    0x000034d2 mov r1, r4                                        |     r1 = r4;
    0x000034d4 movs r2, 2                                        |     r2 = 2;
    0x000034d6 blx 0x16dc                                        |     table_get_cell ();
    0x000034da movs r2, 0x64                                     |     r2 = 0x64;
    0x000034dc mov r1, r0                                        |     r1 = r0;
    0x000034de mov r0, r7                                        |     r0 = r7;
    0x000034e0 blx 0x15bc                                        |     table_set_align_percent ();
    0x000034e4 ldr r1, [pc, 0x17c]                               |     
    0x000034e6 mov r0, r7                                        |     r0 = r7;
    0x000034e8 add r1, pc                                        |     r1 = 0x6b50;
    0x000034ea blx 0x1460                                        |     table_set_empty_string ();
    0x000034ee mov.w r3, -1                                      |     r3 = -1;
    0x000034f2 movs r2, 2                                        |     r2 = 2;
    0x000034f4 movs r1, 3                                        |     r1 = 3;
    0x000034f6 mov r0, r7                                        |     r0 = r7;
    0x000034f8 blx 0x14fc                                        |     table_set_sort_internal ();
    0x000034fc mov.w r3, -1                                      |     r3 = -1;
    0x00003500 mov r2, r5                                        |     r2 = r5;
    0x00003502 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x00003504 movs r3, 3                                        |     r3 = 3;
    0x00003506 str r3, [sp]                                      |     *(sp) = r3;
    0x00003508 mov r1, r4                                        |     r1 = r4;
    0x0000350a movs r3, 2                                        |     r3 = 2;
    0x0000350c mov r0, r7                                        |     r0 = r7;
    0x0000350e blx 0x16e8                                        |     table_set_display_internal ();
    0x00003512 b 0x32ee                                          |     goto label_45;
                                                                 | label_126:
    0x00003514 ldr r3, [pc, 0x150]                               |     
    0x00003516 mov.w r8, 0                                       |     r8 = 0;
    0x0000351a ldr r2, [pc, 0x150]                               |     
    0x0000351c ldr r1, [pc, 0x150]                               |     
    0x0000351e add r3, pc                                        |     r3 = 0x6b8a;
    0x00003520 ldr r0, [pc, 0x150]                               |     
    0x00003522 str r3, [sp]                                      |     *(sp) = r3;
    0x00003524 add r2, pc                                        |     r2 = 0x6b96;
    0x00003526 ldr r3, [pc, 0x150]                               |     
    0x00003528 add r1, pc                                        |     r1 = 0x6b9c;
    0x0000352a add r0, pc                                        |     r0 = 0x6ba2;
    0x0000352c str.w r8, [sp, 4]                                 |     __asm ("str.w r8, [var_4h_2]");
    0x00003530 add r3, pc                                        |     r3 = 0x6bae;
    0x00003532 blx 0x16b8                                        |     r0 = table_new_internal ();
    0x00003536 mov r7, r0                                        |     r7 = r0;
    0x00003538 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000353a beq.w 0x33e4                                      |         goto label_46;
                                                                 |     }
    0x0000353e movs r2, 2                                        |     r2 = 2;
    0x00003540 mov r1, r8                                        |     r1 = r8;
    0x00003542 blx 0x16dc                                        |     table_get_cell ();
    0x00003546 movs r2, 0x64                                     |     r2 = 0x64;
    0x00003548 mov r1, r0                                        |     r1 = r0;
    0x0000354a mov r0, r7                                        |     r0 = r7;
    0x0000354c blx 0x15bc                                        |     table_set_align_percent ();
    0x00003550 ldr r1, [pc, 0x128]                               |     
    0x00003552 mov r0, r7                                        |     r0 = r7;
    0x00003554 add r1, pc                                        |     r1 = 0x6bd4;
    0x00003556 blx 0x1460                                        |     table_set_empty_string ();
    0x0000355a mov.w r3, -1                                      |     r3 = -1;
    0x0000355e movs r2, 2                                        |     r2 = 2;
    0x00003560 movs r1, 3                                        |     r1 = 3;
    0x00003562 mov r0, r7                                        |     r0 = r7;
    0x00003564 blx 0x14fc                                        |     table_set_sort_internal ();
    0x00003568 movs r3, 3                                        |     r3 = 3;
    0x0000356a mov.w r0, -1                                      |     r0 = -1;
    0x0000356e strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x00003572 mov r2, r6                                        |     r2 = r6;
    0x00003574 mov r1, r8                                        |     r1 = r8;
    0x00003576 movs r3, 2                                        |     r3 = 2;
    0x00003578 mov r0, r7                                        |     r0 = r7;
    0x0000357a blx 0x16e8                                        |     table_set_display_internal ();
    0x0000357e cmp r4, 1                                         |     
                                                                 |     if (r4 <= 1) {
    0x00003580 ble.w 0x32ee                                      |         goto label_45;
                                                                 |     }
    0x00003584 ldr r0, [r5, 4]                                   |     r0 = *((r5 + 4));
    0x00003586 adds r5, 4                                        |     r5 += 4;
    0x00003588 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000358a bne.w 0x31aa                                      |         goto label_47;
                                                                 |     }
    0x0000358e mov r4, r0                                        |     r4 = r0;
    0x00003590 b 0x329a                                          |     goto label_48;
                                                                 | label_145:
    0x00003592 ldr r2, [pc, 0xec]                                |     
    0x00003594 mov r1, r4                                        |     r1 = r4;
    0x00003596 ldr r0, [pc, 0xec]                                |     
    0x00003598 ldr r3, [pc, 0xec]                                |     
    0x0000359a add r2, pc                                        |     r2 = 0x6c20;
    0x0000359c add r0, pc                                        |     r0 = 0x6c26;
    0x0000359e adds r2, 7                                        |     r2 += 7;
    0x000035a0 add r3, pc                                        |     r3 = 0x6c2c;
    0x000035a2 strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x000035a6 mov.w r3, 0x13c                                   |     r3 = 0x13c;
    0x000035aa movs r0, 3                                        |     r0 = 3;
    0x000035ac blx 0x16ac                                        |     r0 = log_internal ();
    0x000035b0 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x000035b2 bge 0x34c8                                        |         goto label_49;
                                                                 |     }
    0x000035b4 b 0x34a6                                          |     goto label_44;
                                                                 | label_146:
    0x000035b6 ldr r2, [pc, 0xd4]                                |     
    0x000035b8 mov r1, r4                                        |     r1 = r4;
    0x000035ba ldr r0, [pc, 0xd4]                                |     
    0x000035bc ldr r3, [pc, 0xd4]                                |     
    0x000035be add r2, pc                                        |     r2 = 0x6c50;
    0x000035c0 add r0, pc                                        |     r0 = 0x6c56;
    0x000035c2 adds r2, 7                                        |     r2 += 7;
    0x000035c4 add r3, pc                                        |     r3 = 0x6c5c;
    0x000035c6 strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x000035ca mov.w r3, 0x13e                                   |     r3 = 0x13e;
    0x000035ce movs r0, 3                                        |     r0 = 3;
    0x000035d0 blx 0x16ac                                        |     r0 = log_internal ();
    0x000035d4 mov r4, r0                                        |     r4 = r0;
    0x000035d6 b 0x34c4                                          |     goto label_50;
                                                                 | label_136:
    0x000035d8 blx 0x16a0                                        |     stack_chk_fail ();
    0x000035dc subs r4, r2, 2                                    |     r4 = r2 - 2;
    0x000035de movs r1, r0                                       |     r1 = r0;
    0x000035e0 adds r4, r4, 3                                    |     r4 += 3;
    0x000035e2 movs r1, r0                                       |     r1 = r0;
    0x000035e4 adds r0, r4, 3                                    |     r0 = r4 + 3;
    0x000035e6 movs r1, r0                                       |     r1 = r0;
    0x000035e8 lsls r4, r7, 5                                    |     r4 = r7 << 5;
    0x000035ea movs r0, r0                                       |     
    0x000035ec lsrs r4, r6, 0xa                                  |     r4 = r6 >> 0xa;
    0x000035ee movs r0, r0                                       |     
    0x000035f0 subs r6, r2, 1                                    |     r6 = r2 - 1;
    0x000035f2 movs r1, r0                                       |     r1 = r0;
    0x000035f4 lsrs r6, r4, 0xa                                  |     r6 = r4 >> 0xa;
    0x000035f6 movs r0, r0                                       |     
    0x000035f8 subs r4, r0, 1                                    |     r4 = r0 - 1;
    0x000035fa movs r1, r0                                       |     r1 = r0;
    0x000035fc subs r4, r1, 0                                    |     r4 = r1 - 0;
    0x000035fe movs r1, r0                                       |     r1 = r0;
    0x00003600 lsrs r2, r0, 8                                    |     r2 = r0 >> 8;
    0x00003602 movs r0, r0                                       |     
    0x00003604 asrs r6, r3, 0xf                                  |     r6 = r3 >> 0xf;
    0x00003606 movs r0, r0                                       |     
    0x00003608 asrs r0, r7, 0x1d                                 |     r0 = r7 >> 0x1d;
    0x0000360a movs r0, r0                                       |     
    0x0000360c subs r2, r5, r6                                   |     r2 = r5 - r6;
    0x0000360e movs r1, r0                                       |     r1 = r0;
    0x00003610 asrs r4, r2, 0xe                                  |     r4 = r2 >> 0xe;
    0x00003612 movs r0, r0                                       |     
    0x00003614 asrs r2, r2, 0x1c                                 |     r2 >>= 0x1c;
    0x00003616 movs r0, r0                                       |     
    0x00003618 adds r2, r4, 4                                    |     r2 = r4 + 4;
    0x0000361a movs r1, r0                                       |     r1 = r0;
    0x0000361c adds r2, r6, 3                                    |     r2 = r6 + 3;
    0x0000361e movs r1, r0                                       |     r1 = r0;
    0x00003620 lsls r4, r1, 6                                    |     r4 = r1 << 6;
    0x00003622 movs r0, r0                                       |     
    0x00003624 asrs r4, r2, 0xc                                  |     r4 = r2 >> 0xc;
    0x00003626 movs r0, r0                                       |     
    0x00003628 asrs r6, r1, 0x19                                 |     r6 = r1 >> 0x19;
    0x0000362a movs r0, r0                                       |     
    0x0000362c asrs r2, r6, 9                                    |     r2 = r6 >> 9;
    0x0000362e movs r0, r0                                       |     
    0x00003630 asrs r6, r1, 9                                    |     r6 = r1 >> 9;
    0x00003632 movs r0, r0                                       |     
    0x00003634 asrs r4, r2, 9                                    |     r4 = r2 >> 9;
    0x00003636 movs r0, r0                                       |     
    0x00003638 asrs r6, r2, 9                                    |     r6 = r2 >> 9;
    0x0000363a movs r0, r0                                       |     
    0x0000363c asrs r4, r1, 0xd                                  |     r4 = r1 >> 0xd;
    0x0000363e movs r0, r0                                       |     
    0x00003640 subs r4, r6, r1                                   |     r4 = r6 - r1;
    0x00003642 movs r1, r0                                       |     r1 = r0;
    0x00003644 lsrs r4, r5, 1                                    |     r4 = r5 >> 1;
    0x00003646 movs r0, r0                                       |     
    0x00003648 asrs r2, r5, 0x17                                 |     r2 = r5 >> 0x17;
    0x0000364a movs r0, r0                                       |     
    0x0000364c lsrs r0, r2, 0x20                                 |     r0 = r2 >> 0x20;
    0x0000364e movs r0, r0                                       |     
    0x00003650 asrs r6, r3, 6                                    |     r6 = r3 >> 6;
    0x00003652 movs r0, r0                                       |     
    0x00003654 asrs r2, r1, 0x16                                 |     r2 = r1 >> 0x16;
    0x00003656 movs r0, r0                                       |     
    0x00003658 lsls r6, r5, 0x1f                                 |     r6 = r5 << 0x1f;
    0x0000365a movs r0, r0                                       |     
    0x0000365c asrs r0, r1, 9                                    |     r0 = r1 >> 9;
    0x0000365e movs r0, r0                                       |     
    0x00003660 asrs r0, r5, 0x15                                 |     r0 = r5 >> 0x15;
    0x00003662 movs r0, r0                                       |     
    0x00003664 asrs r4, r4, 5                                    |     r4 >>= 5;
    0x00003666 movs r0, r0                                       |     
    0x00003668 asrs r2, r3, 4                                    |     r2 = r3 >> 4;
    0x0000366a movs r0, r0                                       |     
    0x0000366c asrs r4, r0, 4                                    |     r4 = r0 >> 4;
    0x0000366e movs r0, r0                                       |     
    0x00003670 asrs r4, r0, 4                                    |     r4 = r0 >> 4;
    0x00003672 movs r0, r0                                       |     
    0x00003674 asrs r2, r7, 7                                    |     r2 = r7 >> 7;
    0x00003676 movs r0, r0                                       |     
    0x00003678 asrs r4, r5, 3                                    |     r4 = r5 >> 3;
    0x0000367a movs r0, r0                                       |     
    0x0000367c asrs r0, r7, 3                                    |     r0 = r7 >> 3;
    0x0000367e movs r0, r0                                       |     
    0x00003680 lsls r6, r2, 0x1b                                 |     r6 = r2 << 0x1b;
    0x00003682 movs r0, r0                                       |     
    0x00003684 asrs r0, r2, 3                                    |     r0 = r2 >> 3;
    0x00003686 movs r0, r0                                       |     
    0x00003688 asrs r0, r2, 0x11                                 |     r0 = r2 >> 0x11;
    0x0000368a movs r0, r0                                       |     
    0x0000368c lsls r2, r6, 0x1a                                 |     r2 = r6 << 0x1a;
    0x0000368e movs r0, r0                                       |     
    0x00003690 asrs r4, r5, 4                                    |     r4 = r5 >> 4;
    0x00003692 movs r0, r0                                       |     
    0x00003694 asrs r4, r5, 0x10                                 |     r4 = r5 >> 0x10;
    0x00003696 movs r0, r0                                       |     
    0x00003698 ldr.w r3, [pc, 0x4d8]                             |     r3 = *(0x00003b74);
    0x0000369c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000036a0 mov r5, r1                                        |     r5 = r1;
    0x000036a2 ldr.w r7, [pc, 0x4d4]                             |     r7 = *(0x00003b78);
    0x000036a6 sub sp, 0x3c                                      |     
    0x000036a8 add r3, pc                                        |     r3 += pc;
    0x000036aa mov r4, r0                                        |     r4 = r0;
    0x000036ac ldr.w r1, [pc, 0x4cc]                             |     r1 = *(0x00003b7c);
    0x000036b0 ldr.w r2, [pc, 0x4cc]                             |     
    0x000036b4 add r7, pc                                        |     r7 += pc;
    0x000036b6 ldr r6, [r3]                                      |     r6 = *(r3);
    0x000036b8 add r1, pc                                        |     r1 += pc;
    0x000036ba str r7, [sp, 0x1c]                                |     var_1ch_2 = r7;
    0x000036bc ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x000036be cmp r6, 0                                         |     
    0x000036c0 ldr r2, [r2]                                      |     r2 = *(0x3b80);
    0x000036c2 str r2, [sp, 0x34]                                |     var_34h = r2;
    0x000036c4 mov.w r2, 0                                       |     r2 = 0;
                                                                 |     if (r6 < 0) {
    0x000036c8 blt.w 0x38e6                                      |         goto label_147;
                                                                 |     }
    0x000036cc cmp r6, 1                                         |     
                                                                 |     if (r6 == 1) {
    0x000036ce beq.w 0x3a7a                                      |         goto label_148;
                                                                 |     }
    0x000036d2 cmp r0, 1                                         |     
                                                                 |     if (r0 <= 1) {
    0x000036d4 ble.w 0x3824                                      |         goto label_149;
                                                                 |     }
                                                                 | label_59:
    0x000036d8 ldr r0, [r5, 4]                                   |     r0 = *((r5 + 4));
    0x000036da adds r5, 4                                        |     r5 += 4;
    0x000036dc mov r4, r0                                        |     r4 = r0;
    0x000036de cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000036e0 beq.w 0x37e8                                      |         goto label_58;
                                                                 |     }
    0x000036e4 movs r7, 0                                        |     r7 = 0;
                                                                 | label_66:
    0x000036e6 ldr.w r3, [pc, 0x49c]                             |     
    0x000036ea add r6, sp, 0x30                                  |     r6 += var_30h;
    0x000036ec ldr.w sl, [pc, 0x498]                             |     sl = *(0x00003b88);
    0x000036f0 movs r4, 0                                        |     r4 = 0;
    0x000036f2 mov fp, r6                                        |     
    0x000036f4 add.w sb, sp, 0x2c                                |     sb += var_2ch_2;
    0x000036f8 add r3, pc                                        |     r3 = 0x7282;
    0x000036fa mov r6, r4                                        |     r6 = r4;
    0x000036fc adds r3, 7                                        |     r3 += 7;
    0x000036fe add sl, pc                                        |     sl += pc;
    0x00003700 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00003702 ldr.w r3, [pc, 0x488]                             |     
    0x00003706 add r3, pc                                        |     
    0x00003708 adds r3, 7                                        |     r3 += 7;
    0x0000370a str r3, [sp, 0x24]                                |     var_24h_2 = r3;
    0x0000370c ldr.w r3, [pc, 0x480]                             |     r3 = *(0x00003b90);
    0x00003710 add r3, pc                                        |     r3 = 0xa9ac;
    0x00003712 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00003714 b 0x375a                                          |     
                                                                 |     while (r0 >= 0) {
    0x00003716 ldr.w r1, [sl]                                    |         r1 = *(sl);
    0x0000371a mov r2, sb                                        |         r2 = sb;
    0x0000371c ldr r0, [sp, 0x30]                                |         r0 = var_30h;
    0x0000371e blx 0x140c                                        |         r0 = userdb_by_uid ();
    0x00003722 mov r8, r0                                        |         r8 = r0;
    0x00003724 cmp.w r8, 0                                       |         
                                                                 |         if (r8 < 0) {
    0x00003728 blt 0x377c                                        |             goto label_150;
                                                                 |         }
                                                                 |         if (r6 != 0) {
                                                                 | label_51:
    0x0000372a cbz r6, 0x373a                                    |             
    0x0000372c ldr.w r3, [pc, 0x464]                             |             r3 = *(0x00003b94);
    0x00003730 add r3, pc                                        |             r3 += pc;
    0x00003732 ldr r3, [r3]                                      |             r3 = *(r3);
    0x00003734 cmp r3, 2                                         |             
                                                                 |             if (r3 == 2) {
    0x00003736 beq.w 0x389a                                      |                 goto label_151;
                                                                 |             }
                                                                 |         }
    0x0000373a ldr r0, [sp, 0x2c]                                |         r0 = var_2ch_2;
    0x0000373c mov r1, r7                                        |         r1 = r7;
    0x0000373e bl 0x2214                                         |         r0 = fcn_00002214 (r0, r1);
    0x00003742 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00003744 blt.w 0x38b6                                      |             goto label_152;
                                                                 |         }
                                                                 | label_56:
    0x00003748 movs r6, 1                                        |         r6 = 1;
                                                                 | label_52:
    0x0000374a ldr r0, [sp, 0x2c]                                |         r0 = var_2ch_2;
                                                                 |         if (r0 != 0) {
    0x0000374c cbz r0, 0x3752                                    |             
    0x0000374e blx 0x167c                                        |             user_record_unref ();
                                                                 |         }
    0x00003752 ldr r0, [r5, 4]!                                  |         r0 = *((r5 += 4));
    0x00003756 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003758 beq 0x37d2                                        |             goto label_153;
                                                                 |         }
    0x0000375a movs r3, 0                                        |         r3 = 0;
    0x0000375c mov r1, fp                                        |         r1 = fp;
    0x0000375e str r3, [sp, 0x2c]                                |         var_2ch_2 = r3;
    0x00003760 blx 0x16c4                                        |         r0 = parse_uid ();
    0x00003764 cmp r0, 0                                         |         
    0x00003766 bge 0x3716                                        |         
                                                                 |     }
    0x00003768 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x0000376a mov r2, sb                                        |     r2 = sb;
    0x0000376c ldr r0, [r5]                                      |     r0 = *(r5);
    0x0000376e ldr r1, [r3]                                      |     r1 = *(r3);
    0x00003770 blx 0x1730                                        |     r0 = userdb_by_name ();
    0x00003774 mov r8, r0                                        |     r8 = r0;
    0x00003776 cmp.w r8, 0                                       |     
                                                                 |     if (r8 >= 0) {
    0x0000377a bge 0x372a                                        |         goto label_51;
                                                                 |     }
                                                                 | label_150:
    0x0000377c blx 0x14a8                                        |     log_get_max_level ();
    0x00003780 cmn.w r8, 3                                       |     
                                                                 |     if (r8 == 3) {
    0x00003784 beq 0x379a                                        |         goto label_154;
                                                                 |     }
    0x00003786 cmn.w r8, 0x70                                    |     
                                                                 |     if (r8 == 0x70) {
    0x0000378a beq 0x3806                                        |         goto label_155;
                                                                 |     }
    0x0000378c cmp r0, 2                                         |     
                                                                 |     if (r0 > 2) {
    0x0000378e bgt.w 0x38c8                                      |         goto label_156;
                                                                 |     }
                                                                 |     do {
                                                                 | label_53:
    0x00003792 cmp r4, 0                                         |         
    0x00003794 it eq                                             |         
                                                                 |         if (r4 != 0) {
    0x00003796 moveq r4, r8                                      |             r4 = r8;
                                                                 |         }
    0x00003798 b 0x374a                                          |         goto label_52;
                                                                 | label_154:
    0x0000379a cmp r0, 2                                         |         
    0x0000379c ble 0x3792                                        |         
                                                                 |     } while (r0 <= 2);
    0x0000379e ldr r3, [r5]                                      |     r3 = *(r5);
    0x000037a0 mov r1, r8                                        |     r1 = r8;
    0x000037a2 ldr r2, [pc, 0x3f4]                               |     
    0x000037a4 movs r0, 3                                        |     r0 = 3;
    0x000037a6 str r3, [sp, 8]                                   |     var_8h = r3;
    0x000037a8 ldr r3, [pc, 0x3f0]                               |     
    0x000037aa add r2, pc                                        |     r2 = 0x7348;
    0x000037ac adds r2, 7                                        |     r2 += 7;
    0x000037ae add r3, pc                                        |     r3 = 0x734e;
    0x000037b0 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000037b2 ldr r3, [pc, 0x3ec]                               |     
    0x000037b4 add r3, pc                                        |     r3 = 0x735a;
    0x000037b6 str r3, [sp]                                      |     *(sp) = r3;
    0x000037b8 movs r3, 0x84                                     |     r3 = 0x84;
    0x000037ba blx 0x16ac                                        |     log_internal ();
    0x000037be b 0x3792                                          |     goto label_53;
                                                                 | label_54:
    0x000037c0 ldr r0, [sp, 0x30]                                |     r0 = var_30h;
                                                                 |     if (r0 != 0) {
    0x000037c2 cbz r0, 0x37c8                                    |         
    0x000037c4 blx 0x167c                                        |         user_record_unref ();
                                                                 |     }
    0x000037c8 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch_2;
                                                                 |     if (r0 != 0) {
    0x000037ca cbz r0, 0x37d0                                    |         
    0x000037cc blx 0x17dc                                        |         fcn_000017dc ();
                                                                 |     }
    0x000037d0 movs r4, 0                                        |     r4 = 0;
                                                                 |     if (r7 != 0) {
                                                                 | label_153:
    0x000037d2 cbz r7, 0x37e8                                    |         
                                                                 | label_67:
    0x000037d4 movs r1, 0                                        |         r1 = 0;
    0x000037d6 mov r0, r7                                        |         r0 = r7;
    0x000037d8 blx 0x1454                                        |         r0 = table_print ();
    0x000037dc subs r5, r0, 0                                    |         r5 = r0 - 0;
                                                                 |         if (r5 < r0) {
    0x000037de blt.w 0x3984                                      |             goto label_157;
                                                                 |         }
                                                                 | label_57:
    0x000037e2 mov r0, r7                                        |         r0 = r7;
    0x000037e4 blx 0x1520                                        |         table_unref ();
                                                                 |     }
                                                                 | label_58:
    0x000037e8 ldr r2, [pc, 0x3b8]                               |     
    0x000037ea ldr r3, [pc, 0x394]                               |     r3 = *(0x3b82);
    0x000037ec add r2, pc                                        |     r2 = 0x7394;
    0x000037ee ldr r3, [r2, r3]                                  |     r3 = *(0x7394);
    0x000037f0 ldr r2, [r3]                                      |     r2 = *(0x7394);
    0x000037f2 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x000037f4 eors r2, r3                                       |     r2 ^= r3;
    0x000037f6 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000037fa bne.w 0x3b6e                                      |         goto label_158;
                                                                 |     }
    0x000037fe mov r0, r4                                        |     r0 = r4;
    0x00003800 add sp, 0x3c                                      |     
    0x00003802 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_155:
    0x00003806 cmp r0, 2                                         |     
                                                                 |     if (r0 <= 2) {
    0x00003808 ble 0x3792                                        |         goto label_53;
                                                                 |     }
    0x0000380a ldr r3, [pc, 0x39c]                               |     
    0x0000380c mov r1, r8                                        |     r1 = r8;
    0x0000380e ldr r2, [sp, 0x24]                                |     r2 = var_24h_2;
    0x00003810 movs r0, 3                                        |     r0 = 3;
    0x00003812 add r3, pc                                        |     r3 = 0x73c0;
    0x00003814 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00003816 ldr r3, [pc, 0x394]                               |     
    0x00003818 add r3, pc                                        |     r3 = 0x73ca;
    0x0000381a str r3, [sp]                                      |     *(sp) = r3;
    0x0000381c movs r3, 0x86                                     |     r3 = 0x86;
    0x0000381e blx 0x16ac                                        |     log_internal ();
    0x00003822 b 0x3792                                          |     goto label_53;
                                                                 | label_149:
    0x00003824 movs r7, 0                                        |     r7 = 0;
                                                                 | label_64:
    0x00003826 ldr r3, [pc, 0x388]                               |     
    0x00003828 movs r5, 0                                        |     r5 = 0;
    0x0000382a add r1, sp, 0x2c                                  |     r1 += var_2ch_2;
    0x0000382c str r5, [sp, 0x2c]                                |     var_2ch_2 = r5;
    0x0000382e add r3, pc                                        |     r3 = 0x73e4;
    0x00003830 ldr r0, [r3]                                      |     r0 = *(0x73e4);
    0x00003832 blx 0x15b0                                        |     r0 = userdb_all ();
    0x00003836 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00003838 blt.w 0x395a                                      |         goto label_159;
                                                                 |     }
    0x0000383c ldr.w sb, [pc, 0x374]                             |     sb = *(0x00003bb4);
    0x00003840 add r6, sp, 0x30                                  |     r6 += var_30h;
    0x00003842 ldr r4, [sp, 0x1c]                                |     r4 = var_1ch_2;
    0x00003844 mov r8, r5                                        |     r8 = r5;
    0x00003846 add sb, pc                                        |     sb += pc;
    0x00003848 b 0x3862                                          |     goto label_160;
                                                                 | label_55:
    0x0000384a ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x0000384c mov r1, r7                                        |     r1 = r7;
    0x0000384e bl 0x2214                                         |     r0 = fcn_00002214 (r0, r1);
    0x00003852 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00003854 blt.w 0x3a14                                      |         goto label_161;
                                                                 |     }
    0x00003858 ldr r0, [sp, 0x30]                                |     r0 = var_30h;
                                                                 |     if (r0 != 0) {
    0x0000385a cbz r0, 0x3860                                    |         
    0x0000385c blx 0x167c                                        |         user_record_unref ();
                                                                 |     }
    0x00003860 movs r5, 1                                        |     r5 = 1;
                                                                 | label_160:
    0x00003862 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch_2;
    0x00003864 mov r1, r6                                        |     r1 = r6;
    0x00003866 str.w r8, [sp, 0x30]                              |     __asm ("str.w r8, [var_30h]");
    0x0000386a blx 0x13e8                                        |     r0 = userdb_iterator_get ();
    0x0000386e adds r3, r0, 3                                    |     r3 = r0 + 3;
                                                                 |     if (r3 == r0) {
    0x00003870 beq 0x37c0                                        |         goto label_54;
                                                                 |     }
    0x00003872 cmn.w r0, 0x70                                    |     
                                                                 |     if (r0 == 0x70) {
    0x00003876 beq.w 0x39de                                      |         goto label_162;
                                                                 |     }
    0x0000387a cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0000387c blt.w 0x39f6                                      |         goto label_163;
                                                                 |     }
    0x00003880 cmp r5, 0                                         |     
                                                                 |     if (r5 == 0) {
    0x00003882 beq 0x384a                                        |         goto label_55;
                                                                 |     }
    0x00003884 ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x00003888 cmp r3, 2                                         |     
                                                                 |     if (r3 != 2) {
    0x0000388a bne 0x384a                                        |         goto label_55;
                                                                 |     }
    0x0000388c ldr r3, [pc, 0x328]                               |     r3 = *(0x3bb8);
    0x0000388e movs r0, 0xa                                      |     r0 = 0xa;
    0x00003890 ldr r3, [r4, r3]                                  |     r3 = *((r4 + r3));
    0x00003892 ldr r1, [r3]                                      |     r1 = *(0x3bb8);
    0x00003894 blx 0x1724                                        |     putc (r0, r1);
    0x00003898 b 0x384a                                          |     goto label_55;
                                                                 | label_151:
    0x0000389a ldr r2, [sp, 0x1c]                                |     r2 = var_1ch_2;
    0x0000389c movs r0, 0xa                                      |     r0 = 0xa;
    0x0000389e ldr r3, [pc, 0x318]                               |     r3 = *(0x3bba);
    0x000038a0 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000038a2 ldr r1, [r3]                                      |     r1 = *(0x3bba);
    0x000038a4 blx 0x1724                                        |     putc (r0, r1);
    0x000038a8 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch_2;
    0x000038aa mov r1, r7                                        |     r1 = r7;
    0x000038ac bl 0x2214                                         |     r0 = fcn_00002214 (r0, r1);
    0x000038b0 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x000038b2 bge.w 0x3748                                      |         goto label_56;
                                                                 |     }
                                                                 | label_152:
    0x000038b6 mov r8, r0                                        |     r8 = r0;
    0x000038b8 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch_2;
                                                                 |     if (r0 != 0) {
    0x000038ba cbz r0, 0x38c0                                    |         
    0x000038bc blx 0x167c                                        |         user_record_unref ();
                                                                 |     }
    0x000038c0 mov r4, r8                                        |     r4 = r8;
                                                                 | label_60:
    0x000038c2 cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x000038c4 bne 0x37e2                                        |         goto label_57;
                                                                 |     }
    0x000038c6 b 0x37e8                                          |     goto label_58;
                                                                 | label_156:
    0x000038c8 ldr r3, [r5]                                      |     r3 = *(r5);
    0x000038ca mov r1, r8                                        |     r1 = r8;
    0x000038cc ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x000038ce movs r0, 3                                        |     r0 = 3;
    0x000038d0 str r3, [sp, 8]                                   |     var_8h = r3;
    0x000038d2 ldr r3, [pc, 0x2e8]                               |     
    0x000038d4 add r3, pc                                        |     r3 = 0x7496;
    0x000038d6 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000038d8 ldr r3, [pc, 0x2e4]                               |     
    0x000038da add r3, pc                                        |     r3 = 0x749e;
    0x000038dc str r3, [sp]                                      |     *(sp) = r3;
    0x000038de movs r3, 0x88                                     |     r3 = 0x88;
    0x000038e0 blx 0x16ac                                        |     log_internal ();
    0x000038e4 b 0x3792                                          |     goto label_53;
                                                                 | label_147:
    0x000038e6 cmp r0, 1                                         |     
    0x000038e8 itt gt                                            |     
                                                                 |     if (r0 <= 1) {
    0x000038ea movgt r2, 2                                       |         r2 = 2;
                                                                 |     }
                                                                 |     if (r0 > 1) {
    0x000038ec strgt r2, [r3]                                    |         *(r3) = r2;
                                                                 |         goto label_164;
                                                                 |     }
                                                                 |     if (r0 > 1) {
                                                                 | label_164:
    0x000038ee bgt.w 0x36d8                                      |         goto label_59;
                                                                 |     }
    0x000038f2 ldr r0, [pc, 0x2d0]                               |     
    0x000038f4 movs r5, 1                                        |     r5 = 1;
    0x000038f6 ldr r1, [pc, 0x2d0]                               |     
    0x000038f8 movs r4, 0                                        |     r4 = 0;
    0x000038fa ldr r2, [pc, 0x2d0]                               |     
    0x000038fc add r0, pc                                        |     r0 = 0x74c6;
    0x000038fe str r0, [sp, 0xc]                                 |     var_ch = r0;
    0x00003900 add r1, pc                                        |     r1 = 0x74ce;
    0x00003902 str r5, [r3]                                      |     *(r3) = r5;
    0x00003904 add r2, pc                                        |     r2 = 0x74d6;
    0x00003906 ldr r3, [pc, 0x2c8]                               |     
    0x00003908 str r1, [sp, 8]                                   |     var_8h = r1;
    0x0000390a ldr r0, [pc, 0x2c8]                               |     
    0x0000390c add r3, pc                                        |     r3 = 0x74e2;
    0x0000390e ldr r1, [pc, 0x2c8]                               |     
    0x00003910 strd r3, r2, [sp]                                 |     __asm ("strd r3, r2, [sp]");
    0x00003914 ldr r3, [pc, 0x2c4]                               |     
    0x00003916 add r0, pc                                        |     r0 = 0x74f0;
    0x00003918 ldr r2, [pc, 0x2c4]                               |     
    0x0000391a add r1, pc                                        |     r1 = 0x74f8;
    0x0000391c str r4, [sp, 0x10]                                |     var_10h_2 = r4;
    0x0000391e add r3, pc                                        |     r3 = 0x74fe;
    0x00003920 add r2, pc                                        |     r2 = 0x7504;
    0x00003922 blx 0x16b8                                        |     r0 = table_new_internal ();
    0x00003926 mov r7, r0                                        |     r7 = r0;
    0x00003928 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000392a bne 0x3a18                                        |         goto label_165;
                                                                 |     }
                                                                 | label_65:
    0x0000392c ldr r2, [pc, 0x2b4]                               |     
    0x0000392e ldr r3, [pc, 0x250]                               |     r3 = *(0x3b82);
    0x00003930 add r2, pc                                        |     r2 = 0x7518;
    0x00003932 ldr r3, [r2, r3]                                  |     r3 = *(0x7518);
    0x00003934 ldr r2, [r3]                                      |     r2 = *(0x7518);
    0x00003936 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00003938 eors r2, r3                                       |     r2 ^= r3;
    0x0000393a mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0000393e bne.w 0x3b6e                                      |         goto label_158;
                                                                 |     }
    0x00003942 ldr r1, [pc, 0x2a4]                               |     
    0x00003944 movs r2, 0x6e                                     |     r2 = 0x6e;
    0x00003946 ldr r3, [pc, 0x2a4]                               |     
    0x00003948 movs r0, 3                                        |     r0 = 3;
    0x0000394a add r1, pc                                        |     r1 = 0x7538;
    0x0000394c add r3, pc                                        |     r3 = 0x753e;
    0x0000394e adds r1, 7                                        |     r1 += 7;
    0x00003950 add sp, 0x3c                                      |     
    0x00003952 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x00003956 b.w 0x17cc                                        |     void (*0x17cc)() ();
                                                                 | label_159:
    0x0000395a blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x0000395e cmp r0, 2                                         |     
    0x00003960 ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x00003962 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00003964 uxtble r4, r4                                     |         __asm ("uxtble r4, r4");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00003966 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 > 2) {
    0x00003968 bgt 0x39be                                        |         goto label_166;
                                                                 |     }
                                                                 | label_61:
    0x0000396a cmp r4, 0                                         |     
    0x0000396c it ge                                             |     
                                                                 |     if (r4 < 0) {
    0x0000396e mvnge r4, 0x55                                    |         r4 = ~0x55;
                                                                 |     }
                                                                 | label_62:
    0x00003972 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch_2;
    0x00003974 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003976 beq 0x38c2                                        |         goto label_60;
                                                                 |     }
    0x00003978 blx 0x17dc                                        |     fcn_000017dc ();
    0x0000397c cmp r7, 0                                         |     
                                                                 |     if (r7 != 0) {
    0x0000397e bne.w 0x37e2                                      |         goto label_57;
                                                                 |     }
    0x00003982 b 0x37e8                                          |     goto label_58;
                                                                 | label_157:
    0x00003984 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x00003988 cmp r0, 2                                         |     
    0x0000398a ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x0000398c rsble r3, r5, 0                                   |         __asm ("rsble r3, r5, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x0000398e uxtble r3, r3                                     |         __asm ("uxtble r3, r3");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00003990 rsble r4, r3, 0                                   |         __asm ("rsble r4, r3, 0");
                                                                 |     }
    0x00003992 bgt 0x399e                                        |     
                                                                 |     while (1) {
    0x00003994 cmp r4, 0                                         |         
    0x00003996 it ge                                             |         
                                                                 |         if (r4 < 0) {
    0x00003998 mvnge r4, 0x55                                    |             r4 = ~0x55;
                                                                 |         }
    0x0000399c b 0x37e2                                          |         goto label_57;
    0x0000399e ldr r2, [pc, 0x250]                               |         
    0x000039a0 mov r1, r5                                        |         r1 = r5;
    0x000039a2 ldr r0, [pc, 0x250]                               |         
    0x000039a4 ldr r3, [pc, 0x250]                               |         
    0x000039a6 add r2, pc                                        |         r2 = 0x759c;
    0x000039a8 add r0, pc                                        |         r0 = 0x75a2;
    0x000039aa adds r2, 7                                        |         r2 += 7;
    0x000039ac add r3, pc                                        |         r3 = 0x75a8;
    0x000039ae strd r3, r0, [sp]                                 |         __asm ("strd r3, r0, [sp]");
    0x000039b2 movs r3, 0xb7                                     |         r3 = 0xb7;
    0x000039b4 movs r0, 3                                        |         r0 = 3;
    0x000039b6 blx 0x16ac                                        |         r0 = log_internal ();
    0x000039ba mov r4, r0                                        |         r4 = r0;
    0x000039bc b 0x3994                                          |         
                                                                 |     }
                                                                 | label_166:
    0x000039be ldr r2, [pc, 0x23c]                               |     
    0x000039c0 mov r1, r4                                        |     r1 = r4;
    0x000039c2 ldr r0, [pc, 0x23c]                               |     
    0x000039c4 ldr r3, [pc, 0x23c]                               |     
    0x000039c6 add r2, pc                                        |     r2 = 0x75c8;
    0x000039c8 add r0, pc                                        |     r0 = 0x75ce;
    0x000039ca adds r2, 7                                        |     r2 += 7;
    0x000039cc add r3, pc                                        |     r3 = 0x75d4;
    0x000039ce strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x000039d2 movs r3, 0x9c                                     |     r3 = 0x9c;
    0x000039d4 movs r0, 3                                        |     r0 = 3;
    0x000039d6 blx 0x16ac                                        |     r0 = log_internal ();
    0x000039da mov r4, r0                                        |     r4 = r0;
    0x000039dc b 0x396a                                          |     goto label_61;
                                                                 | label_162:
    0x000039de mov r4, r0                                        |     r4 = r0;
    0x000039e0 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x000039e4 cmp r0, 2                                         |     
                                                                 |     if (r0 > 2) {
    0x000039e6 bgt.w 0x3b2a                                      |         goto label_167;
                                                                 |     }
                                                                 | label_63:
    0x000039ea ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x000039ec cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000039ee beq 0x3972                                        |         goto label_62;
                                                                 |     }
    0x000039f0 blx 0x167c                                        |     user_record_unref ();
    0x000039f4 b 0x3972                                          |     goto label_62;
                                                                 | label_163:
    0x000039f6 mov r4, r0                                        |     r4 = r0;
    0x000039f8 blx 0x14a8                                        |     r0 = log_get_max_level ();
    0x000039fc cmp r0, 2                                         |     
    0x000039fe ittt le                                           |     
                                                                 |     if (r0 <= 2) {
    0x00003a00 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00003a02 uxtble r4, r4                                     |         __asm ("uxtble r4, r4");
                                                                 |     }
                                                                 |     if (r0 <= 2) {
    0x00003a04 rsble r4, r4, 0                                   |         __asm ("rsble r4, r4, 0");
                                                                 |     }
                                                                 |     if (r0 > 2) {
    0x00003a06 bgt.w 0x3b4e                                      |         goto label_168;
                                                                 |     }
                                                                 | label_69:
    0x00003a0a cmp r4, 0                                         |     
                                                                 |     if (r4 < 0) {
    0x00003a0c blt 0x39ea                                        |         goto label_63;
                                                                 |     }
                                                                 | label_68:
    0x00003a0e mvn r4, 0x55                                      |     r4 = ~0x55;
    0x00003a12 b 0x39ea                                          |     goto label_63;
                                                                 | label_161:
    0x00003a14 mov r4, r0                                        |     r4 = r0;
    0x00003a16 b 0x39ea                                          |     goto label_63;
                                                                 | label_165:
    0x00003a18 mov r1, r4                                        |     r1 = r4;
    0x00003a1a movs r2, 2                                        |     r2 = 2;
    0x00003a1c blx 0x16dc                                        |     table_get_cell ();
    0x00003a20 movs r2, 0x64                                     |     r2 = 0x64;
    0x00003a22 mov r1, r0                                        |     r1 = r0;
    0x00003a24 mov r0, r7                                        |     r0 = r7;
    0x00003a26 blx 0x15bc                                        |     table_set_align_percent ();
    0x00003a2a mov r1, r4                                        |     r1 = r4;
    0x00003a2c movs r2, 3                                        |     r2 = 3;
    0x00003a2e mov r0, r7                                        |     r0 = r7;
    0x00003a30 blx 0x16dc                                        |     table_get_cell ();
    0x00003a34 movs r2, 0x64                                     |     r2 = 0x64;
    0x00003a36 mov r1, r0                                        |     r1 = r0;
    0x00003a38 mov r0, r7                                        |     r0 = r7;
    0x00003a3a blx 0x15bc                                        |     table_set_align_percent ();
    0x00003a3e ldr r1, [pc, 0x1c8]                               |     
    0x00003a40 mov r0, r7                                        |     r0 = r7;
    0x00003a42 add r1, pc                                        |     r1 = 0x7650;
    0x00003a44 blx 0x1460                                        |     table_set_empty_string ();
    0x00003a48 mov.w r3, -1                                      |     r3 = -1;
    0x00003a4c movs r2, 2                                        |     r2 = 2;
    0x00003a4e movs r1, 7                                        |     r1 = 7;
    0x00003a50 mov r0, r7                                        |     r0 = r7;
    0x00003a52 blx 0x14fc                                        |     table_set_sort_internal ();
    0x00003a56 mov.w r3, -1                                      |     r3 = -1;
    0x00003a5a movs r0, 6                                        |     r0 = 6;
    0x00003a5c str r3, [sp, 0x10]                                |     var_10h_2 = r3;
    0x00003a5e movs r3, 5                                        |     r3 = 5;
    0x00003a60 strd r3, r0, [sp, 8]                              |     __asm ("strd r3, r0, [var_8h]");
    0x00003a64 mov r1, r4                                        |     r1 = r4;
    0x00003a66 movs r3, 3                                        |     r3 = 3;
    0x00003a68 movs r4, 4                                        |     r4 = 4;
    0x00003a6a strd r3, r4, [sp]                                 |     __asm ("strd r3, r4, [sp]");
    0x00003a6e mov r2, r5                                        |     r2 = r5;
    0x00003a70 movs r3, 2                                        |     r3 = 2;
    0x00003a72 mov r0, r7                                        |     r0 = r7;
    0x00003a74 blx 0x16e8                                        |     table_set_display_internal ();
    0x00003a78 b 0x3826                                          |     goto label_64;
                                                                 | label_148:
    0x00003a7a ldr r3, [pc, 0x190]                               |     
    0x00003a7c mov.w r8, 0                                       |     r8 = 0;
    0x00003a80 ldr r2, [pc, 0x18c]                               |     
    0x00003a82 ldr r1, [pc, 0x190]                               |     
    0x00003a84 add r3, pc                                        |     r3 = 0x7696;
    0x00003a86 ldr r0, [pc, 0x190]                               |     
    0x00003a88 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00003a8a add r2, pc                                        |     r2 = 0x769e;
    0x00003a8c ldr r3, [pc, 0x18c]                               |     
    0x00003a8e add r1, pc                                        |     r1 = 0x76a8;
    0x00003a90 add r0, pc                                        |     r0 = 0x76ae;
    0x00003a92 str.w r8, [sp, 0x10]                              |     __asm ("str.w r8, [var_10h_2]");
    0x00003a96 add r3, pc                                        |     r3 = 0x76b6;
    0x00003a98 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00003a9a ldr r3, [pc, 0x184]                               |     
    0x00003a9c add r3, pc                                        |     r3 = 0x76c2;
    0x00003a9e str r3, [sp, 4]                                   |     var_4h = r3;
    0x00003aa0 ldr r3, [pc, 0x180]                               |     
    0x00003aa2 add r3, pc                                        |     r3 = 0x76ca;
    0x00003aa4 str r3, [sp]                                      |     *(sp) = r3;
    0x00003aa6 ldr r3, [pc, 0x180]                               |     
    0x00003aa8 add r3, pc                                        |     r3 = 0x76d6;
    0x00003aaa blx 0x16b8                                        |     r0 = table_new_internal ();
    0x00003aae mov r7, r0                                        |     r7 = r0;
    0x00003ab0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003ab2 beq.w 0x392c                                      |         goto label_65;
                                                                 |     }
    0x00003ab6 movs r2, 2                                        |     r2 = 2;
    0x00003ab8 mov r1, r8                                        |     r1 = r8;
    0x00003aba blx 0x16dc                                        |     table_get_cell ();
    0x00003abe movs r2, 0x64                                     |     r2 = 0x64;
    0x00003ac0 mov r1, r0                                        |     r1 = r0;
    0x00003ac2 mov r0, r7                                        |     r0 = r7;
    0x00003ac4 blx 0x15bc                                        |     table_set_align_percent ();
    0x00003ac8 movs r2, 3                                        |     r2 = 3;
    0x00003aca mov r1, r8                                        |     r1 = r8;
    0x00003acc mov r0, r7                                        |     r0 = r7;
    0x00003ace blx 0x16dc                                        |     table_get_cell ();
    0x00003ad2 movs r2, 0x64                                     |     r2 = 0x64;
    0x00003ad4 mov r1, r0                                        |     r1 = r0;
    0x00003ad6 mov r0, r7                                        |     r0 = r7;
    0x00003ad8 blx 0x15bc                                        |     table_set_align_percent ();
    0x00003adc ldr r1, [pc, 0x14c]                               |     
    0x00003ade mov r0, r7                                        |     r0 = r7;
    0x00003ae0 add r1, pc                                        |     r1 = 0x7710;
    0x00003ae2 blx 0x1460                                        |     table_set_empty_string ();
    0x00003ae6 mov.w r3, -1                                      |     r3 = -1;
    0x00003aea movs r2, 2                                        |     r2 = 2;
    0x00003aec movs r1, 7                                        |     r1 = 7;
    0x00003aee mov r0, r7                                        |     r0 = r7;
    0x00003af0 blx 0x14fc                                        |     table_set_sort_internal ();
    0x00003af4 movs r3, 6                                        |     r3 = 6;
    0x00003af6 mov.w r0, -1                                      |     r0 = -1;
    0x00003afa strd r3, r0, [sp, 0xc]                            |     __asm ("strd r3, r0, [var_ch]");
    0x00003afe mov r2, r6                                        |     r2 = r6;
    0x00003b00 movs r3, 4                                        |     r3 = 4;
    0x00003b02 movs r6, 5                                        |     r6 = 5;
    0x00003b04 strd r3, r6, [sp, 4]                              |     __asm ("strd r3, r6, [var_8h]");
    0x00003b08 movs r3, 3                                        |     r3 = 3;
    0x00003b0a str r3, [sp]                                      |     *(sp) = r3;
    0x00003b0c mov r1, r8                                        |     r1 = r8;
    0x00003b0e movs r3, 2                                        |     r3 = 2;
    0x00003b10 mov r0, r7                                        |     r0 = r7;
    0x00003b12 blx 0x16e8                                        |     table_set_display_internal ();
    0x00003b16 cmp r4, 1                                         |     
                                                                 |     if (r4 <= 1) {
    0x00003b18 ble.w 0x3826                                      |         goto label_64;
                                                                 |     }
    0x00003b1c ldr r0, [r5, 4]                                   |     r0 = *((r5 + 4));
    0x00003b1e adds r5, 4                                        |     r5 += 4;
    0x00003b20 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003b22 bne.w 0x36e6                                      |         goto label_66;
                                                                 |     }
    0x00003b26 mov r4, r0                                        |     r4 = r0;
    0x00003b28 b 0x37d4                                          |     goto label_67;
                                                                 | label_167:
    0x00003b2a ldr r2, [pc, 0x104]                               |     
    0x00003b2c mov r1, r4                                        |     r1 = r4;
    0x00003b2e ldr r0, [pc, 0x104]                               |     
    0x00003b30 ldr r3, [pc, 0x104]                               |     
    0x00003b32 add r2, pc                                        |     r2 = 0x7768;
    0x00003b34 add r0, pc                                        |     r0 = 0x776e;
    0x00003b36 adds r2, 7                                        |     r2 += 7;
    0x00003b38 add r3, pc                                        |     r3 = 0x7774;
    0x00003b3a strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x00003b3e movs r3, 0xa5                                     |     r3 = 0xa5;
    0x00003b40 movs r0, 3                                        |     r0 = 3;
    0x00003b42 blx 0x16ac                                        |     r0 = log_internal ();
    0x00003b46 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x00003b48 bge.w 0x3a0e                                      |         goto label_68;
                                                                 |     }
    0x00003b4c b 0x39ea                                          |     goto label_63;
                                                                 | label_168:
    0x00003b4e ldr r2, [pc, 0xec]                                |     
    0x00003b50 mov r1, r4                                        |     r1 = r4;
    0x00003b52 ldr r0, [pc, 0xec]                                |     
    0x00003b54 ldr r3, [pc, 0xec]                                |     
    0x00003b56 add r2, pc                                        |     r2 = 0x7798;
    0x00003b58 add r0, pc                                        |     r0 = 0x779e;
    0x00003b5a adds r2, 7                                        |     r2 += 7;
    0x00003b5c add r3, pc                                        |     r3 = 0x77a4;
    0x00003b5e strd r3, r0, [sp]                                 |     __asm ("strd r3, r0, [sp]");
    0x00003b62 movs r3, 0xa7                                     |     r3 = 0xa7;
    0x00003b64 movs r0, 3                                        |     r0 = 3;
    0x00003b66 blx 0x16ac                                        |     r0 = log_internal ();
    0x00003b6a mov r4, r0                                        |     r4 = r0;
    0x00003b6c b 0x3a0a                                          |     goto label_69;
                                                                 | label_158:
    0x00003b6e blx 0x16a0                                        |     stack_chk_fail ();
    0x00003b72 nop                                               |     
    0x00003b74 adds r0, r3, r5                                   |     r0 = r3 + r5;
    0x00003b76 movs r1, r0                                       |     r1 = r0;
    0x00003b78 asrs r0, r5, 0x1e                                 |     r0 = r5 >> 0x1e;
    0x00003b7a movs r1, r0                                       |     r1 = r0;
    0x00003b7c asrs r4, r4, 0x1e                                 |     r4 >>= 0x1e;
    0x00003b7e movs r1, r0                                       |     r1 = r0;
    0x00003b80 lsls r4, r7, 5                                    |     r4 = r7 << 5;
    0x00003b82 movs r0, r0                                       |     
    0x00003b84 lsls r0, r7, 0x15                                 |     r0 = r7 << 0x15;
    0x00003b86 movs r0, r0                                       |     
    0x00003b88 adds r2, r3, r4                                   |     r2 = r3 + r4;
    0x00003b8a movs r1, r0                                       |     r1 = r0;
    0x00003b8c lsls r2, r5, 0x15                                 |     r2 = r5 << 0x15;
    0x00003b8e movs r0, r0                                       |     
    0x00003b90 adds r0, r1, r4                                   |     r0 = r1 + r4;
    0x00003b92 movs r1, r0                                       |     r1 = r0;
    0x00003b94 adds r0, r2, r3                                   |     r0 = r2 + r3;
    0x00003b96 movs r1, r0                                       |     r1 = r0;
    0x00003b98 lsls r6, r0, 0x13                                 |     r6 = r0 << 0x13;
    0x00003b9a movs r0, r0                                       |     
    0x00003b9c lsrs r6, r5, 0x11                                 |     r6 = r5 >> 0x11;
    0x00003b9e movs r0, r0                                       |     
    0x00003ba0 asrs r0, r4, 8                                    |     r0 = r4 >> 8;
    0x00003ba2 movs r0, r0                                       |     
    0x00003ba4 asrs r0, r6, 0x19                                 |     r0 = r6 >> 0x19;
    0x00003ba6 movs r1, r0                                       |     r1 = r0;
    0x00003ba8 lsrs r2, r4, 0x10                                 |     r2 = r4 >> 0x10;
    0x00003baa movs r0, r0                                       |     
    0x00003bac asrs r4, r7, 6                                    |     r4 = r7 >> 6;
    0x00003bae movs r0, r0                                       |     
    0x00003bb0 asrs r2, r5, 0x1f                                 |     r2 = r5 >> 0x1f;
    0x00003bb2 movs r1, r0                                       |     r1 = r0;
    0x00003bb4 asrs r2, r7, 0x1e                                 |     r2 = r7 >> 0x1e;
    0x00003bb6 movs r1, r0                                       |     r1 = r0;
    0x00003bb8 lsls r4, r1, 6                                    |     r4 = r1 << 6;
    0x00003bba movs r0, r0                                       |     
    0x00003bbc lsrs r4, r2, 0xf                                  |     r4 = r2 >> 0xf;
    0x00003bbe movs r0, r0                                       |     
    0x00003bc0 asrs r2, r7, 3                                    |     r2 = r7 >> 3;
    0x00003bc2 movs r0, r0                                       |     
    0x00003bc4 lsrs r4, r7, 0x14                                 |     r4 = r7 >> 0x14;
    0x00003bc6 movs r0, r0                                       |     
    0x00003bc8 lsrs r0, r2, 0x18                                 |     r0 = r2 >> 0x18;
    0x00003bca movs r0, r0                                       |     
    0x00003bcc lsrs r4, r2, 0x18                                 |     r4 = r2 >> 0x18;
    0x00003bce movs r0, r0                                       |     
    0x00003bd0 lsrs r4, r2, 0x18                                 |     r4 = r2 >> 0x18;
    0x00003bd2 movs r0, r0                                       |     
    0x00003bd4 lsrs r6, r1, 0x18                                 |     r6 = r1 >> 0x18;
    0x00003bd6 movs r0, r0                                       |     
    0x00003bd8 lsrs r2, r2, 0x14                                 |     r2 >>= 0x14;
    0x00003bda movs r0, r0                                       |     
    0x00003bdc lsrs r2, r1, 0x14                                 |     r2 = r1 >> 0x14;
    0x00003bde movs r0, r0                                       |     
    0x00003be0 lsrs r4, r5, 0x17                                 |     r4 = r5 >> 0x17;
    0x00003be2 movs r0, r0                                       |     
    0x00003be4 asrs r4, r5, 0x14                                 |     r4 = r5 >> 0x14;
    0x00003be6 movs r1, r0                                       |     r1 = r0;
    0x00003be8 lsls r6, r4, 0xc                                  |     r6 = r4 << 0xc;
    0x00003bea movs r0, r0                                       |     
    0x00003bec asrs r0, r1, 2                                    |     r0 = r1 >> 2;
    0x00003bee movs r0, r0                                       |     
    0x00003bf0 lsls r2, r1, 0xb                                  |     r2 = r1 << 0xb;
    0x00003bf2 movs r0, r0                                       |     
    0x00003bf4 lsrs r0, r3, 0x11                                 |     r0 = r3 >> 0x11;
    0x00003bf6 movs r0, r0                                       |     
    0x00003bf8 asrs r0, r5, 0x20                                 |     r0 = r5 >> 0x20;
    0x00003bfa movs r0, r0                                       |     
    0x00003bfc lsls r2, r5, 0xa                                  |     r2 = r5 << 0xa;
    0x00003bfe movs r0, r0                                       |     
    0x00003c00 lsrs r4, r4, 0x15                                 |     r4 >>= 0x15;
    0x00003c02 movs r0, r0                                       |     
    0x00003c04 asrs r0, r1, 0x20                                 |     r0 = r1 >> 0x20;
    0x00003c06 movs r0, r0                                       |     
    0x00003c08 lsrs r2, r1, 0x10                                 |     r2 = r1 >> 0x10;
    0x00003c0a movs r0, r0                                       |     
    0x00003c0c lsrs r4, r6, 0xe                                  |     r4 = r6 >> 0xe;
    0x00003c0e movs r0, r0                                       |     
    0x00003c10 lsrs r2, r0, 0x12                                 |     r2 = r0 >> 0x12;
    0x00003c12 movs r0, r0                                       |     
    0x00003c14 lsrs r6, r3, 0xe                                  |     r6 = r3 >> 0xe;
    0x00003c16 movs r0, r0                                       |     
    0x00003c18 lsrs r4, r2, 0x12                                 |     r4 = r2 >> 0x12;
    0x00003c1a movs r0, r0                                       |     
    0x00003c1c lsrs r2, r7, 0x11                                 |     r2 = r7 >> 0x11;
    0x00003c1e movs r0, r0                                       |     
    0x00003c20 lsrs r4, r7, 0x11                                 |     r4 = r7 >> 0x11;
    0x00003c22 movs r0, r0                                       |     
    0x00003c24 lsrs r6, r7, 0x11                                 |     r6 = r7 >> 0x11;
    0x00003c26 movs r0, r0                                       |     
    0x00003c28 lsrs r0, r0, 0xe                                  |     r0 >>= 0xe;
    0x00003c2a movs r0, r0                                       |     
    0x00003c2c lsrs r4, r5, 0xd                                  |     r4 = r5 >> 0xd;
    0x00003c2e movs r0, r0                                       |     
    0x00003c30 lsls r6, r7, 4                                    |     r6 = r7 << 4;
    0x00003c32 movs r0, r0                                       |     
    0x00003c34 lsrs r0, r0, 4                                    |     r0 >>= 4;
    0x00003c36 movs r0, r0                                       |     
    0x00003c38 lsrs r4, r3, 0x1a                                 |     r4 = r3 >> 0x1a;
    0x00003c3a movs r0, r0                                       |     
    0x00003c3c lsls r2, r3, 4                                    |     r2 = r3 << 4;
    0x00003c3e movs r0, r0                                       |     
    0x00003c40 lsrs r4, r6, 0xf                                  |     r4 = r6 >> 0xf;
    0x00003c42 movs r0, r0                                       |     
    0x00003c44 lsrs r0, r7, 0x19                                 |     r0 = r7 >> 0x19;
    0x00003c46 movs r0, r0                                       |     
                                                                 |     /* [14] -r-x section size 8 named .fini */
    0x00003c48 ands r0, r1                                       |     r0 &= r1;
    0x00003c4a invalid                                           |     
                                                                 | }

[*] Function printf used 5 times userdbctl