[*] Binary protection state of loggen
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function printf tear down of loggen
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x2c40 */
| #include <stdint.h>
|
; (fcn) fcn.00002c40 () | void fcn_00002c40 (int16_t arg_10h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_44h, int16_t arg_13ch, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| r3 = arg4;
| label_3:
0x0000211a bl 0x45f8 | reloc_deinit ();
0x0000211e ldr.w r1, [pc, 0x958] |
0x00002122 movs r7, 0 | r7 = 0;
0x00002124 ldr.w r2, [pc, 0x954] | r2 = *(0x00002a7c);
0x00002128 mov r3, r7 | r3 = r7;
0x0000212a str r7, [sp] | *(sp) = r7;
0x0000212c add r1, pc | r1 = 0x4baa;
0x0000212e add r2, pc | r2 += pc;
0x00002130 mov r0, r1 | r0 = r1;
0x00002132 blx 0x1b64 | r0 = g_option_group_new ();
0x00002136 mov r5, r0 | r5 = r0;
0x00002138 bl 0x3310 | r0 = get_file_reader_options ();
0x0000213c mov r1, r0 | r1 = r0;
0x0000213e mov r0, r5 | r0 = r5;
0x00002140 blx 0x1b94 | g_option_group_add_entries ();
0x00002144 mov r1, r5 | r1 = r5;
0x00002146 ldr r5, [sp, 0x1c] | r5 = *(arg_1ch);
0x00002148 mov r0, r5 | r0 = r5;
0x0000214a blx 0x1aec | g_option_context_add_group ();
0x0000214e ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x00002150 mov r2, sl | r2 = sl;
0x00002152 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x00002154 mov r0, r5 | r0 = r5;
0x00002156 str r7, [sp, 0x44] | *(arg_44h) = r7;
0x00002158 blx 0x1ae0 | r0 = g_option_context_parse ();
0x0000215c cmp r0, 0 |
| if (r0 == 0) {
0x0000215e beq.w 0x2436 | goto label_14;
| }
0x00002162 ldr.w r3, [pc, 0x91c] | r3 = *(0x00002a80);
0x00002166 add r3, pc | r3 += pc;
0x00002168 ldr r0, [r3, 0x44] | r0 = *((r3 + 0x44));
0x0000216a blx 0x1d04 | fcn_00001d04 ();
0x0000216e ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x00002170 ldr r3, [r3] | r3 = *(r3);
0x00002172 cmp r3, 2 |
| if (r3 <= 2) {
0x00002174 bgt.w 0x2280 |
| if (r3 == 2) {
0x00002178 beq.w 0x2848 | goto label_15;
| }
0x0000217c ldr.w r3, [pc, 0x904] |
0x00002180 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00002184 add r3, pc | r3 = 0x4c0c;
0x00002186 adds r3, 0x1c | r3 += 0x1c;
0x00002188 vst1.32 {d16}, [r3] | __asm ("vst1.32 {d16}, [r3]");
0x0000218c blx 0x1b58 | r0 = get_debug_level ();
0x00002190 cmp r0, 0 |
| if (r0 == 0) {
0x00002192 beq.w 0x229e | goto label_5;
| }
0x00002196 ldr.w r0, [pc, 0x8f0] | r0 = *(0x00002a88);
0x0000219a add r0, pc | r0 += pc;
0x0000219c blx 0x1b70 | g_path_get_basename ();
0x000021a0 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x000021a2 mov r5, r0 | r5 = r0;
0x000021a4 ldr.w r3, [pc, 0x8c4] | r3 = *(0x2a6c);
0x000021a8 movs r1, 1 | r1 = 1;
0x000021aa ldr r7, [r2, r3] | r7 = *((r2 + r3));
0x000021ac ldr.w r3, [pc, 0x8dc] |
0x000021b0 ldr.w r2, [pc, 0x8dc] |
0x000021b4 add r3, pc | r3 = 0x4c44;
0x000021b6 adds r3, 0x5c | r3 += 0x5c;
0x000021b8 add r2, pc | r2 = 0x4c4c;
0x000021ba str r3, [sp] | *(sp) = r3;
0x000021bc movw r3, 0x22e | r3 = 0x22e;
0x000021c0 str r3, [sp, 4] | var_4h = r3;
0x000021c2 mov r3, r0 | r3 = r0;
0x000021c4 ldr r0, [r7] | r0 = *(r7);
0x000021c6 blx 0x1bdc | fprintf_chk ()
0x000021ca ldr.w r0, [pc, 0x8c8] |
0x000021ce movs r2, 0x1d | r2 = 0x1d;
0x000021d0 ldr r3, [r7] | r3 = *(r7);
0x000021d2 movs r1, 1 | r1 = 1;
0x000021d4 add r0, pc | r0 = 0x4c6e;
0x000021d6 blx 0x1db4 | fcn_00001db4 ();
0x000021da mov r0, r5 | r0 = r5;
0x000021dc blx 0x1d14 | g_hash_table_unref ();
0x000021e0 b 0x229e |
| } else {
0x00002280 ldr.w r3, [sl] | r3 = *(sl);
0x00002284 ldr.w r5, [pc, 0x834] | r5 = *(0x00002abc);
0x00002288 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0000228a blx 0x1be8 | g_strdup ();
0x0000228e ldr.w r3, [sl] | r3 = *(sl);
0x00002292 add r5, pc | r5 += pc;
0x00002294 str r0, [r5, 0x1c] | *((r5 + 0x1c)) = r0;
0x00002296 ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x00002298 blx 0x1be8 | g_strdup ();
0x0000229c str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
| }
| label_5:
0x0000229e blx 0x1b58 | r0 = get_debug_level ();
0x000022a2 cmp r0, 0 |
| if (r0 != 0) {
0x000022a4 bne.w 0x267a | goto label_16;
| }
| label_2:
0x000022a8 ldr.w r7, [pc, 0x814] |
0x000022ac add r7, pc | r7 = 0x4d70;
0x000022ae ldr r3, [r7] | r3 = *(0x4d70);
0x000022b0 cmp.w r3, 0x2000 |
| if (r3 > 0x2000) {
0x000022b4 bgt.w 0x2622 | goto label_17;
| }
| label_1:
0x000022b8 ldr.w r7, [pc, 0x808] |
0x000022bc ldr.w r5, [pc, 0x808] |
0x000022c0 add r7, pc | r7 = 0x4d88;
0x000022c2 ldr r0, [r7, 0x10] | r0 = *(0x4d98);
0x000022c4 add r5, pc | r5 = "count=%lli, rate = %.2lf msg/sec\n";
0x000022c6 bl 0x331c | r0 = init_file_reader ();
0x000022ca cmp r0, 0 |
0x000022cc str r0, [r5, 4] | *((r5 + 4)) = r0;
| if (r0 < 0) {
0x000022ce blt.w 0x2806 | goto label_18;
| }
0x000022d2 add.w r0, r5, 8 | r0 = r5 + 8;
0x000022d6 blx 0x1bc4 | g_mutex_init ();
0x000022da cmp r4, 0 |
| if (r4 == 0) {
0x000022dc beq.w 0x2964 | goto label_19;
| }
0x000022e0 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000022e2 cmp r3, 0 |
| if (r3 == 0) {
0x000022e4 beq.w 0x29c0 | goto label_20;
| }
0x000022e8 movs r5, 0 | r5 = 0;
| do {
0x000022ea ldr r2, [r4] | r2 = *(r4);
0x000022ec ldr.w r2, [r2, r5, lsl 2] | offset_0 = r5 << 2;
| r2 = *((r2 + offset_0));
| if (r2 != 0) {
0x000022f0 cbz r2, 0x2302 |
0x000022f2 ldr r1, [r2, 0x18] | r1 = *((r2 + 0x18));
| if (r1 == 0) {
0x000022f4 cbz r1, 0x2302 | goto label_21;
| }
0x000022f6 ldr r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
0x000022f8 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x000022fa cmp r0, 0 |
| if (r0 != 0) {
0x000022fc bne.w 0x28f4 | goto label_22;
| }
0x00002300 ldr r3, [r4, 4] | r3 = *((r4 + 4));
| }
| label_21:
0x00002302 adds r5, 1 | r5++;
0x00002304 cmp r3, r5 |
0x00002306 bhi 0x22ea |
| } while (r3 > r5);
0x00002308 ldr.w r3, [pc, 0x7c0] |
0x0000230c add r3, pc | r3 = 0x4ddc;
0x0000230e ldr r0, [r3] | r0 = *(0x4ddc);
0x00002310 cmp r0, 0 |
| if (r0 == 0) {
0x00002312 beq.w 0x29c8 | goto label_23;
| }
| label_8:
0x00002316 ldr.w r3, [pc, 0x7b8] | r3 = *(0x00002ad0);
0x0000231a add r3, pc | r3 += pc;
0x0000231c ldr r1, [r3, 0x48] | r1 = *((r3 + 0x48));
0x0000231e clz r1, r1 | r1 &= r1;
0x00002322 lsrs r1, r1, 5 | r1 >>= 5;
| label_9:
0x00002324 ldr.w r5, [pc, 0x7ac] |
0x00002328 ldr.w r7, [pc, 0x7ac] | r7 = *(0x00002ad8);
0x0000232c add r5, pc | r5 = 0x4e04;
0x0000232e add r7, pc | r7 += pc;
0x00002330 ldr r3, [r5, 0x4c] | r3 = *(0x4e50);
0x00002332 ldr r2, [r7] | r2 = *(r7);
0x00002334 bl 0x3f5c | prepare_log_line_template ();
0x00002338 ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x0000233a lsls r0, r0, 3 | r0 <<= 3;
0x0000233c blx 0x1e18 | fcn_00001e18 ();
0x00002340 str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x00002342 ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x00002344 lsls r0, r0, 3 | r0 <<= 3;
0x00002346 blx 0x1e18 | fcn_00001e18 ();
0x0000234a ldr r3, [r5, 0x24] | r3 = *(0x4e28);
0x0000234c str r0, [r5, 0x40] | *((r5 + 0x40)) = r0;
0x0000234e cmp r3, 0 |
| if (r3 != 0) {
0x00002350 bne.w 0x289e | goto label_24;
| }
| label_7:
0x00002354 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00002356 mov r7, r3 | r7 = r3;
0x00002358 cmp r3, 0 |
| if (r3 == 0) {
0x0000235a beq.w 0x285c | goto label_25;
| }
0x0000235e movs r5, 0 | r5 = 0;
0x00002360 mov r7, r5 | r7 = r5;
| do {
0x00002362 ldr r2, [r4] | r2 = *(r4);
0x00002364 ldr.w r2, [r2, r5, lsl 2] | offset_1 = r5 << 2;
| r2 = *((r2 + offset_1));
| if (r2 != 0) {
0x00002368 cbz r2, 0x2374 |
0x0000236a ldr r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
0x0000236c blx r3 | uint32_t (*r3)(uint32_t) (r3);
0x0000236e ldr r3, [r4, 4] | r3 = *((r4 + 4));
| if (r0 == 0) {
0x00002370 cbz r0, 0x2374 | goto label_26;
| }
0x00002372 adds r7, 1 | r7++;
| }
| label_26:
0x00002374 adds r5, 1 | r5++;
0x00002376 cmp r3, r5 |
0x00002378 bhi 0x2362 |
| } while (r3 > r5);
0x0000237a cmp r7, 1 |
| if (r7 != 1) {
0x0000237c bne.w 0x285c | goto label_25;
| }
0x00002380 movs r5, 0 | r5 = 0;
| if (r3 == 0) {
0x00002382 cbz r3, 0x23a2 | goto label_10;
| }
| do {
0x00002384 ldr r2, [r4] | r2 = *(r4);
0x00002386 ldr.w r7, [r2, r5, lsl 2] | offset_2 = r5 << 2;
| r7 = *((r2 + offset_2));
| if (r7 != 0) {
0x0000238a cbz r7, 0x239c |
0x0000238c ldr r2, [r7, 0x10] | r2 = *((r7 + 0x10));
| if (r2 == 0) {
0x0000238e cbz r2, 0x239c | goto label_27;
| }
0x00002390 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00002392 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00002394 cmp r0, 0 |
| if (r0 != 0) {
0x00002396 bne.w 0x290a | goto label_28;
| }
0x0000239a ldr r3, [r4, 4] | r3 = *((r4 + 4));
| }
| label_27:
0x0000239c adds r5, 1 | r5++;
0x0000239e cmp r3, r5 |
0x000023a0 bhi 0x2384 |
| } while (r3 > r5);
| label_10:
0x000023a2 mov r0, r4 | r0 = r4;
0x000023a4 bl 0x30bc | fcn_000030bc (r0);
0x000023a8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000023aa cmp r3, 0 |
| if (r3 == 0) {
0x000023ac beq.w 0x25b6 | goto label_29;
| }
0x000023b0 ldr.w fp, [pc, 0x728] |
0x000023b4 movs r5, 0 | r5 = 0;
0x000023b6 ldr.w sl, [pc, 0x728] | sl = *(0x00002ae0);
0x000023ba ldr r7, [sp, 0x20] | r7 = *(arg_20h);
0x000023bc add fp, pc |
0x000023be add.w fp, fp, 0x74 | fp = 0x4f10;
0x000023c2 add sl, pc | sl += pc;
0x000023c4 b 0x23d8 | goto label_30;
| label_0:
0x000023c6 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
| if (r3 != 0) {
0x000023c8 cbz r3, 0x23ce |
0x000023ca mov r0, sl | r0 = sl;
0x000023cc blx r3 | uint32_t (*r3)(uint32_t) (r0);
| }
0x000023ce ldr r3, [r4, 4] | r3 = *((r4 + 4));
| do {
0x000023d0 adds r5, 1 | r5++;
0x000023d2 cmp r5, r3 |
| if (r5 >= r3) {
0x000023d4 bhs.w 0x25b6 | goto label_29;
| }
| label_30:
0x000023d8 ldr r2, [r4] | r2 = *(r4);
0x000023da ldr.w r6, [r2, r5, lsl 2] | offset_3 = r5 << 2;
| r6 = *((r2 + offset_3));
0x000023de cmp r6, 0 |
0x000023e0 beq 0x23d0 |
| } while (r6 == 0);
0x000023e2 blx 0x1b58 | r0 = get_debug_level ();
0x000023e6 cmp r0, 0 |
| if (r0 == 0) {
0x000023e8 beq 0x23c6 | goto label_0;
| }
0x000023ea ldr.w r0, [pc, 0x6f8] | r0 = *(0x00002ae4);
0x000023ee add r0, pc | r0 += pc;
0x000023f0 blx 0x1b70 | g_path_get_basename ();
0x000023f4 ldr.w r3, [pc, 0x674] | r3 = *(0x2a6c);
0x000023f8 mov r8, r0 | r8 = r0;
0x000023fa ldr.w r2, [pc, 0x6ec] | r2 = *(0x00002ae8);
0x000023fe movs r1, 1 | r1 = 1;
0x00002400 ldr.w sb, [r7, r3] | sb = *((r7 + r3));
0x00002404 mov.w r3, 0x112 | r3 = 0x112;
0x00002408 str r3, [sp, 4] | var_4h = r3;
0x0000240a add r2, pc | r2 += pc;
0x0000240c mov r3, r0 | r3 = r0;
0x0000240e str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00002412 ldr.w r0, [sb] | r0 = *(sb);
0x00002416 blx 0x1bdc | fprintf_chk ()
0x0000241a ldr.w r2, [pc, 0x6d0] |
0x0000241e movs r1, 1 | r1 = 1;
0x00002420 str r5, [sp] | *(sp) = r5;
0x00002422 ldr.w r0, [sb] | r0 = *(sb);
0x00002426 ldr r3, [r6] | r3 = *(r6);
0x00002428 add r2, pc | r2 = 0x4f1a;
0x0000242a blx 0x1bdc | fprintf_chk ()
0x0000242e mov r0, r8 | r0 = r8;
0x00002430 blx 0x1d14 | g_hash_table_unref ();
0x00002434 b 0x23c6 | goto label_0;
| label_14:
0x00002436 ldr.w r0, [pc, 0x6b8] | r0 = *(0x00002af0);
0x0000243a add r0, pc | r0 += pc;
0x0000243c blx 0x1b70 | g_path_get_basename ();
0x00002440 ldr.w r2, [pc, 0x6b0] |
0x00002444 mov r5, r0 | r5 = r0;
0x00002446 ldr.w r3, [pc, 0x664] | r3 = *(0x00002aac);
0x0000244a movw r1, 0x216 | r1 = 0x216;
0x0000244e ldr r0, [sp, 0x20] | r0 = *(arg_20h);
0x00002450 add r2, pc | r2 = 0x4f48;
0x00002452 adds r2, 0x5c | r2 += 0x5c;
0x00002454 ldr r6, [r0, r3] | r6 = *((r0 + r3));
0x00002456 mov r3, r5 | r3 = r5;
0x00002458 strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x0000245c movs r1, 1 | r1 = 1;
0x0000245e ldr.w r2, [pc, 0x698] |
0x00002462 ldr r0, [r6] | r0 = *(r6);
0x00002464 add r2, pc |
0x00002466 blx 0x1bdc | fprintf_chk ()
0x0000246a ldr r3, [sp, 0x44] | r3 = *(arg_44h);
0x0000246c movs r1, 1 | r1 = 1;
0x0000246e ldr.w r2, [pc, 0x68c] | r2 = *(0x00002afc);
0x00002472 ldr r0, [r6] | r0 = *(r6);
0x00002474 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00002476 add r2, pc | r2 = 0x73dc;
0x00002478 blx 0x1bdc | fprintf_chk ()
0x0000247c mov r0, r5 | r0 = r5;
0x0000247e blx 0x1d14 | g_hash_table_unref ();
0x00002482 movs r1, 1 | r1 = 1;
0x00002484 mov r0, r4 | r0 = r4;
0x00002486 blx 0x1ea8 | fcn_00001ea8 ();
0x0000248a ldr r0, [sp, 0x44] | r0 = *(arg_44h);
| if (r0 != 0) {
0x0000248c cbz r0, 0x2492 |
0x0000248e blx 0x1b28 | g_error_free ();
| }
| label_4:
0x00002492 movs r0, 1 | r0 = 1;
0x00002494 b 0x2602 | goto label_31;
| label_29:
0x000025b6 blx 0x1b58 | r0 = get_debug_level ();
0x000025ba cmp r0, 0 |
0x000025bc bne.w 0x26ce |
| while (1) {
| label_6:
0x000025c0 ldr.w r6, [pc, 0x574] |
0x000025c4 ldr.w r5, [pc, 0x574] | r5 = *(0x00002b3c);
0x000025c8 add r6, pc | r6 = 0x5104;
0x000025ca add r5, pc | r5 += pc;
0x000025cc ldr r0, [r6, 0x10] | r0 = *(0x5114);
0x000025ce bl 0x3510 | close_file_reader ();
0x000025d2 add.w r0, r5, 8 | r0 = r5 + 8;
0x000025d6 blx 0x1b10 | g_mutex_clear ();
0x000025da ldr r0, [r6, 0x1c] | r0 = *(0x5120);
0x000025dc blx 0x1d14 | g_hash_table_unref ();
0x000025e0 ldr r0, [r6, 0x20] | r0 = "warning: defined message length (%d) is too big. truncated to (%d)\n";
0x000025e2 blx 0x1d14 | g_hash_table_unref ();
0x000025e6 ldr r0, [sp, 0x1c] | r0 = *(arg_1ch);
0x000025e8 blx 0x1cd4 | fcn_00001cd4 ();
0x000025ec movs r1, 1 | r1 = 1;
0x000025ee mov r0, r4 | r0 = r4;
0x000025f0 blx 0x1ea8 | fcn_00001ea8 ();
0x000025f4 ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x000025f6 blx 0x1d14 | g_hash_table_unref ();
0x000025fa ldr r0, [r5, 0x20] | r0 = *((r5 + 0x20));
0x000025fc blx 0x1d14 | g_hash_table_unref ();
0x00002600 movs r0, 0 | r0 = 0;
| label_31:
0x00002602 ldr.w r2, [pc, 0x53c] | r2 = *(0x00002b40);
0x00002606 ldr.w r3, [pc, 0x428] | r3 = *(0x2a32);
0x0000260a add r2, pc | r2 += pc;
0x0000260c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000260e ldr r2, [r3] | r2 = *(0x2a32);
0x00002610 ldr r3, [sp, 0x13c] | r3 = *(arg_13ch);
0x00002612 eors r2, r3 | r2 ^= r3;
0x00002614 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002618 bne.w 0x2a28 | goto label_32;
| }
0x0000261c add sp, 0x144 |
0x0000261e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x00002622 ldr.w r0, [pc, 0x520] | r0 = *(0x00002b44);
0x00002626 mov.w sb, 0x2000 | sb = 0x2000;
0x0000262a add r0, pc | r0 += pc;
0x0000262c blx 0x1b70 | g_path_get_basename ();
0x00002630 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x00002632 mov r8, r0 | r8 = r0;
0x00002634 ldr.w r3, [pc, 0x474] | r3 = *(0x00002aac);
0x00002638 movs r1, 1 | r1 = 1;
0x0000263a ldr r5, [r2, r3] | r5 = *((r2 + r3));
0x0000263c ldr.w r3, [pc, 0x508] |
0x00002640 ldr.w r2, [pc, 0x508] |
0x00002644 add r3, pc | r3 = "%d;%lu.%06lu;%.2lf;%lu\n";
0x00002646 adds r3, 0x5c | r3 += 0x5c;
0x00002648 add r2, pc |
0x0000264a str r3, [sp] | *(sp) = r3;
0x0000264c movw r3, 0x235 | r3 = 0x235;
0x00002650 str r3, [sp, 4] | var_4h = r3;
0x00002652 mov r3, r0 | r3 = r0;
0x00002654 ldr r0, [r5] | r0 = *(r5);
0x00002656 blx 0x1bdc | fprintf_chk ()
0x00002658 invalid |
0x0000265c movs r4, 0xf4 | r4 = 0xf4;
0x0000265e movs r1, 1 | r1 = 1;
0x00002660 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00002664 ldr r3, [r7] | r3 = *(r7);
0x00002666 add r2, pc | r2 = 0x7802;
0x00002668 ldr r0, [r5] | r0 = *(r5);
0x0000266a blx 0x1bdc | fprintf_chk ()
0x0000266e mov r0, r8 | r0 = r8;
0x00002670 blx 0x1d14 | g_hash_table_unref ();
0x00002674 str.w sb, [r7] | __asm ("str.w sb, [r7]");
0x00002678 b 0x22b8 | goto label_1;
| label_16:
0x0000267a ldr.w r0, [pc, 0x4d8] | r0 = *(0x00002b54);
0x0000267e add r0, pc | r0 += pc;
0x00002680 blx 0x1b70 | g_path_get_basename ();
0x00002684 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x00002686 mov r5, r0 | r5 = r0;
0x00002688 ldr r3, [pc, 0x3e0] |
0x0000268a movs r1, 1 | r1 = 1;
0x0000268c ldr r7, [r2, r3] | r7 = *((r2 + r3));
0x0000268e ldr.w r3, [pc, 0x4c8] | r3 = *(0x00002b58);
0x00002692 ldr.w r2, [pc, 0x4c8] | r2 = *(0x00002b5c);
0x00002696 add r3, pc | r3 = 0x5106;
0x00002698 adds r3, 0x5c | r3 += 0x5c;
0x0000269a add r2, pc | r2 += pc;
0x0000269c str r3, [sp] | *(sp) = r3;
0x0000269e movw r3, 0x231 | r3 = 0x231;
0x000026a2 str r3, [sp, 4] | var_4h = r3;
0x000026a4 mov r3, r0 | r3 = r0;
0x000026a6 ldr r0, [r7] | r0 = *(r7);
0x000026a8 blx 0x1bdc | fprintf_chk ()
0x000026ac ldr r0, [r7] | r0 = *(r7);
0x000026ae movs r1, 1 | r1 = 1;
0x000026b0 ldr.w r7, [pc, 0x4ac] |
0x000026b4 ldr.w r2, [pc, 0x4ac] |
0x000026b8 add r7, pc | r7 = 0x521c;
0x000026ba ldr r3, [r7, 0x20] | r3 = *(0x523c);
0x000026bc add r2, pc | r2 = 0x5224;
0x000026be str r3, [sp] | *(sp) = r3;
0x000026c0 ldr r3, [r7, 0x1c] | r3 = *(0x5238);
0x000026c2 blx 0x1bdc | fprintf_chk ()
0x000026c6 mov r0, r5 | r0 = r5;
0x000026c8 blx 0x1d14 | g_hash_table_unref ();
0x000026cc b 0x22a8 | goto label_2;
0x000026ce ldr.w r0, [pc, 0x498] | r0 = *(0x00002b68);
0x000026d2 add r0, pc | r0 += pc;
0x000026d4 blx 0x1b70 | g_path_get_basename ();
0x000026d8 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x000026da mov r5, r0 | r5 = r0;
0x000026dc ldr r3, [pc, 0x38c] | r3 = *(0x2a6c);
0x000026de movs r1, 1 | r1 = 1;
0x000026e0 ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x000026e2 movw r3, 0x117 | r3 = 0x117;
0x000026e6 str r3, [sp, 4] | var_4h = r3;
0x000026e8 ldr.w r3, [pc, 0x480] |
0x000026ec ldr.w r2, [pc, 0x480] |
0x000026f0 add r3, pc | r3 = 0x5260;
0x000026f2 adds r3, 0x74 | r3 += 0x74;
0x000026f4 add r2, pc | r2 = "stop plugin (%s:%d)\n";
0x000026f6 str r3, [sp] | *(sp) = r3;
0x000026f8 mov r3, r0 | r3 = r0;
0x000026fa ldr r0, [r6] | r0 = *(r6);
0x000026fc blx 0x1bdc | fprintf_chk ()
0x00002700 ldr.w r0, [pc, 0x470] | r0 = *(0x00002b74);
0x00002704 movs r2, 0x1e | r2 = 0x1e;
0x00002706 ldr r3, [r6] | r3 = *(r6);
0x00002708 movs r1, 1 | r1 = 1;
0x0000270a add r0, pc | r0 += pc;
0x0000270c blx 0x1db4 | fcn_00001db4 ();
0x00002710 mov r0, r5 | r0 = r5;
0x00002712 blx 0x1d14 | g_hash_table_unref ();
0x00002716 b 0x25c0 |
| }
| label_13:
0x00002784 mov r0, r3 | r0 = r3;
0x00002786 mov fp, r3 |
0x00002788 blx 0x1b70 | g_path_get_basename ();
0x0000278c ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x0000278e add r8, pc | r8 += pc;
0x00002790 ldr r3, [pc, 0x318] | r3 = *(0x2aac);
0x00002792 add r7, pc | r7 += pc;
0x00002794 add.w r8, r8, 0x2c | r8 += 0x2c;
0x00002798 movs r1, 1 | r1 = 1;
0x0000279a mov sb, r0 | sb = r0;
0x0000279c ldr r5, [r2, r3] | r5 = *((r2 + r3));
0x0000279e movs r3, 0xd5 | r3 = 0xd5;
0x000027a0 mov r2, r7 | r2 = r7;
0x000027a2 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000027a6 str r3, [sp, 4] | var_4h = r3;
0x000027a8 mov r3, r0 | r3 = r0;
0x000027aa ldr r0, [r5] | r0 = *(r5);
0x000027ac blx 0x1bdc | fprintf_chk ()
0x000027b0 blx 0x1e48 | r0 = fcn_00001e48 ();
0x000027b4 ldr r0, [r0] | r0 = *(r0);
0x000027b6 ldr r6, [r5] | r6 = *(r5);
0x000027b8 blx 0x1b88 | strerror (r0);
0x000027bc ldr r2, [pc, 0x3d4] |
0x000027be movs r1, 1 | r1 = 1;
0x000027c0 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000027c2 str r0, [sp] | *(sp) = r0;
0x000027c4 mov r0, r6 | r0 = r6;
0x000027c6 add r2, pc | r2 = 0x535e;
0x000027c8 blx 0x1bdc | fprintf_chk ()
0x000027cc mov r0, sb | r0 = sb;
0x000027ce blx 0x1d14 | g_hash_table_unref ();
0x000027d2 mov r0, fp | r0 = fp;
0x000027d4 blx 0x1b70 | g_path_get_basename ();
0x000027d8 movs r3, 0xd6 | r3 = 0xd6;
0x000027da str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000027de str r3, [sp, 4] | var_4h = r3;
0x000027e0 mov r8, r0 | r8 = r0;
0x000027e2 mov r2, r7 | r2 = r7;
0x000027e4 mov r3, r0 | r3 = r0;
0x000027e6 movs r1, 1 | r1 = 1;
0x000027e8 ldr r0, [r5] | r0 = *(r5);
0x000027ea blx 0x1bdc | fprintf_chk ()
0x000027ee ldr r3, [pc, 0x3a8] |
0x000027f0 movs r1, 1 | r1 = 1;
0x000027f2 ldr r2, [pc, 0x3a8] |
0x000027f4 ldr r0, [r5] | r0 = *(r5);
0x000027f6 add r3, pc | r3 = 0x5394;
0x000027f8 add r2, pc | r2 = 0x539a;
0x000027fa blx 0x1bdc | fprintf_chk ()
0x000027fe mov r0, r8 | r0 = r8;
0x00002800 blx 0x1d14 | g_hash_table_unref ();
0x00002804 b 0x211a | goto label_3;
| label_18:
0x00002806 ldr r0, [pc, 0x398] |
0x00002808 add r0, pc | r0 = 0x53ae;
0x0000280a blx 0x1b70 | g_path_get_basename ();
0x0000280e ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x00002810 mov r4, r0 | r4 = r0;
0x00002812 ldr r3, [pc, 0x298] | r3 = *(0x2aae);
0x00002814 movw r0, 0x23d | r0 = 0x23d;
0x00002818 ldr r1, [pc, 0x388] |
0x0000281a ldr r5, [r2, r3] | r5 = *((r2 + r3));
0x0000281c mov r3, r4 | r3 = r4;
0x0000281e ldr r2, [pc, 0x388] |
0x00002820 add r1, pc | r1 = 0x53c8;
0x00002822 adds r1, 0x5c | r1 += 0x5c;
0x00002824 strd r1, r0, [sp] | __asm ("strd r1, r0, [sp]");
0x00002828 movs r1, 1 | r1 = 1;
0x0000282a ldr r0, [r5] | r0 = *(r5);
0x0000282c add r2, pc | r2 = 0x53da;
0x0000282e blx 0x1bdc | fprintf_chk ()
0x00002832 ldr r0, [pc, 0x378] |
0x00002834 movs r2, 0x26 | r2 = 0x26;
0x00002836 ldr r3, [r5] | r3 = *(r5);
0x00002838 movs r1, 1 | r1 = 1;
0x0000283a add r0, pc | r0 = 0x53ec;
0x0000283c blx 0x1db4 | fcn_00001db4 ();
0x00002840 mov r0, r4 | r0 = r4;
0x00002842 blx 0x1d14 | g_hash_table_unref ();
0x00002846 b 0x2492 | goto label_4;
| label_15:
0x00002848 ldr.w r3, [sl] | r3 = *(sl);
0x0000284c ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0000284e blx 0x1be8 | g_strdup ();
0x00002852 ldr r3, [pc, 0x35c] |
0x00002854 add r3, pc | r3 = 0x540a;
0x00002856 strd r0, r7, [r3, 0x1c] | __asm ("strd r0, r7, [r3, 0x1c]");
0x0000285a b 0x229e | goto label_5;
| label_25:
0x0000285c ldr r0, [pc, 0x354] |
0x0000285e add r0, pc | r0 = 0x5416;
0x00002860 blx 0x1b70 | g_path_get_basename ();
0x00002864 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x00002866 mov r5, r0 | r5 = r0;
0x00002868 ldr r3, [pc, 0x240] | r3 = *(0x2aac);
0x0000286a movs r1, 1 | r1 = 1;
0x0000286c ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x0000286e ldr r3, [pc, 0x348] |
0x00002870 ldr r2, [pc, 0x348] |
0x00002872 add r3, pc | r3 = 0x5430;
0x00002874 adds r3, 0x64 | r3 += 0x64;
0x00002876 add r2, pc | r2 = 0x5436;
0x00002878 str r3, [sp] | *(sp) = r3;
0x0000287a mov.w r3, 0x166 | r3 = 0x166;
0x0000287e str r3, [sp, 4] | var_4h = r3;
0x00002880 mov r3, r5 | r3 = r5;
0x00002882 ldr r0, [r6] | r0 = *(r6);
0x00002884 blx 0x1bdc | fprintf_chk ()
0x00002888 ldr r2, [pc, 0x334] |
0x0000288a mov r3, r7 | r3 = r7;
0x0000288c ldr r0, [r6] | r0 = *(r6);
0x0000288e movs r1, 1 | r1 = 1;
0x00002890 add r2, pc | r2 = 0x5454;
0x00002892 blx 0x1bdc | fprintf_chk ()
0x00002894 invalid |
0x00002898 blx 0x1d14 | g_hash_table_unref ();
0x0000289c b 0x25c0 | goto label_6;
| label_24:
0x0000289e ldr r0, [pc, 0x324] |
0x000028a0 add r0, pc | r0 = 0x546a;
0x000028a2 blx 0x1bac | puts (r0);
0x000028a6 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000028a8 cmp r3, 0 |
| if (r3 <= 0) {
0x000028aa ble.w 0x2354 | goto label_7;
| }
| label_11:
0x000028ae ldr r3, [pc, 0x1fc] | r3 = *(0x2aae);
0x000028b0 movs r7, 0 | r7 = 0;
0x000028b2 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x000028b4 mov.w sl, 0 | sl = 0;
0x000028b8 ldr.w sb, [pc, 0x30c] | sb = *(0x00002bc8);
0x000028bc mov.w fp, 0 |
0x000028c0 ldr.w r8, [pc, 0x308] |
0x000028c4 ldr r5, [r2, r3] | r5 = *((r2 + r3));
0x000028c6 add sb, pc | sb += pc;
0x000028c8 add r8, pc | r8 = 0x5498;
| do {
0x000028ca movs r3, 0 | r3 = 0;
0x000028cc ldr r0, [r5] | r0 = *(r5);
0x000028ce mov r2, sb | r2 = sb;
0x000028d0 str r3, [sp, 0x10] | *(arg_10h) = r3;
0x000028d2 strd r3, r3, [sp] | __asm ("strd r3, r3, [sp]");
0x000028d6 movs r1, 1 | r1 = 1;
0x000028d8 mov r3, r7 | r3 = r7;
0x000028da strd sl, fp, [sp, 8] | __asm ("strd sl, fp, [sp, 8]");
0x000028de blx 0x1bdc | fprintf_chk ()
0x000028e2 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x000028e6 adds r7, 1 | r7++;
0x000028e8 cmp r7, r3 |
0x000028ea blt 0x28ca |
| } while (r7 < r3);
0x000028ec cmp r4, 0 |
| if (r4 != 0) {
0x000028ee bne.w 0x2354 | goto label_7;
| }
0x000028f2 b 0x2984 | goto label_33;
| label_22:
0x000028f4 ldr r3, [pc, 0x2d8] |
0x000028f6 add r3, pc | r3 = 0x54ca;
0x000028f8 ldr r0, [r3] | r0 = *(0x54ca);
0x000028fa cmp r0, 0 |
| if (r0 != 0) {
0x000028fc bne.w 0x2316 | goto label_8;
| }
0x00002900 ldr r1, [r3, 0x48] | r1 = *((r3 + 0x48));
0x00002902 clz r1, r1 | r1 &= r1;
0x00002906 lsrs r1, r1, 5 | r1 >>= 5;
0x00002908 b 0x2324 | goto label_9;
| label_28:
0x0000290a ldr r0, [pc, 0x2c8] |
0x0000290c ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x0000290e add r0, pc | r0 = 0x54e8;
0x00002910 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00002912 cmp r0, 0 |
| if (r0 != 0) {
0x00002914 bne.w 0x23a2 | goto label_10;
| }
0x00002918 b 0x25c0 | goto label_6;
| label_19:
0x00002964 ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x00002966 lsls r0, r0, 3 | r0 <<= 3;
0x00002968 blx 0x1e18 | fcn_00001e18 ();
0x0000296c str r0, [r5, 0x20] | *((r5 + 0x20)) = r0;
0x0000296e ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x00002970 lsls r0, r0, 3 | r0 <<= 3;
0x00002972 blx 0x1e18 | fcn_00001e18 ();
0x00002976 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00002978 str r0, [r5, 0x40] | *((r5 + 0x40)) = r0;
0x0000297a cmp r3, 0 |
| if (r3 != 0) {
0x0000297c bne 0x2a16 | goto label_34;
| }
| label_12:
0x0000297e ldr r3, [pc, 0x12c] | r3 = *(0x2aae);
0x00002980 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x00002982 ldr r5, [r2, r3] | r5 = *((r2 + r3));
| label_33:
0x00002984 ldr r0, [pc, 0x260] |
0x00002986 add r0, pc | r0 = 0x5572;
0x00002988 blx 0x1b70 | g_path_get_basename ();
0x0000298c mov.w r3, 0x154 | r3 = 0x154;
0x00002990 ldr r2, [pc, 0x258] |
0x00002992 str r3, [sp, 4] | var_4h = r3;
0x00002994 mov r6, r0 | r6 = r0;
0x00002996 ldr r3, [pc, 0x258] |
0x00002998 movs r1, 1 | r1 = 1;
0x0000299a add r2, pc | r2 = 0x558a;
0x0000299c add r3, pc | r3 = 0x5592;
0x0000299e adds r3, 0x64 | r3 += 0x64;
0x000029a0 str r3, [sp] | *(sp) = r3;
0x000029a2 mov r3, r0 | r3 = r0;
0x000029a4 ldr r0, [r5] | r0 = *(r5);
0x000029a6 blx 0x1bdc | fprintf_chk ()
0x000029aa ldr r0, [pc, 0x248] |
0x000029ac movs r2, 0x23 | r2 = 0x23;
0x000029ae ldr r3, [r5] | r3 = *(r5);
0x000029b0 movs r1, 1 | r1 = 1;
0x000029b2 add r0, pc | r0 = 0x55ac;
0x000029b4 blx 0x1db4 | fcn_00001db4 ();
0x000029b8 mov r0, r6 | r0 = r6;
0x000029ba blx 0x1d14 | g_hash_table_unref ();
0x000029be b 0x25c0 | goto label_6;
| label_20:
0x000029c0 ldr r0, [r5] | r0 = *(r5);
0x000029c2 cmp r0, 0 |
| if (r0 != 0) {
0x000029c4 bne.w 0x2316 | goto label_8;
| }
| label_23:
0x000029c8 movs r0, 0 | r0 = 0;
0x000029ca mov r1, r0 | r1 = r0;
0x000029cc b 0x2324 | goto label_9;
| label_34:
0x00002a16 ldr r0, [pc, 0x1f0] |
0x00002a18 add r0, pc | r0 = 0x5626;
0x00002a1a blx 0x1bac | puts (r0);
0x00002a1e ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00002a20 cmp r3, 0 |
| if (r3 > 0) {
0x00002a22 bgt.w 0x28ae | goto label_11;
| }
0x00002a26 b 0x297e | goto label_12;
| label_32:
0x00002a28 blx 0x1cec | fcn_00001cec ();
0x00002a2c ldrsh r0, [r7, r5] | r0 = *((r7 + r5));
0x00002a2e movs r0, r0 |
0x00002a30 lsls r0, r5, 5 | r0 = r5 << 5;
0x00002a32 movs r0, r0 |
0x00002a34 cmp r7, 0x48 |
0x00002a36 movs r0, r0 |
0x00002a38 lsrs r7, r4, 0x17 | r7 = r4 >> 0x17;
0x00002a3a movs r0, r0 |
0x00002a3c ldrsh r0, [r1, r5] | r0 = *((r1 + r5));
0x00002a3e movs r0, r0 |
0x00002a40 lsrs r7, r4, 0x1d | r7 = r4 >> 0x1d;
0x00002a42 movs r0, r0 |
0x00002a44 cmp r7, 0x10 |
0x00002a46 movs r0, r0 |
0x00002a48 str r4, [r0, 0xc] | *((r0 + 0xc)) = r4;
0x00002a4a movs r0, r0 |
0x00002a4c subs r0, 0x2a | r0 -= 0x2a;
0x00002a4e movs r0, r0 |
0x00002a50 cmp r7, 0x90 |
0x00002a52 movs r0, r0 |
0x00002a54 cmp r7, 0x64 |
0x00002a56 movs r0, r0 |
0x00002a58 cmp r7, 0xa2 |
0x00002a5a movs r0, r0 |
0x00002a5c cmp r7, 0x92 |
0x00002a5e movs r0, r0 |
0x00002a60 lsrs r7, r7, 0x13 | r7 >>= 0x13;
0x00002a62 movs r0, r0 |
0x00002a64 cmp r7, 0xce |
0x00002a66 movs r0, r0 |
0x00002a68 cmp r4, 0x18 |
0x00002a6a movs r0, r0 |
0x00002a6c lsls r0, r0, 6 | r0 <<= 6;
0x00002a6e movs r0, r0 |
0x00002a70 cmp r4, 0x7e |
0x00002a72 movs r0, r0 |
0x00002a74 cmp r7, 0x82 |
0x00002a76 movs r0, r0 |
0x00002a78 cmp r7, 0x98 |
0x00002a7a movs r0, r0 |
0x00002a7c cmp r7, 0x26 |
0x00002a7e movs r0, r0 |
0x00002a80 str r6, [r7, 0x18] | *((r7 + 0x18)) = r6;
0x00002a82 movs r0, r0 |
0x00002a84 ldrsh r0, [r0, r2] | r0 = *((r0 + r2));
0x00002a86 movs r0, r0 |
0x00002a88 cmp r3, 0x2e |
0x00002a8a movs r0, r0 |
0x00002a8c adds r6, 0 | r6 += 0;
0x00002a8e movs r0, r0 |
0x00002a90 cmp r3, 0x94 |
0x00002a92 movs r0, r0 |
0x00002a94 cmp r7, 0x18 |
0x00002a96 movs r0, r0 |
0x00002a98 cmp r2, 0xd8 |
0x00002a9a movs r0, r0 |
0x00002a9c adds r5, 0xaa | r5 += 0xaa;
0x00002a9e movs r0, r0 |
0x00002aa0 cmp r3, 0x3e |
0x00002aa2 movs r0, r0 |
0x00002aa4 cmp r5, 0xcc |
0x00002aa6 movs r0, r0 |
0x00002aa8 cmp r2, 0x8e |
0x00002aaa movs r0, r0 |
0x00002aac lsls r4, r6, 5 | r4 = r6 << 5;
0x00002aae movs r0, r0 |
0x00002ab0 adds r5, 0x5e | r5 += 0x5e;
0x00002ab2 movs r0, r0 |
0x00002ab4 cmp r2, 0xaa |
0x00002ab6 movs r0, r0 |
0x00002ab8 cmp r5, 0xaa |
0x00002aba movs r0, r0 |
0x00002abc ldrb r2, [r6, r5] | r2 = *((r6 + r5));
0x00002abe movs r0, r0 |
0x00002ac0 ldrb r0, [r3, r5] | r0 = *((r3 + r5));
0x00002ac2 movs r0, r0 |
0x00002ac4 ldrb r4, [r0, r5] | r4 = *((r0 + r5));
0x00002ac6 movs r0, r0 |
0x00002ac8 str r0, [r4, 4] | *((r4 + 4)) = r0;
0x00002aca movs r0, r0 |
0x00002acc str r0, [r3] | *(r3) = r0;
0x00002ace movs r0, r0 |
0x00002ad0 str r2, [r1] | *(r1) = r2;
0x00002ad2 movs r0, r0 |
0x00002ad4 ldrsh r0, [r7, r7] | r0 = *((r7 + r7));
0x00002ad6 movs r0, r0 |
0x00002ad8 ldrb r6, [r2, r3] | r6 = *((r2 + r3));
0x00002ada movs r0, r0 |
0x00002adc adds r3, 0xf8 | r3 += 0xf8;
0x00002ade movs r0, r0 |
0x00002ae0 ldrb r2, [r0, r1] | r2 = *((r0 + r1));
0x00002ae2 movs r0, r0 |
0x00002ae4 cmp r0, 0xda |
0x00002ae6 movs r0, r0 |
0x00002ae8 cmp r1, 0x42 |
0x00002aea movs r0, r0 |
0x00002aec cmp r6, 0x3c |
0x00002aee movs r0, r0 |
0x00002af0 cmp r0, 0x8e |
0x00002af2 movs r0, r0 |
0x00002af4 adds r3, 0x64 | r3 += 0x64;
0x00002af6 movs r0, r0 |
0x00002af8 cmp r0, 0xa0 |
0x00002afa movs r0, r0 |
0x00002afc cmp r4, 0x5a |
0x00002afe movs r0, r0 |
0x00002b00 cmp r0, 0x2e |
0x00002b02 movs r0, r0 |
0x00002b04 adds r3, 0 | r3 += 0;
0x00002b06 movs r0, r0 |
0x00002b08 cmp r0, 0x94 |
0x00002b0a movs r0, r0 |
0x00002b0c cmp r3, 0xd0 |
0x00002b0e movs r0, r0 |
0x00002b10 movs r7, 0xda | r7 = 0xda;
0x00002b12 movs r0, r0 |
0x00002b14 adds r2, 0xba | r2 += 0xba;
0x00002b16 movs r0, r0 |
0x00002b18 cmp r0, 2 |
0x00002b1a movs r0, r0 |
0x00002b1c cmp r3, 0x5c |
0x00002b1e movs r0, r0 |
0x00002b20 cmp r1, 0x4c |
0x00002b22 movs r0, r0 |
0x00002b24 cmp r1, 0x5a |
0x00002b26 movs r0, r0 |
0x00002b28 movs r7, 0x58 | r7 = 0x58;
0x00002b2a movs r0, r0 |
0x00002b2c adds r2, 0x2a | r2 += 0x2a;
0x00002b2e movs r0, r0 |
0x00002b30 movs r7, 0xbe | r7 = 0xbe;
0x00002b32 movs r0, r0 |
0x00002b34 cmp r1, 0x58 |
0x00002b36 movs r0, r0 |
0x00002b38 ldrh r4, [r7, r0] | r4 = *((r7 + r0));
0x00002b3a movs r0, r0 |
0x00002b3c ldrb r2, [r3, r5] | r2 = *((r3 + r5));
0x00002b3e movs r0, r0 |
0x00002b40 ldr r6, [r3, r1] | r6 = *((r3 + r1));
0x00002b42 movs r0, r0 |
0x00002b44 movs r6, 0x9e | r6 = 0x9e;
0x00002b46 movs r0, r0 |
0x00002b48 adds r1, 0x70 | r1 += 0x70;
0x00002b4a movs r0, r0 |
0x00002b4c movs r6, 0xbc | r6 = 0xbc;
0x00002b4e movs r0, r0 |
0x00002b50 cmp r2, 0xba |
0x00002b52 movs r0, r0 |
0x00002b54 movs r6, 0x4a | r6 = 0x4a;
0x00002b56 movs r0, r0 |
0x00002b58 adds r1, 0x1e | r1 += 0x1e;
0x00002b5a movs r0, r0 |
0x00002b5c movs r6, 0xb2 | r6 = 0xb2;
0x00002b5e movs r0, r0 |
0x00002b60 ldr r4, [r1, r5] | r4 = *((r1 + r5));
0x00002b62 movs r0, r0 |
0x00002b64 cmp r2, 0x50 |
0x00002b66 movs r0, r0 |
0x00002b68 movs r5, 0xf6 | r5 = 0xf6;
0x00002b6a movs r0, r0 |
0x00002b6c adds r0, 0xc4 | r0 += 0xc4;
0x00002b6e movs r0, r0 |
0x00002b70 movs r6, 0x58 | r6 = 0x58;
0x00002b72 movs r0, r0 |
0x00002b74 cmp r3, 0x72 |
0x00002b76 movs r0, r0 |
0x00002b78 movs r5, 0x9a | r5 = 0x9a;
0x00002b7a movs r0, r0 |
0x00002b7c adds r0, 0x6e | r0 += 0x6e;
0x00002b7e movs r0, r0 |
0x00002b80 movs r5, 0xba | r5 = 0xba;
0x00002b82 movs r0, r0 |
0x00002b84 movs r7, 0xf8 | r7 = 0xf8;
0x00002b86 movs r0, r0 |
0x00002b88 movs r5, 0x4a | r5 = 0x4a;
0x00002b8a movs r0, r0 |
0x00002b8c adds r0, 0x26 | r0 += 0x26;
0x00002b8e movs r0, r0 |
0x00002b90 movs r5, 0x72 | r5 = 0x72;
0x00002b92 movs r0, r0 |
0x00002b94 movs r6, 0xb2 | r6 = 0xb2;
0x00002b96 movs r0, r0 |
0x00002b98 movs r6, 0xb2 | r6 = 0xb2;
0x00002b9a movs r0, r0 |
0x00002b9c movs r6, 0xc0 | r6 = 0xc0;
0x00002b9e movs r0, r0 |
0x00002ba0 movs r4, 0xc0 | r4 = 0xc0;
0x00002ba2 movs r0, r0 |
0x00002ba4 cmp r7, 0x94 |
0x00002ba6 movs r0, r0 |
0x00002ba8 movs r4, 0xd8 | r4 = 0xd8;
0x00002baa movs r0, r0 |
0x00002bac cmp r1, 0x2a |
0x00002bae movs r0, r0 |
0x00002bb0 ldrsb r0, [r6, r6] | r0 = *((r6 + r6));
0x00002bb2 movs r0, r0 |
0x00002bb4 movs r4, 0x6a | r4 = 0x6a;
0x00002bb6 movs r0, r0 |
0x00002bb8 cmp r7, 0x42 |
0x00002bba movs r0, r0 |
0x00002bbc movs r4, 0x8e | r4 = 0x8e;
0x00002bbe movs r0, r0 |
0x00002bc0 cmp r1, 0x38 |
0x00002bc2 movs r0, r0 |
0x00002bc4 cmp r1, 0xfc |
0x00002bc6 movs r0, r0 |
0x00002bc8 cmp r0, 0xc6 |
0x00002bca movs r0, r0 |
0x00002bcc ldrsb r4, [r7, r4] | r4 = *((r7 + r4));
0x00002bce movs r0, r0 |
0x00002bd0 ldrh r6, [r5, r0] | r6 = *((r5 + r0));
0x00002bd2 movs r0, r0 |
0x00002bd4 ldrsb r6, [r6, r3] | r6 = *((r6 + r3));
0x00002bd6 movs r0, r0 |
0x00002bd8 movs r3, 0xac | r3 = 0xac;
0x00002bda movs r0, r0 |
0x00002bdc cmp r6, 0x84 |
0x00002bde movs r0, r0 |
0x00002be0 movs r3, 0xd0 | r3 = 0xd0;
0x00002be2 movs r0, r0 |
0x00002be4 movs r5, 0xe0 | r5 = 0xe0;
0x00002be6 movs r0, r0 |
0x00002be8 movs r3, 0x42 | r3 = 0x42;
0x00002bea movs r0, r0 |
0x00002bec movs r3, 0x6a | r3 = 0x6a;
0x00002bee movs r0, r0 |
0x00002bf0 cmp r6, 0x18 |
0x00002bf2 movs r0, r0 |
0x00002bf4 movs r7, 0xf2 | r7 = 0xf2;
0x00002bf6 movs r0, r0 |
0x00002bf8 movs r2, 0xf8 | r2 = 0xf8;
0x00002bfa movs r0, r0 |
0x00002bfc cmp r5, 0xd0 |
0x00002bfe movs r0, r0 |
0x00002c00 movs r3, 0x64 | r3 = 0x64;
0x00002c02 movs r0, r0 |
0x00002c04 movs r5, 0xbc | r5 = 0xbc;
0x00002c06 movs r0, r0 |
0x00002c08 cmp r0, 0x84 |
0x00002c0a movs r0, r0 |
0x00002c40 adds r0, 0x14 | r0 += 0x14;
0x00002c42 b 0x2784 | goto label_13;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x30bc */
| #include <stdint.h>
|
; (fcn) fcn.000030bc () | void fcn_000030bc (int16_t arg1) {
| int16_t var_8h;
| int16_t var_2ch;
| int16_t var_34h_2;
| int16_t var_3ch;
| r0 = arg1;
0x000030bc ldr r2, [pc, 0x148] |
0x000030be movs r1, 0 | r1 = 0;
0x000030c0 ldr r3, [pc, 0x148] | r3 = *(0x320c);
0x000030c2 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000030c4 ldr r7, [pc, 0x3c0] | r7 = *(0x3488);
0x000030c6 mov r8, r0 | r8 = r0;
0x000030c8 add r2, pc | r2 = 0x62d4;
0x000030ca vpush {d8} | __asm ("vpush {d8}");
0x000030ce sub sp, 0x44 |
0x000030d0 ldr r3, [r2, r3] |
0x000030d2 add r5, sp, 0x2c | r5 += var_2ch;
0x000030d4 mov r0, r5 | r0 = r5;
0x000030d6 ldr.w sb, [pc, 0x138] | sb = *(0x00003210);
0x000030da ldr r3, [r3] | r3 = *(0x62d4);
0x000030dc str r3, [sp, 0x3c] | var_3ch = r3;
0x000030de mov.w r3, 0 | r3 = 0;
0x000030e2 blx 0x1b04 | gettimeofday ();
0x000030e6 ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x000030ea add sb, pc | sb += pc;
| if (r2 == 0) {
0x000030ec cbz r2, 0x3122 | goto label_1;
| }
0x000030ee movw r6, 0xa120 |
0x000030f2 movs r7, 0 | r7 = 0;
0x000030f4 movt r6, 7 | r6 = 0x7a120;
| label_0:
0x000030f8 ldr.w r3, [r8] | r3 = *(r8);
0x000030fc ldr.w r4, [r3, r7, lsl 2] | offset_0 = r7 << 2;
| r4 = *((r3 + offset_0));
| if (r4 != 0) {
0x00003100 cbnz r4, 0x3110 | goto label_2;
| }
0x00003102 b 0x311c | goto label_3;
| do {
0x00003104 mov r0, r6 | r0 = r6;
0x00003106 blx 0x1b40 | g_usleep ();
0x0000310a mov r0, r5 | r0 = r5;
0x0000310c bl 0x2ecc | print_statistic ();
| label_2:
0x00003110 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00003112 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00003114 cmp r0, 0 |
0x00003116 bgt 0x3104 |
| } while (r0 > 0);
0x00003118 ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
| label_3:
0x0000311c adds r7, 1 | r7++;
0x0000311e cmp r2, r7 |
| if (r2 > r7) {
0x00003120 bhi 0x30f8 | goto label_0;
| }
| label_1:
0x00003122 ldr r7, [pc, 0xf0] |
0x00003124 mov r0, r5 | r0 = r5;
0x00003126 add r4, sp, 0x34 | r4 += var_34h_2;
0x00003128 bl 0x2ecc | print_statistic ();
0x0000312c add r7, pc | r7 = 0x6346;
0x0000312e movs r1, 0 | r1 = 0;
0x00003130 mov r0, r4 | r0 = r4;
0x00003132 ldr r6, [r7, 0x10] | r6 = *(0x6356);
0x00003134 blx 0x1b04 | gettimeofday ();
0x00003138 mov r1, r5 | r1 = r5;
0x0000313a mov r0, r4 | r0 = r4;
0x0000313c blx 0x1c44 | fcn_00001c44 ();
0x00003140 vcmpe.f64 d0, 0 | __asm ("vcmpe.f64 d0, 0");
0x00003144 vmrs apsr_nzcv, fpscr | __asm ("vmrs apsr_nzcv, fpscr");
0x00003148 ite gt |
| if (r1 <= 0) {
0x0000314a movgt r3, 1 | r3 = 1;
| }
| if (r1 > 0) {
0x0000314c movle r3, 0 | r3 = 0;
| }
0x0000314e cmp r6, 0 |
0x00003150 ite eq |
| if (r6 != 0) {
0x00003152 moveq r3, 0 | r3 = 0;
| }
| if (r6 == 0) {
0x00003154 andne r3, r3, 1 | r3 &= 1;
| }
0x00003158 vmov.f64 d8, d0 | __asm ("vmov.f64 d8, d0");
| if (r3 != 0) {
0x0000315c cbnz r3, 0x3194 | goto label_4;
| }
0x0000315e ldr r3, [pc, 0xb8] | r3 = *(0x321a);
0x00003160 movs r1, 1 | r1 = 1;
0x00003162 ldr r2, [pc, 0xb8] |
0x00003164 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00003168 add r2, pc | r2 = 0x638a;
0x0000316a str r6, [sp, 8] | var_8h = r6;
0x0000316c vstr d0, [sp] | __asm ("vstr d0, [sp]");
0x00003170 ldr r0, [r3] | r0 = *(0x321a);
0x00003172 blx 0x1bdc | fprintf_chk ()
| do {
0x00003176 ldr r2, [pc, 0xa8] |
0x00003178 ldr r3, [pc, 0x90] | r3 = *(0x320c);
0x0000317a add r2, pc | r2 = 0x63a0;
0x0000317c ldr r3, [r2, r3] | r3 = *(0x63a0);
0x0000317e ldr r2, [r3] | r2 = *(0x63a0);
0x00003180 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00003182 eors r2, r3 | r2 ^= r3;
0x00003184 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00003188 bne 0x31f6 | goto label_5;
| }
0x0000318a add sp, 0x44 |
0x0000318c vpop {d8} | __asm ("vpop {d8}");
0x00003190 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00003194 ldr r3, [pc, 0x80] | r3 = *(0x3218);
0x00003196 ldrd sl, fp, [r7, 0x18] | __asm ("ldrd sl, fp, [r7, 0x18]");
0x0000319a ldr r4, [pc, 0x88] |
0x0000319c ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000031a0 mov r0, sl | r0 = sl;
0x000031a2 mov r1, fp | r1 = fp;
0x000031a4 add r4, pc | r4 = 0x63ce;
0x000031a6 ldr r5, [r3] | r5 = *(0x3218);
0x000031a8 bl 0x4a24 | fcn_00004a24 (r0, r1, r2);
0x000031ac vldr d16, [pc, 0x50] | __asm ("vldr d16, [0x00003204]");
0x000031b0 mov r2, r6 | r2 = r6;
0x000031b2 vmov d18, r0, r1 | __asm ("vmov d18, r0, r1");
0x000031b6 movs r3, 0 | r3 = 0;
0x000031b8 mov r0, sl | r0 = sl;
0x000031ba mov r1, fp | r1 = fp;
0x000031bc vmul.f64 d16, d8, d16 | __asm ("vmul.f64 d16, d8, d16");
0x000031c0 vdiv.f64 d17, d18, d16 | __asm ("vdiv.f64 d17, d18, d16");
0x000031c4 vstr d17, [sp, 0x20] | __asm ("vstr d17, [sp, 0x20]");
0x000031c8 bl 0x4a80 | fcn_00004a80 (r0, r1, r2, r3);
0x000031cc vmov s15, r6 | __asm ("vmov s15, r6");
0x000031d0 mov r8, r0 | r8 = r0;
0x000031d2 vcvt.f64.u32 d17, s15 | __asm ("vcvt.f64.u32 d17, s15");
0x000031d6 mov sb, r1 | sb = r1;
0x000031d8 mov r2, r4 | r2 = r4;
0x000031da mov r0, r5 | r0 = r5;
0x000031dc movs r1, 1 | r1 = 1;
0x000031de strd r8, sb, [sp, 0x18] | __asm ("strd r8, sb, [sp, 0x18]");
0x000031e2 vstr d8, [sp, 0x10] | __asm ("vstr d8, [sp, 0x10]");
0x000031e6 vdiv.f64 d16, d17, d8 | __asm ("vdiv.f64 d16, d17, d8");
0x000031ea str r6, [sp, 8] | var_8h = r6;
0x000031ec vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x000031f0 blx 0x1bdc | fprintf_chk ()
0x000031f4 b 0x3176 |
| } while (1);
| label_5:
0x000031f6 blx 0x1cec | fcn_00001cec ();
0x000031fa nop |
0x000031fc nop.w |
0x00003200 movs r0, r0 |
0x00003202 movs r0, r0 |
0x00003204 movs r0, r0 |
0x00003206 lsls r0, r2 | r0 <<= r2;
0x00003208 ldr r5, [pc, 0x280] | r5 = *(0x348c);
0x0000320a movs r0, r0 |
0x0000320c lsls r0, r5, 5 | r0 = r5 << 5;
0x0000320e movs r0, r0 |
0x00003210 ldr r5, [pc, 0x1f8] | r5 = *(0x340c);
0x00003212 movs r0, r0 |
0x00003214 str r0, [r7, r7] | *((r7 + r7)) = r0;
0x00003216 movs r0, r0 |
0x00003218 lsls r4, r6, 5 | r4 = r6 << 5;
0x0000321a movs r0, r0 |
0x0000321c adds r0, r1, 3 | r0 = r1 + 3;
0x0000321e movs r0, r0 |
0x00003220 ldr r4, [pc, 0x3b8] | r4 = *(0x35dc);
0x00003222 movs r0, r0 |
0x00003224 adds r0, r5, 0 | r0 = r5 + 0;
0x00003226 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x3230 */
| #include <stdint.h>
|
; (fcn) fcn.00003230 () | void fcn_00003230 (int16_t arg_28h, uint32_t arg1, uint32_t arg2, uint32_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| do {
0x00001c28 invalid | void (*0x1c2c)() ();
0x00003230 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00003234 cmp r1, 0 |
0x00003236 it ne |
| if (r1 != 0) {
0x00003238 cmpne r0, 0 | __asm ("cmpne arg_28h");
| }
0x0000323a ldr r7, [pc, 0xac] |
0x0000323c sub sp, 0xc |
0x0000323e mov r5, r0 | r5 = r0;
0x00003240 mov r6, r1 | r6 = r1;
0x00003242 ldr.w r8, [sp, 0x28] | r8 = *(arg_28h);
0x00003246 add r7, pc | r7 = 0x6534;
| if (r1 == 0) {
0x00003248 beq 0x32a4 | goto label_1;
| }
0x0000324a cmp r2, r3 |
0x0000324c mov r4, r3 | r4 = r3;
0x0000324e it lt |
| if (r2 >= r3) {
0x00003250 addlt r4, r2, 1 | r4 = r2 + 1;
| }
| if (r2 >= r3) {
0x00003252 bge 0x3264 | goto label_2;
| }
| label_0:
0x00003254 mov r2, r4 | r2 = r4;
0x00003256 mov r1, r6 | r1 = r6;
0x00003258 mov r0, r5 | r0 = r5;
0x0000325a add sp, 0xc |
0x0000325c pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x00003260 b.w 0x1c28 |
| } while (1);
| label_2:
0x00003264 ldr r0, [pc, 0x84] |
0x00003266 add r0, pc | r0 = 0x6556;
0x00003268 blx 0x1b70 | g_path_get_basename ();
0x0000326c ldr r3, [pc, 0x80] | r3 = *(0x32f0);
0x0000326e mov sb, r0 | sb = r0;
0x00003270 ldr r2, [pc, 0x80] |
0x00003272 movs r1, 1 | r1 = 1;
0x00003274 ldr r7, [r7, r3] | r7 = *((r7 + r3));
0x00003276 ldr r3, [pc, 0x80] |
0x00003278 add r2, pc | r2 = 0x6570;
0x0000327a add r3, pc | r3 = 0x6578;
0x0000327c str r3, [sp] | *(sp) = r3;
0x0000327e movs r3, 0x90 | r3 = 0x90;
0x00003280 ldr r0, [r7] | r0 = *(r7);
0x00003282 str r3, [sp, 4] | var_4h = r3;
0x00003284 mov r3, sb | r3 = sb;
0x00003286 blx 0x1bdc | fprintf_chk ()
0x0000328a subs r2, r4, 1 | r2 = r4 - 1;
0x0000328c ldr r0, [r7] | r0 = *(r7);
0x0000328e str r2, [sp] | *(sp) = r2;
0x00003290 mov r3, r8 | r3 = r8;
0x00003292 ldr r2, [pc, 0x68] |
0x00003294 movs r1, 1 | r1 = 1;
0x00003296 add r2, pc | r2 = 0x6598;
0x00003298 blx 0x1bdc | fprintf_chk ()
0x0000329c mov r0, sb | r0 = sb;
0x0000329e blx 0x1d14 | g_hash_table_unref ();
0x000032a2 b 0x3254 | goto label_0;
| label_1:
0x000032a4 ldr r0, [pc, 0x58] |
0x000032a6 add r0, pc | r0 = 0x65aa;
0x000032a8 blx 0x1b70 | g_path_get_basename ();
0x000032ac ldr r3, [pc, 0x40] | r3 = *(0x32f0);
0x000032ae mov r4, r0 | r4 = r0;
0x000032b0 ldr r2, [pc, 0x50] |
0x000032b2 movs r1, 1 | r1 = 1;
0x000032b4 ldr r7, [r7, r3] | r7 = *((r7 + r3));
0x000032b6 ldr r3, [pc, 0x50] |
0x000032b8 add r2, pc | r2 = 0x65c0;
0x000032ba ldr r0, [r7] | r0 = *(r7);
0x000032bc add r3, pc | r3 = 0x65ca;
0x000032be str r3, [sp] | *(sp) = r3;
0x000032c0 movs r3, 0x89 | r3 = 0x89;
0x000032c2 str r3, [sp, 4] | var_4h = r3;
0x000032c4 mov r3, r4 | r3 = r4;
0x000032c6 blx 0x1bdc | fprintf_chk ()
0x000032ca ldr r2, [pc, 0x40] |
0x000032cc mov r3, r6 | r3 = r6;
0x000032ce ldr r0, [r7] | r0 = *(r7);
0x000032d0 movs r1, 1 | r1 = 1;
0x000032d2 str r5, [sp] | *(sp) = r5;
0x000032d4 add r2, pc | r2 = 0x65e6;
0x000032d6 blx 0x1bdc | fprintf_chk ()
0x000032da mov r0, r4 | r0 = r4;
0x000032dc add sp, 0xc |
0x000032de pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x000032e2 b.w 0x1d10 | return void (*0x1d10)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x1ed8 */
| #include <stdint.h>
|
; (fcn) main () | int32_t main (int32_t argc, char ** argv) {
| int16_t var_0h;
| int16_t var_4h;
| 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;
| char ** var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_cch;
| int16_t var_d4h;
| int16_t var_13ch;
| r0 = argc;
| r1 = argv;
| /* [13] -r-x section size 11608 named .text */
0x00001ed8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00001edc sub sp, 0x144 |
0x00001ede add r3, sp, 0x3c | r3 += var_3ch;
0x00001ee0 ldr.w r2, [pc, 0xb48] |
0x00001ee4 add r5, sp, 0x48 | r5 += var_48h;
0x00001ee6 add.w sl, sp, 0x38 | sl += var_38h;
0x00001eea str r3, [sp, 0x30] | var_30h = r3;
0x00001eec ldr.w r3, [pc, 0xb40] | r3 = *(0x2a30);
0x00001ef0 add r2, pc | r2 = 0x4920;
0x00001ef2 str.w r1, [sl] | __asm ("str.w r1, [sl]");
0x00001ef6 str r0, [sp, 0x3c] | var_3ch = r0;
0x00001ef8 ldr r3, [r2, r3] |
0x00001efa ldr r3, [r3] | r3 = *(0x4920);
0x00001efc str r3, [sp, 0x13c] | var_13ch = r3;
0x00001efe mov.w r3, 0 | r3 = 0;
0x00001f02 blx 0x1d48 | fcn_00001d48 ();
0x00001f04 vmax.s32 d4, d2, d4 | __asm ("vmax.s32 d4, d2, d4");
0x00001f08 ldr.w r0, [pc, 0xb28] |
0x00001f0c add r0, pc | r0 = 0x4944;
0x00001f0e blx 0x1b4c | g_option_context_new ();
0x00001f12 ldr.w r1, [pc, 0xb24] |
0x00001f16 ldr.w r3, [pc, 0xb24] |
0x00001f1a str r0, [sp, 0x1c] | var_1ch = r0;
0x00001f1c movs r0, 0xd | r0 = 0xd;
0x00001f1e add r1, pc | r1 = 0x495c;
0x00001f20 add r3, pc | r3 = 0x4962;
0x00001f22 str r3, [sp, 0x20] | var_20h = r3;
0x00001f24 blx 0x1abc | signal (r0);
0x00001f28 ldr.w r3, [pc, 0xb14] |
0x00001f2c add r0, sp, 0x4c | r0 += var_4ch;
0x00001f2e add r3, pc | r3 = 0x4972;
0x00001f30 str r3, [sp, 0x48] | var_48h = r3;
0x00001f32 blx 0x1e78 | fcn_00001e78 ();
0x00001f36 mov.w r3, 0x10000000 | r3 = 0x10000000;
0x00001f3a movs r2, 0 | r2 = 0;
0x00001f3c mov r1, r5 | r1 = r5;
0x00001f3e movs r0, 0xa | r0 = 0xa;
0x00001f40 str r3, [sp, 0xcc] | var_cch = r3;
0x00001f42 blx 0x1d6c | fcn_00001d6c ();
0x00001f46 mov r1, r5 | r1 = r5;
0x00001f48 movs r2, 0 | r2 = 0;
0x00001f4a movs r0, 0xc | r0 = 0xc;
0x00001f4c blx 0x1d6c | fcn_00001d6c ();
0x00001f50 ldr.w r0, [pc, 0xaf0] |
0x00001f54 add r0, pc | r0 = 0x499c;
0x00001f56 bl 0x45ac | get_installation_path_for ();
0x00001f5a movs r2, 0 | r2 = 0;
0x00001f5c str r0, [sp, 0x2c] | var_2ch = r0;
0x00001f5e mov r1, r2 | r1 = r2;
0x00001f60 blx 0x1d54 | fcn_00001d54 ();
0x00001f64 str r0, [sp, 0x18] | var_18h = r0;
0x00001f66 cmp r0, 0 |
| if (r0 == 0) {
0x00001f68 beq.w 0x2772 | goto label_5;
| }
0x00001f6c blx 0x1b58 | r0 = get_debug_level ();
0x00001f70 cmp r0, 0 |
| if (r0 != 0) {
0x00001f72 bne.w 0x256c | goto label_6;
| }
0x00001f74 strh r3, [r7, 0x16] | *((r7 + 0x16)) = r3;
| label_4:
0x00001f76 ldr.w r1, [pc, 0xad0] |
0x00001f7a movs r2, 0 | r2 = 0;
0x00001f7c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00001f7e mov r8, r4 | r8 = r4;
0x00001f80 add r1, pc | r1 = 0x49ce;
0x00001f82 blx 0x1d9c | fcn_00001d9c ();
0x00001f86 ldr.w r3, [pc, 0xac4] | r3 = *(0x00002a4c);
0x00001f8a add r3, pc | r3 += pc;
0x00001f8c adds r3, 0x2c | r3 += 0x2c;
0x00001f8e str r3, [sp, 0x34] | var_34h = r3;
0x00001f90 ldr.w r3, [pc, 0xabc] |
0x00001f94 add r3, pc | r3 = 0x49e8;
0x00001f96 str r3, [sp, 0x24] | var_24h = r3;
0x00001f98 add r3, sp, 0x44 | r3 += var_44h;
0x00001f9a str r3, [sp, 0x28] | var_28h = r3;
| do {
| label_0:
0x00001f9c ldr r0, [sp, 0x18] | r0 = var_18h;
0x00001f9e blx 0x1d84 | r0 = fcn_00001d84 ();
0x00001fa2 mov r7, r0 | r7 = r0;
0x00001fa4 cmp r0, 0 |
| if (r0 == 0) {
0x00001fa6 beq.w 0x20fe | goto label_7;
| }
| label_1:
0x00001faa blx 0x1dd0 | r0 = fcn_00001dd0 ();
0x00001fae cmp r0, 0xa |
0x00001fb0 bls 0x1f9c |
| } while (r0 < 0xa);
0x00001fb2 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00001fb4 mov r0, r7 | r0 = r7;
0x00001fb6 blx 0x1e3c | r0 = fcn_00001e3c ();
0x00001fba cmp r0, 0 |
| if (r0 == 0) {
0x00001fbc beq 0x1f9c | goto label_0;
| }
0x00001fbe ldr.w r1, [pc, 0xa94] |
0x00001fc2 mov r0, r7 | r0 = r7;
0x00001fc4 add r1, pc | r1 = 0x4a1e;
0x00001fc6 blx 0x1c80 | r0 = fcn_00001c80 ();
0x00001fca cmp r0, 0 |
| if (r0 == 0) {
0x00001fcc beq 0x1f9c | goto label_0;
| }
0x00001fce movs r2, 0 | r2 = 0;
0x00001fd0 mov r1, r7 | r1 = r7;
0x00001fd2 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00001fd4 blx 0x1b7c | g_build_filename ();
0x00001fd8 movs r1, 1 | r1 = 1;
0x00001fda mov r5, r0 | r5 = r0;
0x00001fdc blx 0x1ac8 | r0 = g_module_open ();
0x00001fe0 mov r4, r0 | r4 = r0;
0x00001fe2 mov r0, r5 | r0 = r5;
0x00001fe4 blx 0x1d14 | g_hash_table_unref ();
0x00001fe8 cmp r4, 0 |
| if (r4 == 0) {
0x00001fea beq.w 0x291a | goto label_8;
| }
0x00001fee add.w r5, r7, 0xa | r5 = r7 + 0xa;
0x00001ff2 movs r1, 0x5f | r1 = 0x5f;
0x00001ff4 mov r0, r5 | r0 = r5;
0x00001ff6 blx 0x1e84 | r0 = fcn_00001e84 ();
0x00001ffa cmp r0, 0 |
| if (r0 == 0) {
0x00001ffc beq.w 0x272a | goto label_9;
| }
0x00002000 ldr.w r2, [pc, 0xa54] | r2 = *(0x00002a58);
0x00002004 subs r3, r0, r5 | r3 = r0 - r5;
0x00002006 str r5, [sp] | *(sp) = r5;
0x00002008 add r5, sp, 0xd4 | r5 += var_d4h;
0x0000200a movs r1, 0x64 | r1 = 0x64;
0x0000200c mov r0, r5 | r0 = r5;
0x0000200e add r2, pc | r2 += pc;
0x00002010 str r2, [sp, 4] | var_4h = r2;
0x00002012 ldr.w r2, [pc, 0xa48] | r2 = *(0x00002a5c);
0x00002016 add r2, pc | r2 += pc;
0x00002018 blx 0x1e0c | fcn_00001e0c ();
0x0000201c ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000201e mov r1, r5 | r1 = r5;
0x00002020 mov r0, r4 | r0 = r4;
0x00002022 blx 0x1d78 | r0 = fcn_00001d78 ();
0x00002026 cmp r0, 0 |
| if (r0 == 0) {
0x00002028 beq.w 0x2718 | goto label_10;
| }
0x0000202c ldr r4, [sp, 0x44] | r4 = var_44h;
0x0000202e cmp r4, 0 |
| if (r4 == 0) {
0x00002030 beq 0x1f9c | goto label_0;
| }
0x00002032 ldr.w sb, [r8, 4] | sb = *((r8 + 4));
0x00002036 ldr.w fp, [r4] | fp = *(r4);
0x0000203a ldr.w r6, [r8] | r6 = *(r8);
0x0000203c str r0, [r0] | *(r0) = r0;
0x0000203e cmp.w sb, 0 |
| if (sb == 0) {
0x00002042 beq 0x2062 | goto label_11;
| }
0x00002044 subs r6, 4 | r6 -= 4;
0x00002046 movs r5, 0 | r5 = 0;
| do {
0x00002048 ldr r3, [r6, 4]! | r3 = *((r6 += 4));
| if (r3 != 0) {
0x0000204c cbz r3, 0x205c |
0x0000204e ldr r1, [r3] | r1 = *(r3);
0x00002050 mov r0, fp | r0 = fp;
0x00002052 blx 0x1e24 | r0 = fcn_00001e24 ();
0x00002056 cmp r0, 0 |
| if (r0 == 0) {
0x00002058 beq.w 0x21e2 | goto label_12;
| }
| }
0x0000205c adds r5, 1 | r5++;
0x0000205e cmp r5, sb |
0x00002060 bne 0x2048 |
| } while (r5 != sb);
| label_11:
0x00002062 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00002064 cmp r3, 0 |
| if (r3 == 0) {
0x00002066 beq.w 0x2236 | goto label_13;
| }
0x0000206a ldr.w r0, [pc, 0x9f4] |
0x0000206e add r0, pc | r0 = 0x4ad4;
0x00002070 blx r3 | uint32_t (*r3)(uint32_t) (r0);
| label_2:
0x00002072 mov r1, r4 | r1 = r4;
0x00002074 mov r0, r8 | r0 = r8;
0x00002076 blx 0x1e30 | fcn_00001e30 ();
0x0000207a ldr r1, [r4] | r1 = *(r4);
0x0000207c movs r3, 0 | r3 = 0;
0x0000207e ldr.w r2, [pc, 0x9e4] | r2 = *(0x00002a64);
0x00002082 str r3, [sp] | *(sp) = r3;
0x00002084 mov r0, r1 | r0 = r1;
0x00002086 add r2, pc | r2 += pc;
0x00002088 blx 0x1b64 | g_option_group_new ();
0x0000208c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000208e mov r5, r0 | r5 = r0;
0x00002090 blx r3 | r0 = uint32_t (*r3)(uint32_t) (r3);
0x00002092 mov r1, r0 | r1 = r0;
0x00002094 mov r0, r5 | r0 = r5;
0x00002096 blx 0x1b94 | g_option_group_add_entries ();
0x0000209a ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000209c mov r1, r5 | r1 = r5;
0x0000209e blx 0x1aec | g_option_context_add_group ();
0x000020a2 blx 0x1b58 | r0 = get_debug_level ();
0x000020a6 cmp r0, 0 |
| if (r0 == 0) {
0x000020a8 beq.w 0x1f9c | goto label_0;
| }
0x000020ac ldr.w r0, [pc, 0x9b8] |
0x000020b0 add r0, pc | r0 = 0x4b1c;
0x000020b2 blx 0x1b70 | g_path_get_basename ();
0x000020b6 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000020b8 mov r5, r0 | r5 = r0;
0x000020ba ldr.w r3, [pc, 0x9b0] | r3 = *(0x2a6e);
0x000020be movs r1, 1 | r1 = 1;
0x000020c0 ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x000020c2 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000020c4 ldr.w r2, [pc, 0x9a8] | r2 = *(0x00002a70);
0x000020c8 str r3, [sp] | *(sp) = r3;
0x000020ca movs r3, 0xf7 | r3 = 0xf7;
0x000020cc str r3, [sp, 4] | var_4h = r3;
0x000020ce add r2, pc | r2 += pc;
0x000020d0 mov r3, r5 | r3 = r5;
0x000020d2 ldr r0, [r6] | r0 = *(r6);
0x000020d4 blx 0x1bdc | fprintf_chk ()
0x000020d8 ldr.w r2, [pc, 0x998] | r2 = *(0x00002a74);
0x000020dc movs r1, 1 | r1 = 1;
0x000020de ldr r3, [r4] | r3 = *(r4);
0x000020e0 str r7, [sp] | *(sp) = r7;
0x000020e2 add r2, pc | r2 += pc;
0x000020e4 ldr r0, [r6] | r0 = *(r6);
0x000020e6 blx 0x1bdc | fprintf_chk ()
0x000020ea mov r0, r5 | r0 = r5;
0x000020ec blx 0x1d14 | g_hash_table_unref ();
0x000020f0 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000020f2 blx 0x1d84 | r0 = fcn_00001d84 ();
0x000020f6 mov r7, r0 | r7 = r0;
0x000020f8 cmp r0, 0 |
| if (r0 != 0) {
0x000020fa bne.w 0x1faa | goto label_1;
| }
| label_7:
0x000020fe ldr r0, [sp, 0x18] | r0 = var_18h;
0x00002100 mov r4, r8 | r4 = r8;
0x00002102 blx 0x1c5c | fcn_00001c5c ();
0x00002106 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0000210a cmp r3, 0 |
| if (r3 == 0) {
0x0000210c beq.w 0x24e2 | goto label_14;
| }
| label_3:
0x00002110 blx 0x1b58 | r0 = get_debug_level ();
0x00002114 cmp r0, 0 |
| if (r0 != 0) {
0x00002116 bne.w 0x2496 | goto label_15;
| }
| label_12:
0x000021e2 blx 0x1b58 | r0 = get_debug_level ();
0x000021e6 cmp r0, 0 |
| if (r0 == 0) {
0x000021e8 beq.w 0x1f9c | goto label_0;
| }
0x000021ec ldr.w r0, [pc, 0x8a8] |
0x000021f0 add r0, pc | r0 = 0x4c8c;
0x000021f2 blx 0x1b70 | g_path_get_basename ();
0x000021f6 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000021f8 mov r5, r0 | r5 = r0;
0x000021fa ldr.w r3, [pc, 0x870] |
0x000021fe movs r1, 1 | r1 = 1;
0x00002200 ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x00002202 ldr.w r3, [pc, 0x898] | r3 = *(0x00002a9c);
0x00002206 ldr.w r2, [pc, 0x898] | r2 = *(0x00002aa0);
0x0000220a add r3, pc | r3 = 0x4c7c;
0x0000220c adds r3, 0x2c | r3 += 0x2c;
0x0000220e add r2, pc | r2 += pc;
0x00002210 str r3, [sp] | *(sp) = r3;
0x00002212 movs r3, 0xe7 | r3 = 0xe7;
0x00002214 str r3, [sp, 4] | var_4h = r3;
0x00002216 mov r3, r0 | r3 = r0;
0x00002218 ldr r0, [r6] | r0 = *(r6);
0x0000221a blx 0x1bdc | fprintf_chk ()
0x0000221e ldr.w r2, [pc, 0x884] |
0x00002222 movs r1, 1 | r1 = 1;
0x00002224 ldr r3, [r4] | r3 = *(r4);
0x00002226 ldr r0, [r6] | r0 = *(r6);
0x00002228 add r2, pc | r2 = 0x4cd2;
0x0000222a blx 0x1bdc | fprintf_chk ()
0x0000222e mov r0, r5 | r0 = r5;
0x00002230 blx 0x1d14 | g_hash_table_unref ();
0x00002234 b 0x1f9c | goto label_0;
| label_13:
0x00002236 ldr.w r0, [pc, 0x870] | r0 = *(0x00002aa8);
0x0000223a add r0, pc | r0 += pc;
0x0000223c blx 0x1b70 | g_path_get_basename ();
0x00002240 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00002242 mov r5, r0 | r5 = r0;
0x00002244 ldr.w r3, [pc, 0x864] | r3 = *(0x00002aac);
0x00002248 movs r1, 1 | r1 = 1;
0x0000224a ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x0000224c ldr.w r3, [pc, 0x860] | r3 = *(0x00002ab0);
0x00002250 ldr.w r2, [pc, 0x860] | r2 = *(0x00002ab4);
0x00002254 ldr r0, [r6] | r0 = *(r6);
0x00002256 add r3, pc | r3 += pc;
0x00002258 adds r3, 0x2c | r3 += 0x2c;
0x0000225a add r2, pc | r2 += pc;
0x0000225c str r3, [sp] | *(sp) = r3;
0x0000225e movs r3, 0xee | r3 = 0xee;
0x00002260 str r3, [sp, 4] | var_4h = r3;
0x00002262 mov r3, r5 | r3 = r5;
0x00002264 blx 0x1bdc | fprintf_chk ()
0x00002268 ldr.w r2, [pc, 0x84c] | r2 = *(0x00002ab8);
0x0000226c movs r1, 1 | r1 = 1;
0x0000226e ldr r0, [r6] | r0 = *(r6);
0x00002270 ldr r3, [r4] | r3 = *(r4);
0x00002272 add r2, pc | r2 += pc;
0x00002274 blx 0x1bdc | fprintf_chk ()
0x00002278 mov r0, r5 | r0 = r5;
0x0000227a blx 0x1d14 | g_hash_table_unref ();
0x0000227e b 0x2072 | goto label_2;
| label_15:
0x00002496 ldr.w r0, [pc, 0x668] | r0 = *(0x00002b00);
0x0000249a add r0, pc | r0 += pc;
0x0000249c blx 0x1b70 | g_path_get_basename ();
0x000024a0 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000024a2 mov r5, r0 | r5 = r0;
0x000024a4 ldr.w r3, [pc, 0x5c4] | r3 = *(0x2a6c);
0x000024a8 movs r1, 1 | r1 = 1;
0x000024aa ldr r7, [r2, r3] | r7 = *((r2 + r3));
0x000024ac ldr.w r3, [pc, 0x654] |
0x000024b0 ldr.w r2, [pc, 0x654] |
0x000024b4 add r3, pc | r3 = 0x4fbc;
0x000024b6 adds r3, 0x2c | r3 += 0x2c;
0x000024b8 add r2, pc | r2 = 0x4fc4;
0x000024ba str r3, [sp] | *(sp) = r3;
0x000024bc mov.w r3, 0x102 | r3 = 0x102;
0x000024c0 str r3, [sp, 4] | var_4h = r3;
0x000024c2 mov r3, r0 | r3 = r0;
0x000024c4 ldr r0, [r7] | r0 = *(r7);
0x000024c6 blx 0x1bdc | fprintf_chk ()
0x000024ca ldr.w r2, [pc, 0x640] |
0x000024ce movs r1, 1 | r1 = 1;
0x000024d0 ldr r0, [r7] | r0 = *(r7);
0x000024d2 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000024d4 add r2, pc | r2 = 0x4fe6;
0x000024d6 blx 0x1bdc | fprintf_chk ()
0x000024d8 invalid |
0x000024dc blx 0x1d14 | g_hash_table_unref ();
0x000024e0 b 0x211a | void (*0x211a)() ();
| label_14:
0x000024e2 ldr.w r3, [pc, 0x62c] | r3 = *(0x00002b10);
0x000024e6 ldr.w r8, [pc, 0x62c] | r8 = *(0x00002b14);
0x000024ea ldr.w r7, [pc, 0x62c] | r7 = *(0x00002b18);
0x000024ee add r3, pc | r3 += pc;
0x000024f0 mov r0, r3 | r0 = r3;
0x000024f2 mov sb, r3 | sb = r3;
0x000024f4 blx 0x1b70 | g_path_get_basename ();
0x000024f8 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000024fa add r8, pc | r8 += pc;
0x000024fc ldr.w r3, [pc, 0x5ac] | r3 = *(0x00002aac);
0x00002500 mov r6, r0 | r6 = r0;
0x00002502 add r7, pc | r7 += pc;
0x00002504 add.w r8, r8, 0x2c | r8 += 0x2c;
0x00002508 movs r1, 1 | r1 = 1;
0x0000250a ldr r5, [r2, r3] | r5 = *((r2 + r3));
0x0000250c movs r3, 0xfe | r3 = 0xfe;
0x0000250e str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00002512 mov r2, r7 | r2 = r7;
0x00002514 str r3, [sp, 4] | var_4h = r3;
0x00002516 mov r3, r6 | r3 = r6;
0x00002518 ldr r0, [r5] | r0 = *(r5);
0x0000251a blx 0x1bdc | fprintf_chk ()
0x0000251e ldr.w r2, [pc, 0x5fc] |
0x00002522 movs r1, 1 | r1 = 1;
0x00002524 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00002526 ldr r0, [r5] | r0 = *(r5);
0x00002528 add r2, pc | r2 = 0x504a;
0x0000252a blx 0x1bdc | fprintf_chk ()
0x0000252e mov r0, r6 | r0 = r6;
0x00002530 blx 0x1d14 | g_hash_table_unref ();
0x00002534 mov r0, sb | r0 = sb;
0x00002536 blx 0x1b70 | g_path_get_basename ();
0x0000253a movs r3, 0xff | r3 = 0xff;
0x0000253c str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00002540 str r3, [sp, 4] | var_4h = r3;
0x00002542 mov r8, r0 | r8 = r0;
0x00002544 mov r2, r7 | r2 = r7;
0x00002546 mov r3, r0 | r3 = r0;
0x00002548 movs r1, 1 | r1 = 1;
0x0000254a ldr r0, [r5] | r0 = *(r5);
0x0000254c blx 0x1bdc | fprintf_chk ()
0x00002550 ldr.w r3, [pc, 0x5cc] |
0x00002554 movs r1, 1 | r1 = 1;
0x00002556 ldr.w r2, [pc, 0x5cc] | r2 = *(0x00002b24);
0x0000255a ldr r0, [r5] | r0 = *(r5);
0x0000255c add r3, pc | r3 = 0x5080;
0x0000255e add r2, pc | r2 += pc;
0x00002560 blx 0x1bdc | fprintf_chk ()
0x00002564 mov r0, r8 | r0 = r8;
0x00002566 blx 0x1d14 | g_hash_table_unref ();
0x0000256a b 0x2110 | goto label_3;
| label_6:
0x0000256c ldr.w r0, [pc, 0x5b8] |
0x00002570 add r0, pc | r0 = 0x509c;
0x00002572 blx 0x1b70 | g_path_get_basename ();
0x00002576 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00002578 mov r5, r0 | r5 = r0;
0x0000257a ldr.w r3, [pc, 0x4f0] |
0x0000257e movs r1, 1 | r1 = 1;
0x00002580 ldr r7, [r2, r3] | r7 = *((r2 + r3));
0x00002582 ldr.w r3, [pc, 0x5a8] | r3 = *(0x00002b2c);
0x00002586 ldr.w r2, [pc, 0x5a8] | r2 = *(0x00002b30);
0x0000258a add r3, pc | r3 = 0x4ffc;
0x0000258c adds r3, 0x2c | r3 += 0x2c;
0x0000258e add r2, pc | r2 += pc;
0x00002590 str r3, [sp] | *(sp) = r3;
0x00002592 movs r3, 0xda | r3 = 0xda;
0x00002594 str r3, [sp, 4] | var_4h = r3;
0x00002596 mov r3, r5 | r3 = r5;
0x00002598 ldr r0, [r7] | r0 = *(r7);
0x0000259a blx 0x1bdc | fprintf_chk ()
0x0000259e ldr.w r2, [pc, 0x594] |
0x000025a2 movs r1, 1 | r1 = 1;
0x000025a4 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000025a6 ldr r0, [r7] | r0 = *(r7);
0x000025a8 add r2, pc | r2 = 0x50e2;
0x000025aa blx 0x1bdc | fprintf_chk ()
0x000025ae mov r0, r5 | r0 = r5;
0x000025b0 blx 0x1d14 | g_hash_table_unref ();
0x000025b4 b 0x1f76 | goto label_4;
| label_10:
0x00002718 blx 0x1b58 | r0 = get_debug_level ();
0x0000271c cmp r0, 0 |
0x0000271e bne.w 0x29ce |
| while (1) {
0x00002722 mov r0, r4 | r0 = r4;
0x00002724 blx 0x1cf8 | fcn_00001cf8 ();
0x00002728 b 0x1f9c | goto label_0;
| label_9:
0x0000272a ldr.w r0, [pc, 0x44c] | r0 = *(0x00002b78);
0x0000272e add r0, pc | r0 += pc;
0x00002730 blx 0x1b70 | g_path_get_basename ();
0x00002734 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00002736 mov r4, r0 | r4 = r0;
0x00002738 ldr r3, [pc, 0x370] |
0x0000273a movs r1, 1 | r1 = 1;
0x0000273c ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x0000273e ldr.w r3, [pc, 0x43c] | r3 = *(0x00002b7c);
0x00002742 ldr.w r2, [pc, 0x43c] | r2 = *(0x00002b80);
0x00002746 add r3, pc | r3 = 0x51f6;
0x00002748 adds r3, 0x40 | r3 += 0x40;
0x0000274a add r2, pc | r2 += pc;
0x0000274c str r3, [sp] | *(sp) = r3;
0x0000274e movs r3, 0xb9 | r3 = 0xb9;
0x00002750 str r3, [sp, 4] | var_4h = r3;
0x00002752 mov r3, r4 | r3 = r4;
0x00002754 ldr r0, [r6] | r0 = *(r6);
0x00002756 blx 0x1bdc | fprintf_chk ()
0x00002758 orr.w r8, r2, pc, lsr 31 | r8 = r2 | (pc >> 31);
0x0000275c movs r4, 0x28 | r4 = 0x28;
0x0000275e mov r3, r7 | r3 = r7;
0x00002760 ldr r0, [r6] | r0 = *(r6);
0x00002762 movs r1, 1 | r1 = 1;
0x00002764 add r2, pc | r2 += pc;
0x00002766 blx 0x1bdc | fprintf_chk ()
0x0000276a mov r0, r4 | r0 = r4;
0x0000276c blx 0x1d14 | g_hash_table_unref ();
0x00002770 b 0x1f9c | goto label_0;
| label_5:
0x00002772 ldr.w r3, [pc, 0x414] | r3 = *(0x00002b88);
0x00002776 add r2, sp, 0x44 | r2 += var_44h;
0x00002778 str r2, [sp, 0x28] | var_28h = r2;
0x0000277a ldr.w r8, [pc, 0x410] | r8 = *(0x00002b8c);
0x0000277e add r3, pc | r3 += pc;
0x00002780 ldr.w r7, [pc, 0x40c] | r7 = *(0x00002b90);
| label_8:
0x0000291a ldr r0, [pc, 0x2bc] |
0x0000291c add r0, pc | r0 = 0x54fa;
0x0000291e blx 0x1b70 | g_path_get_basename ();
0x00002922 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00002924 mov r4, r0 | r4 = r0;
0x00002926 ldr r3, [pc, 0x184] | r3 = *(0x2aae);
0x00002928 movs r1, 1 | r1 = 1;
0x0000292a ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x0000292c ldr r3, [pc, 0x2ac] |
0x0000292e ldr r2, [pc, 0x2b0] |
0x00002930 add r3, pc | r3 = 0x5510;
0x00002932 adds r3, 0x40 | r3 += 0x40;
0x00002934 add r2, pc | r2 = 0x551a;
0x00002936 str r3, [sp] | *(sp) = r3;
0x00002938 movs r3, 0xaf | r3 = 0xaf;
0x0000293a str r3, [sp, 4] | var_4h = r3;
0x0000293c mov r3, r0 | r3 = r0;
0x0000293e ldr r0, [r6] | r0 = *(r6);
0x00002940 blx 0x1bdc | fprintf_chk ()
0x00002944 ldr r5, [r6] | r5 = *(r6);
0x00002946 blx 0x1c68 | fcn_00001c68 ();
0x0000294a ldr r2, [pc, 0x298] |
0x0000294c mov r3, r7 | r3 = r7;
0x0000294e str r0, [sp] | *(sp) = r0;
0x00002950 movs r1, 1 | r1 = 1;
0x00002952 mov r0, r5 | r0 = r5;
0x00002954 add r2, pc | r2 = 0x553e;
0x00002956 blx 0x1bdc | fprintf_chk ()
0x00002958 strd r4, r6, [r2, -0x80] | __asm ("strd r4, r6, [r2, -0x80]");
0x0000295c blx 0x1d14 | g_hash_table_unref ();
0x00002960 b.w 0x1f9c | goto label_0;
0x000029ce ldr r0, [pc, 0x228] |
0x000029d0 add r0, pc | r0 = 0x55ce;
0x000029d2 blx 0x1b70 | g_path_get_basename ();
0x000029d6 ldr r2, [sp, 0x20] | r2 = var_20h;
0x000029d8 mov r5, r0 | r5 = r0;
0x000029da ldr r3, [pc, 0x90] | r3 = *(0x2a6e);
0x000029dc movs r1, 1 | r1 = 1;
0x000029de ldr r6, [r2, r3] | r6 = *((r2 + r3));
0x000029e0 ldr r3, [pc, 0x218] |
0x000029e2 ldr r2, [pc, 0x21c] |
0x000029e4 add r3, pc | r3 = 0x55e4;
0x000029e6 adds r3, 0x40 | r3 += 0x40;
0x000029e8 add r2, pc |
0x000029ea str r3, [sp] | *(sp) = r3;
0x000029ec movs r3, 0xc5 | r3 = 0xc5;
0x000029ee str r3, [sp, 4] | var_4h = r3;
0x000029f0 mov r3, r0 | r3 = r0;
0x000029f2 ldr r0, [r6] | r0 = *(r6);
0x000029f4 blx 0x1bdc | fprintf_chk ()
0x000029f8 ldr r6, [r6] | r6 = *(r6);
0x000029fa blx 0x1c68 | r0 = fcn_00001c68 ();
0x000029fc ldmdb r6!, {r0, r7, sb, fp, lr} | __asm ("ldmdb r6!, {r0, r7, sb, fp, lr}");
0x00002a00 mov r3, r7 | r3 = r7;
0x00002a02 str r0, [sp] | *(sp) = r0;
0x00002a04 movs r1, 1 | r1 = 1;
0x00002a06 mov r0, r6 | r0 = r6;
0x00002a08 add r2, pc | r2 = 0x7ffa;
0x00002a0a blx 0x1bdc | fprintf_chk ()
0x00002a0e mov r0, r5 | r0 = r5;
0x00002a10 blx 0x1d14 | g_hash_table_unref ();
0x00002a14 b 0x2722 |
| }
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x4170 */
| #include <stdint.h>
|
; (fcn) sym.generate_log_line () | void generate_log_line (int16_t arg_98h, uint32_t arg1, uint32_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| tm * timeptr;
| int16_t var_3ch;
| int16_t var_44h;
| int32_t var_0h_2;
| char * s;
| int16_t var_74h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| do {
0x00001dcc bx pc | return void (*pc)() ();
0x00004170 push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00004174 mov r7, r2 | r7 = r2;
0x00004176 ldr r2, [pc, 0x160] |
0x00004178 mov r6, r3 | r6 = r3;
0x0000417a sub sp, 0x7c |
0x0000417c ldr r3, [pc, 0x15c] | r3 = *(0x42dc);
0x0000417e add r2, pc | r2 = 0x845c;
0x00004180 ldr r4, [pc, 0x15c] |
0x00004182 ldr.w r8, [sp, 0x98] | r8 = *(arg_98h);
0x00004186 ldr r3, [r2, r3] |
0x00004188 add r4, pc | r4 = 0x846c;
0x0000418a ldr r3, [r3] | r3 = imp.stdin;
0x0000418c str r3, [sp, 0x74] | var_74h = r3;
0x0000418e mov.w r3, 0 | r3 = 0;
0x00004192 cmp r0, 0 |
| if (arg_98h == ) {
0x00004194 beq 0x4278 | goto label_1;
| }
0x00004196 cmp.w r1, 0x2000 |
0x0000419a mov r2, r1 | r2 = r1;
0x0000419c ldr r1, [pc, 0x144] |
0x0000419e it ge |
| if (r1 < 0x2000) {
0x000041a0 movge r2, 0x2000 | r2 = 0x2000;
| }
0x000041a4 add r4, sp, 8 | r4 += var_8h;
0x000041a6 mov r5, r0 | r5 = r0;
0x000041a8 add.w sb, sp, 0x10 | sb += timeptr;
0x000041ac add r1, pc | r1 = 0x8494;
0x000041ae blx 0x1dc0 | fcn_00001dc0 ();
0x000041b2 movs r1, 0 | r1 = 0;
0x000041b4 mov r0, r4 | r0 = r4;
0x000041b6 blx 0x1b04 | gettimeofday ();
0x000041ba mov r0, r4 | r0 = r4;
0x000041bc mov r1, sb | r1 = sb;
0x000041be blx 0x1ad4 | localtime_r ();
0x000041c2 ldr r2, [pc, 0x124] |
0x000041c4 add r4, sp, 0x54 | r4 += s;
0x000041c6 movs r1, 0x20 | r1 = 0x20;
0x000041c8 mov r3, sb | r3 = sb;
0x000041ca mov r0, r4 | r0 = r4;
0x000041cc add r2, pc | r2 = 0x84ba;
0x000041ce blx 0x1bf4 | strftime (r0, r1, r2, r3);
0x000041d2 ldr r3, [pc, 0x118] |
0x000041d4 mov r2, r0 | r2 = r0;
0x000041d6 mov r1, r4 | r1 = r4;
0x000041d8 add r3, pc | r3 = 0x84ca;
0x000041da ldr r0, [r3, 0xc] | r0 = imp.stdin;
0x000041dc add r0, r5 | r0 += r5;
0x000041de blx 0x1dc0 | fcn_00001dc0 ();
0x000041e2 cmp r7, 0 |
| if (r7 != 0) {
0x000041e4 bne 0x426c | goto label_2;
| }
| label_0:
0x000041e6 ldr r7, [pc, 0x108] |
0x000041e8 mov r0, r4 | r0 = r4;
0x000041ea blx 0x1dd0 | r0 = fcn_00001dd0 ();
0x000041ee mov r2, r0 | r2 = r0;
0x000041f0 mov r1, r4 | r1 = r4;
0x000041f2 add r7, pc | r7 = 0x84e8;
0x000041f4 add r4, sp, 0x44 | r4 += var_44h;
0x000041f6 ldr r0, [r7] | r0 = imp.stdin;
0x000041f8 add r0, r5 | r0 += r5;
0x000041fa blx 0x1dc0 | fcn_00001dc0 ();
0x000041fe ldr r3, [pc, 0xf4] |
0x00004200 movs r2, 1 | r2 = 1;
0x00004202 mov r0, r4 | r0 = r4;
0x00004204 str.w r8, [sp, 4] | __asm ("str.w r8, [var_4h]");
0x00004208 add r3, pc | r3 = 0x8502;
0x0000420a str r3, [sp] | *(sp) = r3;
0x0000420c movs r3, 0x10 | r3 = 0x10;
0x0000420e mov r1, r3 | r1 = r3;
0x00004210 blx 0x1ddc | fcn_00001ddc ();
0x00004214 ldr.w r8, [r7, 4] | r8 = imp.stdin;
0x00004218 mov ip, r4 |
0x0000421a ldm.w ip!, {r0, r1} | r0 = *(ip!);
| r1 = *((ip! + 4));
0x0000421e movs r3, 5 | r3 = 5;
0x00004220 ldr r4, [pc, 0xd4] |
0x00004222 movs r2, 1 | r2 = 1;
0x00004224 add.w lr, r5, r8 | lr = r5 + r8;
0x00004228 str.w r0, [r5, r8] | __asm ("str.w r0, [r5, r8]");
0x0000422c add r0, sp, 0x3c | r0 += var_3ch;
0x0000422e str.w r1, [lr, 4] | __asm ("str.w r1, [lr, 4]");
0x00004232 add r4, pc | r4 = 0x852e;
0x00004234 ldrh.w r1, [ip] | r1 = *(ip);
0x00004238 strh.w r1, [lr, 8] | *((lr + 8)) = r1;
0x0000423c mov r1, r3 | r1 = r3;
0x0000423e strd r4, r6, [sp] | __asm ("strd r4, r6, [sp]");
0x00004242 blx 0x1ddc | fcn_00001ddc ();
0x00004246 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00004248 ldr r3, [r7, 8] | r3 = imp.stdin;
0x0000424a str r2, [r5, r3] | *((r5 + r3)) = r2;
0x0000424c ldr r2, [pc, 0xac] |
0x0000424e ldr r3, [pc, 0x8c] | r3 = *(0x42de);
0x00004250 add r2, pc | r2 = 0x8550;
0x00004252 ldr r3, [r2, r3] | r3 = imp.stdin;
0x00004254 ldr r2, [r3] | r2 = imp.stdin;
0x00004256 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00004258 eors r2, r3 | r2 ^= r3;
0x0000425a mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000425e bne 0x42d2 | goto label_3;
| }
0x00004260 mov r0, r5 | r0 = r5;
0x00004262 add sp, 0x7c |
0x00004264 pop.w {r4, r5, r6, r7, r8, sb, lr} |
0x00004268 b.w 0x1dcc |
| } while (1);
| label_2:
0x0000426c mov r2, sb | r2 = sb;
0x0000426e movs r1, 0x20 | r1 = 0x20;
0x00004270 mov r0, r4 | r0 = r4;
0x00004272 blx 0x1ecc | fcn_00001ecc ();
0x00004276 b 0x41e6 | goto label_0;
| label_1:
0x00004278 ldr r0, [pc, 0x84] |
0x0000427a add r0, pc | r0 = 0x857e;
0x0000427c blx 0x1b70 | g_path_get_basename ();
0x00004280 ldr r3, [pc, 0x80] | r3 = *(0x4304);
0x00004282 movs r2, 0x68 | r2 = 0x68;
0x00004284 ldr r1, [pc, 0x80] |
0x00004286 mov r5, r0 | r5 = r0;
0x00004288 ldr r4, [r4, r3] | r4 = *((r4 + r3));
0x0000428a mov r3, r0 | r3 = r0;
0x0000428c str r2, [sp, 4] | var_4h = r2;
0x0000428e add r1, pc | r1 = 0x859a;
0x00004290 ldr r2, [pc, 0x78] |
0x00004292 adds r1, 0x1c | r1 += 0x1c;
0x00004294 str r1, [sp] | *(sp) = r1;
0x00004296 movs r1, 1 | r1 = 1;
0x00004298 ldr r0, [r4] | r0 = *(r4);
0x0000429a add r2, pc | r2 = 0x85aa;
0x0000429c blx 0x1bdc | fprintf_chk ()
0x000042a0 ldr r0, [pc, 0x6c] |
0x000042a2 movs r2, 0xf | r2 = 0xf;
0x000042a4 ldr r3, [r4] | r3 = *(r4);
0x000042a6 movs r1, 1 | r1 = 1;
0x000042a8 add r0, pc | r0 = 0x85bc;
0x000042aa blx 0x1db4 | fcn_00001db4 ();
0x000042ae mov r0, r5 | r0 = r5;
0x000042b0 blx 0x1d14 | g_hash_table_unref ();
0x000042b4 ldr r2, [pc, 0x5c] |
0x000042b6 ldr r3, [pc, 0x24] | r3 = *(0x42de);
0x000042b8 add r2, pc | r2 = 0x85d0;
0x000042ba ldr r3, [r2, r3] | r3 = imp.stdin;
0x000042bc ldr r2, [r3] | r2 = imp.stdin;
0x000042be ldr r3, [sp, 0x74] | r3 = var_74h;
0x000042c0 eors r2, r3 | r2 ^= r3;
0x000042c2 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x000042c6 bne 0x42d2 |
0x000042c8 mov.w r0, -1 | r0 = -1;
0x000042cc add sp, 0x7c |
0x000042ce pop.w {r4, r5, r6, r7, r8, sb, pc} |
| }
| label_3:
0x000042d2 blx 0x1cec | fcn_00001cec ();
0x000042d6 nop |
0x000042d8 subs r4, 0xea | r4 -= 0xea;
0x000042da movs r0, r0 |
0x000042dc lsls r0, r5, 5 | r0 = r5 << 5;
0x000042de movs r0, r0 |
0x000042e0 subs r4, 0xe0 | r4 -= 0xe0;
0x000042e2 movs r0, r0 |
0x000042e4 rors r0, r6 | __asm ("rors r0, r6");
0x000042e6 movs r0, r0 |
0x000042e8 adds r0, r7, 3 | r0 = r7 + 3;
0x000042ea movs r0, r0 |
0x000042ec sbcs r4, r6 | __asm ("sbcs r4, r6");
0x000042ee movs r0, r0 |
0x000042f0 sbcs r2, r3 | __asm ("sbcs r2, r3");
0x000042f2 movs r0, r0 |
0x000042f4 adds r0, r2, 3 | r0 = r2 + 3;
0x000042f6 movs r0, r0 |
0x000042f8 adds r6, r5, 2 | r6 = r5 + 2;
0x000042fa movs r0, r0 |
0x000042fc subs r4, 0x18 | r4 -= 0x18;
0x000042fe movs r0, r0 |
0x00004300 subs r6, r5, r6 | r6 = r5 - r6;
0x00004302 movs r0, r0 |
0x00004304 lsls r4, r6, 5 | r4 = r6 << 5;
0x00004306 movs r0, r0 |
0x00004308 adds r2, r3, 1 | r2 = r3 + 1;
0x0000430a movs r0, r0 |
0x0000430c lsrs r2, r5, 9 | r2 = r5 >> 9;
0x0000430e movs r0, r0 |
0x00004310 adds r4, r1, 0 | r4 = r1 + 0;
0x00004312 movs r0, r0 |
0x00004314 subs r3, 0xb0 | r3 -= 0xb0;
0x00004316 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x2d70 */
| #include <stdint.h>
|
; (fcn) sym.generate_message () | void generate_message (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00002d70 ssub8mi fp, r6, r0 | __asm ("ssub8mi fp, r6, r0");
0x00002d74 ldr r5, [pc, 0xf8] |
0x00002d76 mov lr, r3 | lr = r3;
0x00002d78 sub sp, 0x14 |
0x00002d7a mov r4, r0 | r4 = r0;
0x00002d7c ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00002d7e mov ip, r1 |
0x00002d80 add r5, pc | r5 = 0x5bf4;
0x00002d82 ldr r7, [pc, 0xf0] |
0x00002d84 ldr r2, [r5, 0x2c] | r2 = *(0x5c20);
0x00002d86 add r7, pc | r7 = 0x5c00;
| if (r2 != 0) {
0x00002d88 cbz r2, 0x2d90 |
0x00002d8a ldr r2, [r6, 0x20] | r2 = *((r6 + 0x20));
0x00002d8c cmp r2, 0 |
| if (r2 == 0) {
0x00002d8e beq 0x2e08 | goto label_1;
| }
| }
0x00002d90 ldr r0, [pc, 0xe4] |
0x00002d92 add r0, pc | r0 = 0x5c0e;
0x00002d94 ldrd r2, r1, [r0] | __asm ("ldrd r2, r1, [r0]");
| if (r1 != 0) {
0x00002d98 cbnz r1, 0x2dfc | goto label_2;
| }
0x00002d9a mov r1, ip | r1 = ip;
0x00002d9c mov r0, r4 | r0 = r4;
0x00002d9e str.w lr, [sp] | __asm ("str.w lr, [sp]");
0x00002da2 bl 0x4170 | r0 = generate_log_line ();
0x00002da6 mov r5, r0 | r5 = r0;
| do {
0x00002da8 cmp r5, 0 |
| if (r5 < 0) {
0x00002daa blt 0x2e68 | goto label_3;
| }
0x00002dac ldr r4, [pc, 0xcc] |
0x00002dae add r4, pc | r4 = 0x5c2e;
0x00002db0 add.w r0, r4, 8 | r0 = r4 + 8;
0x00002db4 blx 0x1ce0 | fcn_00001ce0 ();
0x00002db8 ldrd r3, r2, [r4, 0x18] | __asm ("ldrd r3, r2, [r4, 0x18]");
0x00002dbc ldr r1, [r4, 0x10] | r1 = *(0x5c3e);
0x00002dbe adds r3, r3, r5 | r3 += r5;
0x00002dc0 str r3, [r4, 0x18] | *((r4 + 0x18)) = r3;
0x00002dc2 adc.w r2, r2, r5, asr 31 | __asm ("adc.w r2, r2, r5, asr 31");
0x00002dc6 ldr r3, [r4, 0x20] | r3 = *(0x5c4e);
0x00002dc8 adds r1, 1 | r1++;
0x00002dca str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
0x00002dcc str r2, [r4, 0x1c] | *((r4 + 0x1c)) = r2;
| if (r3 != 0) {
0x00002dce cbz r3, 0x2dec |
0x00002dd0 ldr r2, [r4, 0x24] | r2 = *((r4 + 0x24));
| if (r2 == 0) {
0x00002dd2 cbz r2, 0x2dec | goto label_4;
| }
0x00002dd4 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00002dd6 ldr.w r2, [r3, r0, lsl 3] | offset_0 = r0 << 3;
| r2 = *((r3 + offset_0));
0x00002dda add.w r4, r3, r0, lsl 3 | r4 = r3 + (r0 << 3);
0x00002dde ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00002de0 adds r2, 1 | r2++;
0x00002de2 str.w r2, [r3, r0, lsl 3] | __asm ("str.w r2, [r3, r0, lsl 3]");
0x00002de6 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x00002dea str r1, [r4, 4] | *((r4 + 4)) = r1;
| }
| label_4:
0x00002dec ldr r0, [pc, 0x90] |
0x00002dee add r0, pc | r0 = 0x5c72;
0x00002df0 adds r0, 8 | r0 += 8;
0x00002df2 blx 0x1d3c | fcn_00001d3c ();
| label_0:
0x00002df6 mov r0, r5 | r0 = r5;
0x00002df8 add sp, 0x14 |
0x00002dfa pop {r4, r5, r6, r7, pc} |
| label_2:
0x00002dfc mov r1, ip | r1 = ip;
0x00002dfe mov r0, r4 | r0 = r4;
0x00002e00 bl 0x357c | r0 = read_next_message_from_file ();
0x00002e04 mov r5, r0 | r5 = r0;
0x00002e06 b 0x2da8 |
| } while (1);
| label_1:
0x00002e08 ldr r4, [r5, 0x3c] | r4 = *((r5 + 0x3c));
0x00002e0a mov r2, r3 | r2 = r3;
0x00002e0c ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x00002e0e str r4, [sp, 8] | var_8h = r4;
0x00002e10 ldr r4, [r5, 0x38] | r4 = *((r5 + 0x38));
0x00002e12 str r4, [sp, 4] | var_4h = r4;
0x00002e14 ldr r4, [r5, 0x34] | r4 = *((r5 + 0x34));
0x00002e16 str r4, [sp] | *(sp) = r4;
0x00002e18 movs r4, 1 | r4 = 1;
0x00002e1a blx 0x1bb8 | generate_proxy_header ();
0x00002e1e str r4, [r6, 0x20] | *((r6 + 0x20)) = r4;
0x00002e20 mov r5, r0 | r5 = r0;
0x00002e22 blx 0x1b58 | r0 = get_debug_level ();
0x00002e26 cmp r0, 0 |
| if (r0 == 0) {
0x00002e28 beq 0x2df6 | goto label_0;
| }
0x00002e2a ldr r0, [pc, 0x58] |
0x00002e2c add r0, pc | r0 = 0x5cb6;
0x00002e2e blx 0x1b70 | g_path_get_basename ();
0x00002e32 ldr r3, [pc, 0x54] | r3 = *(0x2e8a);
0x00002e34 mov r6, r0 | r6 = r0;
0x00002e36 ldr r2, [pc, 0x54] |
0x00002e38 mov r1, r4 | r1 = r4;
0x00002e3a ldr r7, [r7, r3] | r7 = *((r7 + r3));
0x00002e3c ldr r3, [pc, 0x50] |
0x00002e3e add r2, pc | r2 = 0x5cd0;
0x00002e40 ldr r0, [r7] | r0 = *(r7);
0x00002e42 add r3, pc | r3 = 0x5cd6;
0x00002e44 adds r3, 0x18 | r3 += 0x18;
0x00002e46 str r3, [sp] | *(sp) = r3;
0x00002e48 movs r3, 0x78 | r3 = 0x78;
0x00002e4a str r3, [sp, 4] | var_4h = r3;
0x00002e4c mov r3, r6 | r3 = r6;
0x00002e4e blx 0x1bdc | fprintf_chk ()
0x00002e52 ldr r2, [pc, 0x40] |
0x00002e54 mov r3, r5 | r3 = r5;
0x00002e56 ldr r0, [r7] | r0 = *(r7);
0x00002e58 mov r1, r4 | r1 = r4;
0x00002e5a add r2, pc | r2 = 0x5cf4;
0x00002e5c blx 0x1bdc | fprintf_chk ()
0x00002e60 mov r0, r6 | r0 = r6;
0x00002e62 blx 0x1d14 | g_hash_table_unref ();
0x00002e66 b 0x2df6 | goto label_0;
| label_3:
0x00002e68 mov.w r5, -1 | r5 = -1;
0x00002e6c b 0x2df6 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x331c */
| #include <stdint.h>
|
; (fcn) sym.init_file_reader () | void init_file_reader (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
0x0000331c push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00003320 sub sp, 0xc |
0x00003322 ldr r4, [pc, 0x18c] |
0x00003324 ldr.w sb, [pc, 0x18c] |
0x00003328 add r4, pc | r4 = 0x67de;
0x0000332a ldr r3, [r4] | r3 = *(0x67de);
0x0000332c add sb, pc | sb = 0x67e4;
0x0000332e cmp r3, 0 |
| if (r3 == 0) {
0x00003330 beq 0x3424 | goto label_4;
| }
0x00003332 movs r1, 4 | r1 = 4;
0x00003334 mov r7, r0 | r7 = r0;
0x00003336 blx 0x1df4 | r0 = fcn_00001df4 ();
0x0000333a mov r3, r0 | r3 = r0;
0x0000333c str r0, [r4, 4] | *((r4 + 4)) = r0;
0x0000333e ldr r0, [r4] | r0 = *(r4);
0x00003340 mov r5, r3 | r5 = r3;
0x00003342 ldrb r2, [r0] | r2 = *(r0);
0x00003344 cmp r2, 0x2d |
| if (r2 == 0x2d) {
0x00003346 beq 0x33c8 | goto label_5;
| }
| label_0:
0x00003348 cmp r7, 0 |
| if (r7 <= 0) {
0x0000334a ble 0x33be | goto label_6;
| }
0x0000334c ldr.w r8, [pc, 0x168] |
0x00003350 movs r4, 0 | r4 = 0;
0x00003352 ldr r6, [pc, 0x168] |
0x00003354 add r8, pc | r8 = 0x6810;
0x00003356 add r6, pc | r6 = 0x6818;
0x00003358 b 0x3360 |
| while (r3 != 0) {
0x0000335a cmp r7, r4 |
| if (r7 == r4) {
0x0000335c beq 0x33be | goto label_6;
| }
0x0000335e ldr r0, [r6] | r0 = *(r6);
0x00003360 mov r1, r8 | r1 = r8;
0x00003362 blx 0x1e60 | fcn_00001e60 ();
0x00003364 ldcl p8, c15, [lr, -0x114]! | __asm ("ldcl p8, c15, [lr, -0x114]!");
0x00003368 movs r4, r4 |
0x0000336a ldr r5, [r6, 4] | r5 = *((r6 + 4));
0x0000336c ldr.w r3, [r5, r4, lsl 2] | offset_0 = r4 << 2;
| r3 = *((r5 + offset_0));
0x00003370 adds r4, 1 | r4++;
0x00003372 cmp r3, 0 |
0x00003374 bne 0x335a |
| }
0x00003376 ldr r0, [pc, 0x148] |
0x00003378 add r0, pc | r0 = 0x683e;
0x0000337a blx 0x1b70 | g_path_get_basename ();
0x0000337e ldr r3, [pc, 0x144] | r3 = *(0x34c6);
0x00003380 movs r2, 0x53 | r2 = 0x53;
0x00003382 ldr r1, [pc, 0x144] |
0x00003384 mov r4, r0 | r4 = r0;
0x00003386 ldr.w r5, [sb, r3] | r5 = *((sb + r3));
0x0000338a mov r3, r0 | r3 = r0;
0x0000338c str r2, [sp, 4] | var_4h = r2;
0x0000338e add r1, pc | r1 = 0x685c;
0x00003390 ldr r2, [pc, 0x138] |
0x00003392 adds r1, 0x14 | r1 += 0x14;
0x00003394 str r1, [sp] | *(sp) = r1;
0x00003396 movs r1, 1 | r1 = 1;
0x00003398 ldr r0, [r5] | r0 = *(r5);
0x0000339a add r2, pc | r2 = 0x686a;
0x0000339c blx 0x1bdc | fprintf_chk ()
0x000033a0 ldr r2, [pc, 0x12c] |
0x000033a2 movs r1, 1 | r1 = 1;
0x000033a4 ldr r3, [r6] | r3 = *(r6);
0x000033a6 ldr r0, [r5] | r0 = *(r5);
0x000033a8 add r2, pc | r2 = 0x687c;
0x000033aa blx 0x1bdc | fprintf_chk ()
0x000033ae mov r0, r4 | r0 = r4;
0x000033b0 blx 0x1d14 | g_hash_table_unref ();
| label_3:
0x000033b4 mov.w r0, -1 | r0 = -1;
| do {
| label_2:
0x000033b8 add sp, 0xc |
0x000033ba pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_6:
0x000033be blx 0x1b58 | r0 = get_debug_level ();
| if (r0 != 0) {
0x000033c2 cbnz r0, 0x33e0 | goto label_7;
| }
| label_1:
0x000033c4 movs r0, 1 | r0 = 1;
0x000033c6 b 0x33b8 |
| } while (1);
| label_5:
0x000033c8 ldrb r2, [r0, 1] | r2 = *((r0 + 1));
0x000033ca cmp r2, 0 |
| if (r2 != 0) {
0x000033cc bne 0x3348 | goto label_0;
| }
0x000033ce cmp r7, 1 |
| if (r7 > 1) {
0x000033d0 bgt 0x342e | goto label_8;
| }
| if (r7 != 1) {
0x000033d2 bne 0x33c4 | goto label_1;
| }
0x000033d4 ldr r2, [pc, 0xfc] |
0x000033d6 ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x000033da ldr r2, [r2] | r2 = *(0x34d4);
0x000033dc str r2, [r3] | *(r3) = r2;
0x000033de b 0x33c4 | goto label_1;
| label_7:
0x000033e0 ldr r0, [pc, 0xf4] |
0x000033e2 add r0, pc | r0 = 0x68be;
0x000033e4 blx 0x1b70 | g_path_get_basename ();
0x000033e8 ldr r3, [pc, 0xf0] | r3 = *(0x34dc);
0x000033ea movs r2, 0x58 | r2 = 0x58;
0x000033ec ldr r1, [pc, 0xf0] |
0x000033ee mov r4, r0 | r4 = r0;
0x000033f0 ldr.w r5, [sb, r3] | r5 = *((sb + r3));
0x000033f4 mov r3, r0 | r3 = r0;
0x000033f6 str r2, [sp, 4] | var_4h = r2;
0x000033f8 add r1, pc | r1 = 0x68dc;
0x000033fa ldr r2, [pc, 0xe8] |
0x000033fc adds r1, 0x14 | r1 += 0x14;
0x000033fe str r1, [sp] | *(sp) = r1;
0x00003400 movs r1, 1 | r1 = 1;
0x00003402 ldr r0, [r5] | r0 = *(r5);
0x00003404 add r2, pc | r2 = 0x68ee;
0x00003406 blx 0x1bdc | fprintf_chk ()
0x0000340a ldr r3, [pc, 0xdc] |
0x0000340c movs r1, 1 | r1 = 1;
0x0000340e ldr r2, [pc, 0xdc] |
0x00003410 ldr r0, [r5] | r0 = *(r5);
0x00003412 add r3, pc |
0x00003414 ldr r3, [r3] | r3 = *(0x6900);
0x00003416 add r2, pc | r2 = 0x6908;
0x00003418 blx 0x1bdc | fprintf_chk ()
0x0000341c mov r0, r4 | r0 = r4;
0x0000341e blx 0x1d14 | g_hash_table_unref ();
0x00003422 b 0x33c4 | goto label_1;
| label_4:
0x00003424 blx 0x1b58 | r0 = get_debug_level ();
0x00003428 cbnz r0, 0x346e |
| while (1) {
0x0000342a movs r0, 0 | r0 = 0;
0x0000342c b 0x33b8 | goto label_2;
| label_8:
0x0000342e ldr r0, [pc, 0xc0] |
0x00003430 add r0, pc | r0 = 0x6926;
0x00003432 blx 0x1b70 | g_path_get_basename ();
0x00003434 invalid |
0x00003438 movs r2, 0x45 | r2 = 0x45;
0x0000343a ldr r1, [pc, 0xb8] |
0x0000343c mov r4, r0 | r4 = r0;
0x0000343e ldr.w r5, [sb, r3] | r5 = *((sb + r3));
0x00003442 mov r3, r0 | r3 = r0;
0x00003444 str r2, [sp, 4] | var_4h = r2;
0x00003446 add r1, pc | r1 = 0x6940;
0x00003448 ldr r2, [pc, 0xac] |
0x0000344a adds r1, 0x14 | r1 += 0x14;
0x0000344c str r1, [sp] | *(sp) = r1;
0x0000344e movs r1, 1 | r1 = 1;
0x00003450 ldr r0, [r5] | r0 = *(r5);
0x00003452 add r2, pc | r2 = 0x694e;
0x00003454 blx 0x1bdc | fprintf_chk ()
0x00003458 ldr r0, [pc, 0xa0] |
0x0000345a movs r2, 0x55 | r2 = 0x55;
0x0000345c ldr r3, [r5] | r3 = *(r5);
0x0000345e movs r1, 1 | r1 = 1;
0x00003460 add r0, pc | r0 = 0x6960;
0x00003462 blx 0x1db4 | fcn_00001db4 ();
0x00003466 mov r0, r4 | r0 = r4;
0x00003468 blx 0x1d14 | g_hash_table_unref ();
0x0000346c b 0x33b4 | goto label_3;
0x0000346e ldr r0, [pc, 0x90] |
0x00003470 add r0, pc | r0 = 0x6976;
0x00003472 blx 0x1b70 | g_path_get_basename ();
0x00003476 ldr r3, [pc, 0x64] | r3 = *(0x34de);
0x00003478 movs r2, 0x3b | r2 = 0x3b;
0x0000347a ldr r1, [pc, 0x88] |
0x0000347c mov r4, r0 | r4 = r0;
0x0000347e ldr.w r5, [sb, r3] | r5 = *((sb + r3));
0x00003482 mov r3, r0 | r3 = r0;
0x00003484 str r2, [sp, 4] | var_4h = r2;
0x00003486 add r1, pc | r1 = 0x6990;
0x00003488 ldr r2, [pc, 0x7c] |
0x0000348a adds r1, 0x14 | r1 += 0x14;
0x0000348c str r1, [sp] | *(sp) = r1;
0x0000348e movs r1, 1 | r1 = 1;
0x00003490 ldr r0, [r5] | r0 = *(r5);
0x00003492 add r2, pc | r2 = 0x699e;
0x00003494 blx 0x1bdc | fprintf_chk ()
0x00003498 ldr r0, [pc, 0x70] |
0x0000349a movs r2, 0x1a | r2 = 0x1a;
0x0000349c ldr r3, [r5] | r3 = *(r5);
0x0000349e movs r1, 1 | r1 = 1;
0x000034a0 add r0, pc | r0 = 0x69b0;
0x000034a2 blx 0x1db4 | fcn_00001db4 ();
0x000034a6 mov r0, r4 | r0 = r4;
0x000034a8 blx 0x1d14 | g_hash_table_unref ();
0x000034ac b 0x342a |
| }
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x4318 */
| #include <stdint.h>
|
; (fcn) sym.path_resolver_resolve () | void path_resolver_resolve (int16_t arg1, int16_t arg2) {
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
0x00004318 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000431c mov r7, r0 | r7 = r0;
0x0000431e sub sp, 0xc |
0x00004320 mov r0, r1 | r0 = r1;
0x00004322 blx 0x1be8 | g_strdup ();
0x00004326 ldr r1, [pc, 0xd0] |
0x00004328 mov r6, r0 | r6 = r0;
0x0000432a ldr.w sb, [pc, 0xd0] |
0x0000432e add r1, pc | r1 = 0x872c;
0x00004330 blx 0x1d30 | fcn_00001d30 ();
0x00004334 add sb, pc | sb = 0x8736;
| if (r0 == 0) {
0x00004336 cbz r0, 0x43a0 | goto label_0;
| }
0x00004338 ldr.w r8, [pc, 0xc4] | r8 = *(0x00004400);
0x0000433c mov r4, r0 | r4 = r0;
0x0000433e add r8, pc | r8 += pc;
0x00004340 b 0x4344 |
| while (r0 != 0) {
0x00004342 mov r6, r5 | r6 = r5;
0x00004344 movs r1, 0x7d | r1 = 0x7d;
0x00004346 mov r0, r4 | r0 = r4;
0x00004348 blx 0x1eb4 | r0 = fcn_00001eb4 ();
0x0000434c mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0000434e cbz r0, 0x43a8 | goto label_1;
| }
0x00004350 adds r5, 1 | r5++;
0x00004352 mov r0, r4 | r0 = r4;
0x00004354 subs r1, r5, r4 | r1 = r5 - r4;
0x00004356 blx 0x1b34 | r0 = g_strndup ();
0x0000435a mov fp, r0 |
0x0000435c ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x0000435e mov r1, fp | r1 = fp;
0x00004360 blx 0x1c8c | r0 = fcn_00001c8c ();
0x00004364 mov sl, r0 | sl = r0;
| if (r0 == 0) {
0x00004366 cbz r0, 0x43ce | goto label_2;
| }
0x00004368 mov r0, fp | r0 = fp;
0x0000436a blx 0x1d14 | g_hash_table_unref ();
0x0000436e subs r1, r4, r6 | r1 = r4 - r6;
0x00004370 mov r0, r6 | r0 = r6;
0x00004372 blx 0x1b34 | g_strndup ();
0x00004376 mov r2, r5 | r2 = r5;
0x00004378 movs r3, 0 | r3 = 0;
0x0000437a mov r1, sl | r1 = sl;
0x0000437c mov r4, r0 | r4 = r0;
0x0000437e blx 0x1d90 | r0 = fcn_00001d90 ();
0x00004382 mov r5, r0 | r5 = r0;
0x00004384 mov r0, r4 | r0 = r4;
0x00004386 blx 0x1d14 | g_hash_table_unref ();
0x0000438a mov r0, r6 | r0 = r6;
0x0000438c mov r6, r5 | r6 = r5;
0x0000438e blx 0x1d14 | g_hash_table_unref ();
0x00004392 mov r1, r8 | r1 = r8;
0x00004394 mov r0, r5 | r0 = r5;
0x00004396 blx 0x1d30 | r0 = fcn_00001d30 ();
0x0000439a mov r4, r0 | r4 = r0;
0x0000439c cmp r0, 0 |
0x0000439e bne 0x4342 |
| }
| label_0:
0x000043a0 mov r0, r6 | r0 = r6;
0x000043a2 add sp, 0xc |
0x000043a4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_1:
0x000043a8 ldr r1, [pc, 0x58] | r1 = *(0x4404);
0x000043aa mov r3, r6 | r3 = r6;
0x000043ac ldr r2, [pc, 0x58] |
0x000043ae ldr.w r1, [sb, r1] | r1 = *((sb + r1));
0x000043b2 add r2, pc | r2 = 0x87be;
0x000043b4 ldr r0, [r1] | r0 = *(0x4404);
0x000043b6 movs r1, 1 | r1 = 1;
0x000043b8 blx 0x1bdc | fprintf_chk ()
0x000043bc ldr r3, [pc, 0x4c] |
0x000043be movs r2, 0x64 | r2 = 0x64;
0x000043c0 ldr r1, [pc, 0x4c] |
0x000043c2 mov r0, r5 | r0 = r5;
0x000043c4 str r5, [sp] | *(sp) = r5;
0x000043c6 add r3, pc | r3 = 0x87d6;
0x000043c8 add r1, pc | r1 = 0x87dc;
0x000043ca blx 0x1e54 | fcn_00001e54 ();
| label_2:
0x000043ce ldr r2, [pc, 0x34] | r2 = *(0x4406);
0x000043d0 mov r3, fp | r3 = fp;
0x000043d2 ldr.w r1, [sb, r2] | r1 = *((sb + r2));
0x000043d6 ldr r2, [pc, 0x3c] |
0x000043d8 str r6, [sp] | *(sp) = r6;
0x000043da ldr r0, [r1] | r0 = *(r1);
0x000043dc movs r1, 1 | r1 = 1;
0x000043de add r2, pc | r2 = 0x87f8;
0x000043e0 blx 0x1bdc | fprintf_chk ()
0x000043e4 ldr r3, [pc, 0x30] |
0x000043e6 movs r2, 0x71 | r2 = 0x71;
0x000043e8 ldr r1, [pc, 0x30] |
0x000043ea mov r0, sl | r0 = sl;
0x000043ec str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x000043f0 add r3, pc | r3 = 0x880c;
0x000043f2 add r1, pc | r1 = 0x8812;
0x000043f4 blx 0x1e54 | fcn_00001e54 ();
0x000043f8 subs r2, r5, r7 | r2 = r5 - r7;
0x000043fa movs r0, r0 |
0x000043fc subs r3, 0x34 | r3 -= 0x34;
0x000043fe movs r0, r0 |
0x00004400 subs r2, r3, r7 | r2 = r3 - r7;
0x00004402 movs r0, r0 |
0x00004404 lsls r4, r6, 5 | r4 = r6 << 5;
0x00004406 movs r0, r0 |
0x00004408 subs r2, r5, r5 | r2 = r5 - r5;
0x0000440a movs r0, r0 |
0x0000440c adds r2, r1, 5 | r2 = r1 + 5;
0x0000440e movs r0, r0 |
0x00004410 subs r0, r1, r7 | r0 = r1 - r7;
0x00004412 movs r0, r0 |
0x00004414 subs r2, r4, r7 | r2 = r4 - r7;
0x00004416 movs r0, r0 |
0x00004418 adds r0, r4, 4 | r0 = r4 + 4;
0x0000441a movs r0, r0 |
0x0000441c subs r6, r3, r6 | r6 = r3 - r6;
0x0000441e movs r0, r0 |
0x00004420 ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x00004422 b.w 0x1d20 | return void (*0x1d20)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x3f5c */
| #include <stdint.h>
|
; (fcn) sym.prepare_log_line_template () | void prepare_log_line_template (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_24h;
| int16_t var_2ch;
| int16_t var_30h_2;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00003f5c push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00003f60 mov r6, r2 | r6 = r2;
0x00003f62 ldr r2, [pc, 0x1b0] |
0x00003f64 mov r5, r3 | r5 = r3;
0x00003f66 sub sp, 0x38 |
0x00003f68 mov r4, r1 | r4 = r1;
0x00003f6a ldr r3, [pc, 0x1ac] | r3 = *(0x411a);
0x00003f6c mov r8, r0 | r8 = r0;
0x00003f6e add r2, pc | r2 = 0x8088;
0x00003f70 ldr r7, [pc, 0x1a8] |
0x00003f72 ldr r3, [r2, r3] |
0x00003f74 add r7, pc | r7 = 0x8094;
0x00003f76 ldr r3, [r3] | r3 = imp.stdin;
0x00003f78 str r3, [sp, 0x34] | var_34h = r3;
0x00003f7a mov.w r3, 0 | r3 = 0;
0x00003f7e ldr r3, [pc, 0x1a0] |
0x00003f80 add r3, pc | r3 = 0x80a6;
0x00003f82 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x00003f86 str r0, [sp, 0x2c] | var_2ch = r0;
0x00003f88 add r0, sp, 0x24 | r0 += var_24h;
0x00003f8a strb.w r1, [sp, 0x30] | var_30h_2 = r1;
0x00003f8e movs r1, 0 | r1 = 0;
0x00003f90 blx 0x1b04 | gettimeofday ();
0x00003f94 ldr.w sl, [sp, 0x24] | sl = var_24h;
0x00003f98 cmp r4, 0 |
| if (r4 != 0) {
0x00003f9a bne.w 0x40aa | goto label_3;
| }
0x00003f9e ldr r0, [pc, 0x184] |
0x00003fa0 movw r1, 0x2001 | r1 = 0x2001;
0x00003fa4 add r0, pc | r0 = 0x80ce;
| label_2:
0x00003fa6 cmp.w r8, 0 |
| if (r8 == 0) {
0x00003faa beq 0x4070 | goto label_4;
| }
0x00003fac cmp r5, 0 |
| if (r5 == 0) {
0x00003fae beq 0x406a | goto label_5;
| }
| label_0:
0x00003fb0 ldr r3, [pc, 0x174] |
0x00003fb2 movs r2, 1 | r2 = 1;
0x00003fb4 str r5, [sp, 8] | var_8h = r5;
0x00003fb6 str.w sl, [sp, 0x14] | __asm ("str.w sl, [var_14h]");
0x00003fba add r3, pc | r3 = 0x80e6;
0x00003fbc str r3, [sp, 0x18] | var_18h = r3;
0x00003fbe ldr r3, [pc, 0x16c] |
0x00003fc0 add r3, pc | r3 = 0x80f2;
0x00003fc2 str r3, [sp] | *(sp) = r3;
0x00003fc4 movs r3, 0 | r3 = 0;
0x00003fc6 strd r3, r3, [sp, 0xc] | __asm ("strd r3, r3, [sp, 0xc]");
0x00003fca str r3, [sp, 4] | var_4h = r3;
0x00003fcc mov.w r3, -1 | r3 = -1;
0x00003fd0 blx 0x1ddc | r0 = fcn_00001ddc ();
0x00003fd4 mov r3, r0 | r3 = r0;
0x00003fd6 mov r0, r5 | r0 = r5;
0x00003fd8 mov r5, r3 | r5 = r3;
0x00003fda ldr r3, [pc, 0x154] |
0x00003fdc adds r2, r4, 6 | r2 = r4 + 6;
0x00003fde add r3, pc | r3 = 0x8114;
0x00003fe0 str r2, [r3] | *(r3) = r2;
0x00003fe2 blx 0x1dd0 | fcn_00001dd0 ();
0x00003fe6 add.w r2, r4, 0x77 | r2 = r4 + 0x77;
0x00003fea add r2, r0 | r2 += r0;
0x00003fec add r0, r4 | r0 += r4;
0x00003fee add.w r1, r0, 0x43 | r1 = r0 + 0x43;
0x00003ff2 adds r0, 0x57 | r0 += 0x57;
| label_1:
0x00003ff4 ldr r3, [pc, 0x13c] |
0x00003ff6 cmp r5, r6 |
0x00003ff8 add r3, pc | r3 = 0x8130;
0x00003ffa strd r1, r0, [r3, 4] | __asm ("strd r1, r0, [r3, 4]");
0x00003ffe str r2, [r3, 0xc] | *((r3 + 0xc)) = r2;
| if (r5 > r6) {
0x00004000 bgt 0x40d0 | goto label_6;
| }
0x00004002 subs r1, r6, 1 | r1 = r6 - 1;
0x00004004 cmp r5, r1 |
| if (r5 >= r1) {
0x00004006 bge 0x4042 | goto label_7;
| }
0x00004008 ldr r2, [pc, 0x12c] |
0x0000400a adds r3, r5, 1 | r3 = r5 + 1;
0x0000400c cmp r3, r1 |
0x0000400e mov.w r7, 0x50 | r7 = 0x50;
0x00004012 add r2, pc | r2 = 0x814e;
0x00004014 add.w r0, r2, r5 | r0 = r2 + r5;
0x00004018 strb r7, [r0, r4] | *((r0 + r4)) = r7;
| if (r3 >= r1) {
0x0000401a bge 0x4042 | goto label_7;
| }
0x0000401c add.w lr, r4, 1 | lr = r4 + 1;
0x00004020 subs r1, r1, r5 | r1 -= r5;
0x00004022 add lr, r5 | lr += r5;
0x00004024 movs r3, 1 | r3 = 1;
0x00004026 add lr, r2 | lr += r2;
| do {
0x00004028 and ip, r3, 3 |
0x0000402c adds r3, 1 | r3++;
0x0000402e add.w r2, ip, 0x38 | r2 = ip + 0x38;
0x00004032 cmp r1, r3 |
0x00004034 add.w ip, sp, r2 |
0x00004038 ldrb r2, [ip, -0xc] | r2 = *((ip - 0xc));
0x0000403c strb r2, [lr], 1 | *(lr) = r2;
| lr++;
0x00004040 bne 0x4028 |
| } while (r1 != r3);
| label_7:
0x00004042 ldr r3, [pc, 0xf8] |
0x00004044 add r4, r6 | r4 += r6;
0x00004046 subs r4, 1 | r4--;
0x00004048 movs r2, 0xa | r2 = 0xa;
0x0000404a add r3, pc | r3 = 0x818c;
0x0000404c strh r2, [r3, r4] | *((r3 + r4)) = r2;
| do {
0x0000404e ldr r2, [pc, 0xf0] |
0x00004050 ldr r3, [pc, 0xc4] | r3 = *(0x4118);
0x00004052 add r2, pc | r2 = 0x8198;
0x00004054 ldr r3, [r2, r3] | r3 = *(0x8198);
0x00004056 ldr r2, [r3] | r2 = *(0x8198);
0x00004058 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000405a eors r2, r3 | r2 ^= r3;
0x0000405c mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00004060 bne 0x410e | goto label_8;
| }
0x00004062 mov r0, r5 | r0 = r5;
0x00004064 add sp, 0x38 |
0x00004066 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_5:
0x0000406a ldr r5, [pc, 0xd8] |
0x0000406c add r5, pc | r5 = 0x81b6;
0x0000406e b 0x3fb0 | goto label_0;
| label_4:
0x00004070 ldr r3, [pc, 0xd4] |
0x00004072 movs r2, 1 | r2 = 1;
0x00004074 strd r8, sl, [sp, 0xc] | __asm ("strd r8, sl, [sp, 0xc]");
0x00004078 strd r8, r8, [sp, 4] | __asm ("strd r8, r8, [sp, 4]");
0x0000407c add r3, pc | r3 = 0x81c8;
0x0000407e str r3, [sp, 0x14] | var_14h = r3;
0x00004080 ldr r3, [pc, 0xc8] |
0x00004082 add r3, pc | r3 = 0x81d2;
0x00004084 str r3, [sp] | *(sp) = r3;
0x00004086 mov.w r3, -1 | r3 = -1;
0x0000408a blx 0x1ddc | fcn_00001ddc ();
0x0000408e ldr r3, [pc, 0xc0] |
0x00004090 add.w ip, r4, 4 |
0x00004094 mov r5, r0 | r5 = r0;
0x00004096 add.w r1, r4, 0x37 | r1 = r4 + 0x37;
0x0000409a add.w r0, r4, 0x4b | r0 = r4 + 0x4b;
0x0000409e add.w r2, r4, 0x6b | r2 = r4 + 0x6b;
0x000040a2 add r3, pc | r3 = 0x81f8;
0x000040a4 str.w ip, [r3] | __asm ("str.w ip, [r3]");
0x000040a8 b 0x3ff4 | goto label_1;
| label_3:
0x000040aa ldr r3, [pc, 0xa8] |
0x000040ac movs r2, 1 | r2 = 1;
0x000040ae ldr r0, [pc, 0xa8] |
0x000040b0 str r6, [sp, 4] | var_4h = r6;
0x000040b2 add r3, pc | r3 = 0x820c;
0x000040b4 str r3, [sp] | *(sp) = r3;
0x000040b6 movw r3, 0x2001 | r3 = 0x2001;
0x000040ba add r0, pc | r0 = 0x8218;
0x000040bc mov r1, r3 | r1 = r3;
0x000040be mov sb, r0 | sb = r0;
0x000040c0 blx 0x1ddc | r0 = fcn_00001ddc ();
0x000040c4 mov r4, r0 | r4 = r0;
0x000040c6 add r0, sb | r0 += sb;
0x000040c8 rsb.w r1, r4, 0x2000 | r1 = 0x2000 - r4;
0x000040cc adds r1, 1 | r1++;
0x000040ce b 0x3fa6 | goto label_2;
| label_6:
0x000040d0 ldr r0, [pc, 0x88] |
0x000040d2 add r0, pc | r0 = 0x8232;
0x000040d4 blx 0x1b70 | g_path_get_basename ();
0x000040d8 ldr r3, [pc, 0x84] | r3 = *(0x4160);
0x000040da movs r2, 0x54 | r2 = 0x54;
0x000040dc ldr r1, [pc, 0x84] |
0x000040de mov r4, r0 | r4 = r0;
0x000040e0 ldr r6, [r7, r3] | r6 = *((r7 + r3));
0x000040e2 mov r3, r0 | r3 = r0;
0x000040e4 str r2, [sp, 4] | var_4h = r2;
0x000040e6 add r1, pc | r1 = 0x824e;
0x000040e8 ldr r2, [pc, 0x7c] |
0x000040ea str r1, [sp] | *(sp) = r1;
0x000040ec movs r1, 1 | r1 = 1;
0x000040ee ldr r0, [r6] | r0 = *(r6);
0x000040f0 add r2, pc | r2 = 0x825c;
0x000040f2 blx 0x1bdc | fprintf_chk ()
0x000040f6 ldr r2, [pc, 0x74] |
0x000040f8 mov r3, r5 | r3 = r5;
0x000040fa ldr r0, [r6] | r0 = *(r6);
0x000040fc movs r1, 1 | r1 = 1;
0x000040fe movs r5, 0 | r5 = 0;
0x00004100 add r2, pc | r2 = 0x8272;
0x00004102 blx 0x1bdc | fprintf_chk ()
0x00004106 mov r0, r4 | r0 = r4;
0x00004108 blx 0x1d14 | g_hash_table_unref ();
0x0000410c b 0x404e |
| } while (1);
| label_8:
0x0000410e blx 0x1cec | fcn_00001cec ();
0x00004112 nop |
0x00004114 subs r6, 0xfa | r6 -= 0xfa;
0x00004116 movs r0, r0 |
0x00004118 lsls r0, r5, 5 | r0 = r5 << 5;
0x0000411a movs r0, r0 |
0x0000411c subs r6, 0xf4 | r6 -= 0xf4;
0x0000411e movs r0, r0 |
0x00004120 subs r4, r5, 4 | r4 = r5 - 4;
0x00004122 movs r0, r0 |
0x00004124 mvns r0, r7 | r0 = ~r7;
0x00004126 movs r0, r0 |
0x00004128 asrs r6, r7, 0xa | r6 = r7 >> 0xa;
0x0000412a movs r0, r0 |
0x0000412c adds r0, r1, 6 | r0 = r1 + 6;
0x0000412e movs r0, r0 |
0x00004130 bics r6, r5 | __asm ("bics r6, r5");
0x00004132 movs r0, r0 |
0x00004134 bics r4, r2 | __asm ("bics r4, r2");
0x00004136 movs r0, r0 |
0x00004138 bics r2, r1 | __asm ("bics r2, r1");
0x0000413a movs r0, r0 |
0x0000413c muls r2, r2, r2 | r2 *= r2;
0x0000413e movs r0, r0 |
0x00004140 subs r6, 0x16 | r6 -= 0x16;
0x00004142 movs r0, r0 |
0x00004144 adds r4, r6, r4 | r4 = r6 + r4;
0x00004146 movs r0, r0 |
0x00004148 asrs r4, r7, 7 | r4 = r7 >> 7;
0x0000414a movs r0, r0 |
0x0000414c adds r6, r7, 4 | r6 = r7 + 4;
0x0000414e movs r0, r0 |
0x00004150 cmn r2, r5 |
0x00004152 movs r0, r0 |
0x00004154 adds r2, r2, 2 | r2 += 2;
0x00004156 movs r0, r0 |
0x00004158 cmn r2, r4 |
0x0000415a movs r0, r0 |
0x0000415c adds r6, r2, 5 | r6 = r2 + 5;
0x0000415e movs r0, r0 |
0x00004160 lsls r4, r6, 5 | r4 = r6 << 5;
0x00004162 movs r0, r0 |
0x00004164 subs r2, r0, 0 | r2 = r0 - 0;
0x00004166 movs r0, r0 |
0x00004168 lsrs r4, r2, 0x10 | r4 = r2 >> 0x10;
0x0000416a movs r0, r0 |
0x0000416c adds r4, r5, 5 | r4 = r5 + 5;
0x0000416e movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x2ecc */
| #include <stdint.h>
|
; (fcn) sym.print_statistic () | void print_statistic (int16_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int32_t var_10h;
| int32_t var_10h_2;
| int16_t var_1ch;
| int16_t var_24h;
| int16_t var_2ch_2;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
0x00002ecc invalid |
0x00002ed0 ldr r3, [pc, 0x1b8] |
0x00002ed2 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00002ed6 mov r5, r0 | r5 = r0;
0x00002ed8 add r2, pc | r2 += pc;
0x00002eda ldr r7, [pc, 0x1b4] |
0x00002edc vpush {d8, d9, d10} | __asm ("vpush {d8, d9, d10}");
0x00002ee0 sub sp, 0x3c |
0x00002ee2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00002ee4 add.w r8, sp, 0x24 | r8 += var_24h;
0x00002ee8 add r7, pc | r7 = 0x5f7e;
0x00002eea mov r0, r8 | r0 = r8;
0x00002eec ldr r6, [pc, 0x1a4] |
0x00002eee ldr r3, [r3] | r3 = *(0x308c);
0x00002ef0 str r3, [sp, 0x34] | var_34h = r3;
0x00002ef2 mov.w r3, 0 | r3 = 0;
0x00002ef6 blx 0x1b04 | gettimeofday ();
0x00002efa ldrd r3, r1, [r7, 0x24] | __asm ("ldrd r3, r1, [r7, 0x24]");
0x00002efe add r6, pc | r6 = 0x5f96;
0x00002f00 orrs.w r4, r1, r3 | r4 = r1 | r3;
| if (r4 == r1) {
0x00002f04 beq 0x2fee | goto label_2;
| }
| label_1:
0x00002f06 ldr r7, [pc, 0x190] |
0x00002f08 add r7, pc | r7 = 0x5fa6;
0x00002f0a ldr r3, [r7, 0x20] | r3 = *(0x5fc6);
| if (r3 == 0) {
0x00002f0c cbz r3, 0x2f16 | goto label_0;
| }
0x00002f0e ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
| if (r3 == 0) {
0x00002f10 cbz r3, 0x2f16 | goto label_0;
| }
0x00002f12 ldr r3, [r7, 0x24] | r3 = *((r7 + 0x24));
0x00002f14 cbnz r3, 0x2f44 |
| while (r3 <= 0) {
| label_0:
0x00002f16 ldr r3, [pc, 0x184] |
0x00002f18 ldm.w r8, {r0, r1} | r0 = *(r8);
| r1 = *((r8 + 4));
0x00002f1c ldr r2, [pc, 0x180] |
0x00002f1e add r3, pc | r3 = 0x5fc0;
0x00002f20 adds r3, 0x2c | r3 += 0x2c;
0x00002f22 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00002f26 add r2, pc | r2 = 0x5fca;
0x00002f28 ldr r3, [pc, 0x160] | r3 = *(0x308c);
0x00002f2a ldr r3, [r2, r3] | r3 = *(0x5fca);
0x00002f2c ldr r2, [r3] | r2 = *(0x5fca);
0x00002f2e ldr r3, [sp, 0x34] | r3 = var_34h;
0x00002f30 eors r2, r3 | r2 ^= r3;
0x00002f32 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00002f36 bne.w 0x307a | goto label_3;
| }
0x00002f3a add sp, 0x3c |
0x00002f3c vpop {d8, d9, d10} | __asm ("vpop {d8, d9, d10}");
0x00002f40 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00002f44 mov r2, r5 | r2 = r5;
0x00002f46 mov r1, r8 | r1 = r8;
0x00002f48 add r0, sp, 0x2c | r0 += var_2ch_2;
0x00002f4a blx 0x1c74 | fcn_00001c74 ();
0x00002f4e add.w r1, r7, 0x2c | r1 = r7 + 0x2c;
0x00002f52 mov r0, r8 | r0 = r8;
0x00002f54 blx 0x1e6c | fcn_00001e6c ();
0x00002f58 ldr r3, [pc, 0x148] |
0x00002f5a str r0, [sp, 0x1c] | var_1ch = r0;
0x00002f5c add r3, pc |
0x00002f5e ldr r3, [r3, 0x10] | r3 = *(0x6014);
0x00002f60 cmp r3, 0 |
0x00002f62 ble 0x2f16 |
| }
0x00002f64 ldr r3, [pc, 0x140] | r3 = *(0x30a8);
0x00002f66 movs r4, 0 | r4 = 0;
0x00002f68 vmov s15, r0 | __asm ("vmov s15, r0");
0x00002f6c add.w sb, r7, 8 | sb = r7 + 8;
0x00002f70 vcvt.f64.u32 d9, s15 | __asm ("vcvt.f64.u32 d9, s15");
0x00002f74 vldr d10, [pc, 0x108] | __asm ("vldr d10, [0x00003084]");
0x00002f78 ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x00002f7a str r3, [sp, 0x1c] | var_1ch = r3;
| do {
0x00002f7c mov r0, sb | r0 = sb;
0x00002f7e lsls r5, r4, 3 | r5 = r4 << 3;
0x00002f80 blx 0x1ce0 | fcn_00001ce0 ();
0x00002f84 ldr.w sl, [r7, 0x40] | sl = *((r7 + 0x40));
0x00002f88 ldr r2, [r7, 0x20] | r2 = *((r7 + 0x20));
0x00002f8a ldr.w r0, [sl, r4, lsl 3] | offset_0 = r4 << 3;
| r0 = *((sl + offset_0));
0x00002f8e ldr.w r6, [r2, r4, lsl 3] | offset_1 = r4 << 3;
| r6 = *((r2 + offset_1));
0x00002f90 str r4, [r6] | *(r6) = r4;
0x00002f92 add r2, r5 | r2 += r5;
0x00002f94 add r5, sl | r5 += sl;
0x00002f96 ldr.w fp, [r2, 4] | fp = *((r2 + 4));
0x00002f98 add sp, 0x10 |
0x00002f9a ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00002f9c subs r0, r6, r0 | r0 = r6 - r0;
0x00002f9e sbc.w r1, fp, r1 | __asm ("sbc.w r1, fp, r1");
0x00002fa2 bl 0x4a24 | r0 = fcn_00004a24 (r0, r1, r2);
0x00002fa6 vmov d16, r0, r1 | __asm ("vmov d16, r0, r1");
0x00002faa mov r0, sb | r0 = sb;
0x00002fac str.w r6, [sl, r4, lsl 3] | __asm ("str.w r6, [sl, r4, lsl 3]");
0x00002fb0 vmul.f64 d16, d16, d10 | __asm ("vmul.f64 d16, d16, d10");
0x00002fb4 str.w fp, [r5, 4] | __asm ("str.w fp, [r5, 4]");
0x00002fb8 vdiv.f64 d8, d16, d9 | __asm ("vdiv.f64 d8, d16, d9");
0x00002fbc blx 0x1d3c | fcn_00001d3c ();
0x00002fc0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00002fc2 movs r1, 1 | r1 = 1;
0x00002fc4 ldr r2, [pc, 0xe4] |
0x00002fc6 ldr r0, [r3] | r0 = *(r3);
0x00002fc8 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00002fca add r2, pc | r2 = 0x607a;
0x00002fcc strd r6, fp, [sp, 0x10] | __asm ("strd r6, fp, [var_0hx10]");
0x00002fd0 str r3, [sp, 4] | var_4h = r3;
0x00002fd2 ldr r3, [sp, 0x2c] | r3 = var_2ch_2;
0x00002fd4 str r3, [sp] | *(sp) = r3;
0x00002fd6 mov r3, r4 | r3 = r4;
0x00002fd8 adds r4, 1 | r4++;
0x00002fda vstr d8, [sp, 8] | __asm ("vstr d8, [sp, 8]");
0x00002fde blx 0x1bdc | fprintf_chk ()
0x00002fe2 ldr r3, [pc, 0xcc] |
0x00002fe4 add r3, pc |
0x00002fe6 ldr r3, [r3, 0x10] | r3 = *(0x60aa);
0x00002fe8 cmp r3, r4 |
0x00002fea bgt 0x2f7c |
| } while (r3 > r4);
0x00002fec b 0x2f16 | goto label_0;
| label_2:
0x00002fee add.w r1, r7, 0x2c | r1 = r7 + 0x2c;
0x00002ff2 mov r0, r8 | r0 = r8;
0x00002ff4 blx 0x1e6c | r0 = fcn_00001e6c ();
0x00002ff8 mov sb, r0 | sb = r0;
0x00002ffa cmp r0, 0 |
| if (r0 == 0) {
0x00002ffc beq 0x2f06 | goto label_1;
| }
0x00002ffe add.w sl, r7, 8 | sl = r7 + 8;
0x00003002 mov r0, sl | r0 = sl;
0x00003004 blx 0x1ce0 | fcn_00001ce0 ();
0x00003008 mov r0, sl | r0 = sl;
0x0000300a ldr.w fp, [r7, 0x10] | fp = *((r7 + 0x10));
0x0000300e blx 0x1d3c | fcn_00001d3c ();
0x00003012 ldrd r2, r1, [r7, 0x38] | __asm ("ldrd r2, r1, [r7, 0x38]");
0x00003016 cmp r2, 1 |
0x00003018 sbcs r3, r1, 0 | __asm ("sbcs r3, r1, 0");
0x0000301c ite ge |
| if (r2 < 1) {
0x0000301e movge r3, 1 | r3 = 1;
| }
| if (r2 >= 1) {
0x00003020 movlt r3, 0 | r3 = 0;
| }
0x00003022 cmp r2, fp |
0x00003024 and r3, r3, 1 | r3 &= 1;
0x00003028 sbcs r0, r1, 0 | __asm ("sbcs r0, r1, 0");
0x0000302c it ge |
| if (r2 < fp) {
0x0000302e movge r3, 0 | r3 = 0;
| }
0x00003030 cbnz r3, 0x303c |
| while (1) {
0x00003032 ldr r3, [pc, 0x80] |
0x00003034 add r3, pc | r3 = 0x60ee;
0x00003036 strd fp, r4, [r3, 0x38] | __asm ("strd fp, r4, [r3, 0x38]");
0x0000303a b 0x2f06 | goto label_1;
0x0000303c ldr r3, [pc, 0x68] | r3 = *(0x30a8);
0x0000303e subs.w r0, fp, r2 | r0 = fp - r2;
0x00003042 sbc.w r1, r1, r1, lsl 1 | __asm ("sbc.w r1, r1, r1, lsl 1");
0x00003046 ldr r7, [r6, r3] | r7 = *((r6 + r3));
0x00003048 bl 0x4a24 | fcn_00004a24 (r0, r1, r2);
0x0000304c vldr d18, [pc, 0x30] | __asm ("vldr d18, [0x00003084]");
0x00003050 vmov d17, r0, r1 | __asm ("vmov d17, r0, r1");
0x00003054 movs r1, 1 | r1 = 1;
0x00003056 vmov s15, sb | __asm ("vmov s15, sb");
0x0000305a vcvt.f64.u32 d16, s15 | __asm ("vcvt.f64.u32 d16, s15");
0x0000305e vmul.f64 d17, d17, d18 | __asm ("vmul.f64 d17, d17, d18");
0x00003062 ldr r2, [pc, 0x54] |
0x00003064 ldr r0, [r7] | r0 = *(r7);
0x00003066 strd fp, r4, [sp] | __asm ("strd fp, r4, [sp]");
0x0000306a add r2, pc | r2 = 0x6128;
0x0000306c vdiv.f64 d18, d17, d16 | __asm ("vdiv.f64 d18, d17, d16");
0x00003070 vstr d18, [sp, 8] | __asm ("vstr d18, [sp, 8]");
0x00003074 blx 0x1bdc | fprintf_chk ()
0x00003078 b 0x3032 |
| }
| label_3:
0x0000307a blx 0x1cec | fcn_00001cec ();
0x0000307e nop |
0x00003080 movs r0, r0 |
0x00003082 movs r0, r0 |
0x00003084 strh r0, [r0, 0x24] | *((r0 + 0x24)) = r0;
0x00003086 asrs r6, r5 | r6 >>= r5;
0x00003088 ldr r7, [pc, 0x240] | r7 = *(0x32cc);
0x0000308a movs r0, r0 |
0x0000308c lsls r0, r5, 5 | r0 = r5 << 5;
0x0000308e movs r0, r0 |
0x00003090 strb r4, [r7, r0] | *((r7 + r0)) = r4;
0x00003092 movs r0, r0 |
0x00003094 ldr r7, [pc, 0x1a8] | r7 = *(0x3240);
0x00003096 movs r0, r0 |
0x00003098 strb r4, [r3, r0] | *((r3 + r0)) = r4;
0x0000309a movs r0, r0 |
0x0000309c strb r6, [r0, r0] | *((r0 + r0)) = r6;
0x0000309e movs r0, r0 |
0x000030a0 ldr r7, [pc, 0x108] | r7 = *(0x31ac);
0x000030a2 movs r0, r0 |
0x000030a4 str r0, [r5, r2] | *((r5 + r2)) = r0;
0x000030a6 movs r0, r0 |
0x000030a8 lsls r4, r6, 5 | r4 = r6 << 5;
0x000030aa movs r0, r0 |
0x000030ac adds r6, r4, 7 | r6 = r4 + 7;
0x000030ae movs r0, r0 |
0x000030b0 str r0, [r4, r0] | *((r4 + r0)) = r0;
0x000030b2 movs r0, r0 |
0x000030b4 strh r0, [r6, r3] | *((r6 + r3)) = r0;
0x000030b6 movs r0, r0 |
0x000030b8 adds r2, r4, 4 | r2 = r4 + 4;
0x000030ba movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/loggen @ 0x357c */
| #include <stdint.h>
|
; (fcn) sym.read_next_message_from_file () | void read_next_message_from_file (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_74h;
| int16_t var_0h;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h_2;
| int16_t var_18h_2;
| int16_t var_1ch;
| int32_t var_20h;
| int32_t var_20h_2;
| int16_t var_28h;
| int16_t var_30h;
| int16_t var_34h_2;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_58h;
| int16_t var_201h;
| int8_t var_23ah;
| int8_t var_25bh;
| int16_t var_6d8h;
| int16_t var_16a0h;
| int16_t var_0h_5;
| int32_t var_0h_6;
| int16_t var_0h_4;
| int16_t var_16c0h;
| int32_t var_0h_3;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000357c svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00003580 sub.w sp, sp, 0x16c0 |
0x00003584 sub sp, 0x1c |
0x00003586 mov fp, r3 |
0x00003588 mov r8, r1 | r8 = r1;
0x0000358a add.w r1, sp, 0x16c0 | r1 += var_16c0h;
0x0000358e str r2, [sp, 0x44] | var_44h = r2;
0x00003590 adds r1, 0x14 | r1 += 0x14;
0x00003592 ldr.w r2, [pc, 0x874] |
0x00003596 mov r6, r0 | r6 = r0;
0x00003598 ldr.w r3, [pc, 0x870] | r3 = *(0x3e0c);
0x0000359c add r2, pc | r2 = 0x73aa;
0x0000359e ldr r3, [r2, r3] |
0x000035a0 movw r2, 0x165d | r2 = 0x165d;
0x000035a4 ldr r3, [r3] | r3 = *(0x73aa);
0x000035a6 str r3, [r1] | *(r1) = r3;
0x000035a8 mov.w r3, 0 | r3 = 0;
0x000035ac ldr.w r3, [pc, 0x860] | r3 = *(0x00003e10);
0x000035b0 movs r1, 0 | r1 = 0;
0x000035b2 add r3, pc | r3 += pc;
0x000035b4 str r3, [sp, 0x30] | var_30h = r3;
0x000035b6 add r3, sp, 0x48 | r3 += var_48h;
0x000035b8 mov r0, r3 | r0 = r3;
0x000035ba str r3, [sp, 0x38] | var_38h = r3;
0x000035bc blx 0x1c1c | fcn_00001c1c ();
0x000035c0 ldr.w r3, [pc, 0x850] |
0x000035c4 add r3, pc |
0x000035c6 ldr r3, [r3, 4] | r3 = *(0x73e0);
0x000035c8 ldr.w r0, [r3, fp, lsl 2] | r0 = *(0x73ef);
0x000035cc cmp r0, 0 |
| if (r0 == 0) {
0x000035ce beq.w 0x3d6a | goto label_9;
| }
0x000035d2 ldr.w r3, [pc, 0x844] |
0x000035d6 lsl.w fp, fp, 2 |
0x000035da ldr.w sl, [pc, 0x840] | sl = *(0x00003e1c);
0x000035de add r7, sp, 0x58 | r7 += var_58h;
0x000035e0 ldr.w r5, [pc, 0x83c] | r5 = *(0x00003e20);
0x000035e4 add r3, pc | r3 = 0x7402;
0x000035e6 str r7, [sp, 0x34] | var_34h_2 = r7;
0x000035e8 adds r3, 0x68 | r3 += 0x68;
0x000035ea add sl, pc | sl += pc;
0x000035ec str r3, [sp, 0x40] | var_40h = r3;
0x000035ee add r5, pc | r5 += pc;
0x000035f0 ldr.w r3, [pc, 0x830] |
0x000035f4 add r3, pc | r3 = 0x741c;
0x000035f6 adds r3, 0x54 | r3 += 0x54;
0x000035f8 str r3, [sp, 0x3c] | var_3ch = r3;
| label_0:
0x000035fa blx 0x1ba0 | r0 = feof (r0);
| if (r0 != 0) {
0x000035fe cbz r0, 0x3616 |
0x00003600 ldr.w r3, [sl, 8] | r3 = *((sl + 8));
0x00003604 cmp r3, 0 |
| if (r3 == 0) {
0x00003606 beq.w 0x3990 | goto label_14;
| }
0x0000360a ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x0000360e ldr.w r0, [r3, fp] | r0 = *((r3 + fp));
0x00003612 blx 0x1c98 | fcn_00001c98 ();
| }
0x00003616 mov r2, r8 | r2 = r8;
0x00003618 movs r1, 0 | r1 = 0;
0x0000361a mov r0, r6 | r0 = r6;
0x0000361c blx 0x1c1c | fcn_00001c1c ();
0x00003620 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00003622 mov r1, r8 | r1 = r8;
0x00003624 mov r0, r6 | r0 = r6;
0x00003626 ldr.w r2, [r3, fp] | r2 = *((r3 + fp));
0x0000362a blx 0x1da8 | r0 = fcn_00001da8 ();
0x0000362e cmp r0, 0 |
| if (r0 == 0) {
0x00003630 beq.w 0x396e | goto label_15;
| }
| label_2:
0x00003634 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00003636 cmp r3, 0 |
| if (r3 != 0) {
0x00003638 bne.w 0x3dac | goto label_16;
| }
0x0000363c ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0000363e mov r4, r6 | r4 = r6;
0x00003640 mov r0, r6 | r0 = r6;
0x00003642 subs r7, r3, 1 | r7 = r3 - 1;
| if (r3 != 0) {
0x00003644 cbnz r3, 0x3650 | goto label_17;
| }
0x00003646 b 0x3686 | goto label_18;
| do {
0x00003648 subs r7, 1 | r7--;
0x0000364a adds r0, 1 | r0++;
0x0000364c adds r3, r7, 1 | r3 = r7 + 1;
| if (r3 == r7) {
0x0000364e beq 0x3684 | goto label_19;
| }
| label_17:
0x00003650 movs r1, 0x20 | r1 = 0x20;
0x00003652 blx 0x1eb4 | r0 = fcn_00001eb4 ();
0x00003656 cmp r0, 0 |
0x00003658 bne 0x3648 |
| } while (r0 != 0);
| do {
| label_1:
0x0000365a ldr.w r3, [pc, 0x7cc] | r3 = *(0x00003e28);
0x0000365e ldr r2, [sp, 0x30] | r2 = var_30h;
0x00003660 ldr r4, [r2, r3] | r4 = *((r2 + r3));
| label_4:
0x00003662 ldr.w r7, [pc, 0x7c8] | r7 = *(0x00003e2c);
0x00003666 movs r1, 1 | r1 = 1;
0x00003668 ldr.w r2, [pc, 0x7c4] | r2 = *(0x00003e30);
0x0000366c ldr r0, [r4] | r0 = *(r4);
0x0000366e add r7, pc | r7 += pc;
0x00003670 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00003672 add r2, pc | r2 += pc;
0x00003674 add r3, r1 | r3 += r1;
0x00003676 str r3, [r7, 0x14] | *((r7 + 0x14)) = r3;
0x00003678 blx 0x1bdc | fprintf_chk ()
0x0000367c ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x0000367e ldr.w r0, [r3, fp] | r0 = *((r3 + fp));
0x00003682 b 0x35fa | goto label_0;
| label_19:
0x00003684 mov r4, r0 | r4 = r0;
| label_18:
0x00003686 ldr.w r2, [pc, 0x7ac] | r2 = *(0x00003e34);
0x0000368a movs r1, 5 | r1 = 5;
0x0000368c mov r0, r4 | r0 = r4;
0x0000368e add r2, pc | r2 += pc;
0x00003690 blx 0x1ca4 | r0 = fcn_00001ca4 ();
0x00003694 cmp r0, 0 |
| if (r0 != 0) {
0x00003696 beq.w 0x3918 |
0x0000369a ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x0000369c sub.w r2, r3, 0x41 | r2 = r3 - 0x41;
0x000036a0 cmp r2, 0x19 |
| if (r2 < 0x19) {
0x000036a2 bls.w 0x39c0 | goto label_20;
| }
0x000036a6 subs r3, 0x30 | r3 -= 0x30;
0x000036a8 cmp r3, 9 |
| if (r3 > 9) {
0x000036aa bhi.w 0x3918 | goto label_21;
| }
0x000036ae ldr.w r1, [pc, 0x788] |
0x000036b2 mov r0, r4 | r0 = r4;
0x000036b4 add r1, pc | r1 = 0x74f2;
0x000036b6 blx 0x1c80 | r0 = fcn_00001c80 ();
| if (r0 != 0) {
0x000036ba cbz r0, 0x36be |
0x000036bc adds r4, 1 | r4++;
| }
0x000036be ldr.w r1, [pc, 0x77c] | r1 = *(0x00003e3c);
0x000036c2 movs r2, 8 | r2 = 8;
0x000036c4 mov r0, r4 | r0 = r4;
0x000036c6 add r1, pc | r1 += pc;
0x000036c8 blx 0x1b1c | r0 = g_strsplit_set ();
0x000036cc mov sb, r0 | sb = r0;
0x000036ce blx 0x1cbc | r0 = fcn_00001cbc ();
0x000036d2 cmp r0, 7 |
| if (r0 < 7) {
0x000036d4 bls.w 0x3b3c | goto label_22;
| }
0x000036d8 ldr.w r4, [sb] | r4 = *(sb);
0x000036dc ldr r7, [sp, 0x34] | r7 = var_34h_2;
0x000036de mov r0, r4 | r0 = r4;
0x000036e0 blx 0x1dd0 | fcn_00001dd0 ();
0x000036e4 ldr.w r3, [pc, 0x758] | r3 = *(0x00003e40);
0x000036e8 mov r2, r0 | r2 = r0;
0x000036ea mov r1, r4 | r1 = r4;
0x000036ec ldr r0, [sp, 0x38] | r0 = var_38h;
0x000036ee add r3, pc | r3 += pc;
0x000036f0 str r3, [sp] | *(sp) = r3;
0x000036f2 movs r3, 4 | r3 = 4;
0x000036f4 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x000036f8 ldr.w r4, [sb, 4] | r4 = *((sb + 4));
0x000036fc mov r0, r4 | r0 = r4;
0x000036fe blx 0x1dd0 | fcn_00001dd0 ();
0x00003702 ldr.w r3, [pc, 0x740] | r3 = *(0x00003e44);
0x00003706 mov r2, r0 | r2 = r0;
0x00003708 mov r1, r4 | r1 = r4;
0x0000370a sub.w r0, r7, 0xc | r0 = r7 - 0xc;
0x0000370e add r3, pc | r3 += pc;
0x00003710 str r3, [sp] | *(sp) = r3;
0x00003712 movs r3, 3 | r3 = 3;
0x00003714 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003716 stc2 p8, c15, [ip, 0x364] | __asm ("stc2 p8, c15, [ip, 0x364]");
0x0000371a ands r0, r1 | r0 &= r1;
0x0000371c mov r0, r4 | r0 = r4;
0x0000371e blx 0x1dd0 | fcn_00001dd0 ();
0x00003722 ldr.w r3, [pc, 0x724] | r3 = *(0x00003e48);
0x00003726 mov r2, r0 | r2 = r0;
0x00003728 mov r1, r4 | r1 = r4;
0x0000372a sub.w r0, r7, 9 | r0 = r7 - 9;
0x0000372e add r3, pc | r3 += pc;
0x00003730 str r3, [sp] | *(sp) = r3;
0x00003732 movs r3, 0x81 | r3 = 0x81;
0x00003734 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003738 ldr.w r4, [sb, 0xc] | r4 = *((sb + 0xc));
0x0000373c mov r0, r4 | r0 = r4;
0x0000373e blx 0x1dd0 | fcn_00001dd0 ();
0x00003742 ldr.w r3, [pc, 0x708] | r3 = *(0x00003e4c);
0x00003746 mov r2, r0 | r2 = r0;
0x00003748 mov r1, r4 | r1 = r4;
0x0000374a add.w r0, r7, 0x78 | r0 = r7 + 0x78;
0x0000374e add r3, pc | r3 += pc;
0x00003750 str r3, [sp] | *(sp) = r3;
0x00003752 mov.w r3, 0x100 | r3 = 0x100;
0x00003756 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x0000375a ldr.w r4, [sb, 0x10] | r4 = *((sb + 0x10));
0x0000375e mov r0, r4 | r0 = r4;
0x00003760 blx 0x1dd0 | fcn_00001dd0 ();
0x00003764 ldr.w r3, [pc, 0x6e8] |
0x00003768 mov r2, r0 | r2 = r0;
0x0000376a mov r1, r4 | r1 = r4;
0x0000376c add.w r0, r7, 0x178 | r0 = r7 + 0x178;
0x00003770 add r3, pc | r3 = 0x75c4;
0x00003772 str r3, [sp] | *(sp) = r3;
0x00003774 movs r3, 0x31 | r3 = 0x31;
0x00003776 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x0000377a ldr.w r4, [sb, 0x14] | r4 = *((sb + 0x14));
0x0000377e mov r0, r4 | r0 = r4;
0x00003780 blx 0x1dd0 | fcn_00001dd0 ();
0x00003784 ldr.w r3, [pc, 0x6cc] |
0x00003788 mov r2, r0 | r2 = r0;
0x0000378a mov r1, r4 | r1 = r4;
0x0000378c addw r0, r7, 0x1a9 | __asm ("addw r0, r7, 0x1a9");
0x00003790 add r3, pc | r3 = 0x75e8;
0x00003792 str r3, [sp] | *(sp) = r3;
0x00003794 movs r3, 0x81 | r3 = 0x81;
0x00003796 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x0000379a ldr.w r4, [sb, 0x18] | r4 = *((sb + 0x18));
0x0000379e mov r0, r4 | r0 = r4;
0x000037a0 blx 0x1dd0 | fcn_00001dd0 ();
0x000037a4 ldr.w r3, [pc, 0x6b0] |
0x000037a8 mov r2, r0 | r2 = r0;
0x000037aa mov r1, r4 | r1 = r4;
0x000037ac addw r0, r7, 0x22a | __asm ("addw r0, r7, 0x22a");
0x000037b0 add r3, pc | r3 = 0x760c;
0x000037b2 str r3, [sp] | *(sp) = r3;
0x000037b4 movs r3, 0x21 | r3 = 0x21;
0x000037b6 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x000037ba ldr.w r4, [sb, 0x1c] | r4 = *((sb + 0x1c));
0x000037be movw r1, 0x401 | r1 = 0x401;
0x000037c0 asrs r1, r0 | r1 >>= r0;
0x000037c2 ldr.w r2, [pc, 0x698] |
0x000037c6 mov r0, r4 | r0 = r4;
0x000037c8 add r2, pc |
0x000037ca blx 0x1ca4 | fcn_00001ca4 ();
0x000037ce ldr.w r2, [pc, 0x690] | r2 = *(0x00003e60);
0x000037d2 mov r5, r0 | r5 = r0;
0x000037d4 movw r1, 0x401 | r1 = 0x401;
0x000037d8 mov r0, r4 | r0 = r4;
0x000037da add r2, pc | r2 = 0xae08;
0x000037dc blx 0x1ca4 | r0 = fcn_00001ca4 ();
0x000037e0 cmp r0, 0 |
0x000037e2 it ne |
| if (r0 != 0) {
0x000037e4 cmpne r5, 0 | __asm ("cmpne r5, 0");
| }
0x000037e6 ite eq |
| if (r0 != 0) {
0x000037e8 moveq r3, 1 | r3 = 1;
| }
| if (r0 == 0) {
0x000037ea movne r3, 0 | r3 = 0;
| }
| if (r0 == 0) {
0x000037ec beq.w 0x3bc6 | goto label_23;
| }
0x000037f0 subs r2, r0, r5 | r2 = r0 - r5;
0x000037f2 cmp r2, 1 |
| if (r2 == 1) {
0x000037f4 beq.w 0x3bc6 | goto label_23;
| }
0x000037f8 mov r4, r0 | r4 = r0;
0x000037fa mov r0, r5 | r0 = r5;
0x000037fc strb r3, [r4], 3 | *(r4) = r3;
| r4 += 3;
0x00003800 blx 0x1dd0 | fcn_00001dd0 ();
0x00003804 ldr.w r3, [pc, 0x65c] | r3 = *(0x00003e64);
0x00003808 mov r1, r5 | r1 = r5;
0x0000380a addw r5, r7, 0x24b | __asm ("addw r5, r7, 0x24b");
0x0000380e mov r2, r0 | r2 = r0;
0x00003810 mov r0, r5 | r0 = r5;
0x00003812 add r3, pc | r3 += pc;
0x00003814 str r3, [sp] | *(sp) = r3;
0x00003816 movw r3, 0x401 |
0x0000381a bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x0000381e mov r0, r5 | r0 = r5;
0x00003820 blx 0x1c10 | fcn_00001c10 ();
0x00003824 mov r0, r4 | r0 = r4;
0x00003826 blx 0x1dd0 | fcn_00001dd0 ();
0x0000382a ldr.w r3, [pc, 0x63c] | r3 = *(0x00003e68);
0x0000382e mov r2, r0 | r2 = r0;
0x00003830 mov r1, r4 | r1 = r4;
0x00003832 addw r0, r7, 0x64c | __asm ("addw r0, r7, 0x64c");
0x00003836 add r3, pc | r3 = 0x3c3b;
0x00003838 str r3, [sp] | *(sp) = r3;
0x0000383a movw r3, 0x1001 | r3 = 0x1001;
0x0000383e bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
| label_5:
0x00003842 mov r0, sb | r0 = sb;
0x00003844 blx 0x1cb0 | fcn_00001cb0 ();
0x00003848 ldr.w r3, [pc, 0x620] |
0x0000384c add r3, pc |
0x0000384e ldr r3, [r3, 0xc] | r3 = *(0x76c8);
| label_3:
0x00003850 cmp r3, 0 |
| if (r3 != 0) {
0x00003852 bne.w 0x3dac | goto label_16;
| }
0x00003856 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00003858 add.w r4, sp, 0x16a0 | r4 += var_16a0h;
0x0000385c adds r4, 0x14 | r4 += 0x14;
0x0000385e movs r1, 0x20 | r1 = 0x20;
0x00003860 mov r0, r4 | r0 = r4;
0x00003862 cmp r3, 0 |
| if (r3 == 0) {
0x00003864 beq.w 0x3d6e | goto label_24;
| }
0x00003868 blx 0x1cc8 | fcn_00001cc8 ();
0x0000386c add.w r3, sp, 0x6d8 | r3 += var_6d8h;
0x00003870 mov r2, r0 | r2 = r0;
0x00003872 sub.w r5, r3, 0x690 | r5 -= var_48h;
0x00003876 sub.w r1, r8, 0xa | r1 = r8 - 0xa;
0x0000387a ldrb.w r5, [r5, 0x1b9] | r5 = var_201h;
0x0000387e add.w r0, r6, 0xa | r0 = r6 + 0xa;
0x00003882 cmp r5, 0 |
| if (r5 == 0) {
0x00003884 beq.w 0x3dfe | goto label_25;
| }
0x00003888 addw r5, r7, 0x1a9 | __asm ("addw r5, r7, 0x1a9");
| label_13:
0x0000388c sub.w ip, r3, 0x690 |
0x00003890 ldrb.w ip, [ip, 0x23a] | ip = var_23ah;
0x00003894 cmp.w ip, 0 |
| if (ip == 0) {
0x00003898 beq.w 0x3df6 | goto label_26;
| }
0x0000389c addw ip, r7, 0x22a | __asm ("addw ip, r7, 0x22a");
| label_12:
0x000038a0 sub.w r3, r3, 0x690 | r3 -= var_48h;
0x000038a4 ldrb.w r3, [r3, 0x25b] | r3 = var_25bh;
0x000038a8 cmp r3, 0 |
| if (r3 == 0) {
0x000038aa beq.w 0x3df0 | goto label_27;
| }
0x000038ae addw r3, r7, 0x24b | __asm ("addw r3, r7, 0x24b");
| label_11:
0x000038b2 strd ip, r3, [sp, 0x20] | __asm ("strd ip, r3, [var_20h]");
0x000038b6 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000038b8 strd r2, r4, [sp, 0xc] | __asm ("strd r2, r4, [var_10h]");
0x000038bc addw r2, r7, 0x64c | __asm ("addw r2, r7, 0x64c");
0x000038c0 str r2, [sp, 0x28] | var_28h = r2;
0x000038c2 add.w r2, r7, 0x178 | r2 = r7 + 0x178;
0x000038c6 str r3, [sp, 4] | var_4h_2 = r3;
0x000038c8 ldr.w r3, [pc, 0x5a4] | r3 = *(0x00003e70);
0x000038cc str r2, [sp, 0x18] | var_18h_2 = r2;
0x000038ce add.w r2, r7, 0x78 | r2 = r7 + 0x78;
0x000038d2 subs r7, 0xc | r7 -= 0xc;
0x000038d4 str r5, [sp, 0x1c] | var_1ch = r5;
0x000038d6 add r3, pc | r3 += pc;
0x000038d8 str r2, [sp, 0x14] | var_14h_2 = r2;
0x000038da str r3, [sp] | *(sp) = r3;
0x000038dc movs r2, 1 | r2 = 1;
0x000038de mov.w r3, -1 | r3 = -1;
0x000038e2 str r7, [sp, 8] | var_8h_2 = r7;
0x000038e4 blx 0x1ddc | fcn_00001ddc ();
0x000038e8 ldr.w r2, [pc, 0x588] |
0x000038ec add.w r5, sp, 0x16a0 | r5 += var_16a0h;
0x000038f0 movs r3, 0xb | r3 = 0xb;
0x000038f2 adds r5, 8 | r5 += 8;
0x000038f4 mov r1, r3 | r1 = r3;
0x000038f6 mov r4, r0 | r4 = r0;
0x000038f8 add r2, pc | r2 = 0x7770;
0x000038fa strd r2, r0, [sp] | __asm ("strd r2, r0, [sp]");
0x000038fe movs r2, 1 | r2 = 1;
0x00003900 mov r0, r5 | r0 = r5;
0x00003902 blx 0x1ddc | fcn_00001ddc ();
0x00003906 mov r2, r5 | r2 = r5;
0x00003908 add.w r3, r4, 0xa | r3 = r4 + 0xa;
0x0000390c ldm r2!, {r0, r1} | r0 = *(r2!);
| r1 = *((r2! + 4));
0x0000390e ldrh r2, [r2] | r2 = *(r2);
0x00003910 str r0, [r6] | *(r6) = r0;
0x00003912 str r1, [r6, 4] | *((r6 + 4)) = r1;
0x00003914 strh r2, [r6, 8] | *((r6 + 8)) = r2;
0x00003916 b 0x3994 | goto label_8;
| }
| label_21:
0x00003918 blx 0x1b58 | r0 = get_debug_level ();
0x0000391c cmp r0, 0 |
0x0000391e beq.w 0x365a |
| } while (r0 == 0);
0x00003922 ldr.w r0, [pc, 0x554] | r0 = *(0x00003e78);
0x00003926 add r0, pc | r0 += pc;
0x00003928 blx 0x1b70 | g_path_get_basename ();
0x0000392c ldr r2, [sp, 0x30] | r2 = var_30h;
0x0000392e mov r7, r0 | r7 = r0;
0x00003930 ldr.w r3, [pc, 0x548] | r3 = *(0x3e7c);
0x00003934 movs r1, 1 | r1 = 1;
0x00003936 ldr.w sb, [r2, r3] | sb = *((r2 + r3));
0x0000393a ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000393c ldr.w r2, [pc, 0x540] |
0x00003940 str r3, [sp] | *(sp) = r3;
0x00003942 movw r3, 0x149 | r3 = 0x149;
0x00003946 str r3, [sp, 4] | var_4h_2 = r3;
0x00003948 add r2, pc | r2 = 0x77cc;
0x0000394a mov r3, r7 | r3 = r7;
0x0000394c ldr.w r0, [sb] | r0 = *(sb);
0x00003950 blx 0x1bdc | fprintf_chk ()
0x00003954 ldr.w r2, [pc, 0x52c] |
0x00003958 mov r3, r4 | r3 = r4;
0x0000395a ldr.w r0, [sb] | r0 = *(sb);
0x0000395e movs r1, 1 | r1 = 1;
0x00003960 add r2, pc | r2 = 0x77e8;
0x00003962 blx 0x1bdc | fprintf_chk ()
0x00003966 mov r0, r7 | r0 = r7;
0x00003968 blx 0x1d14 | g_hash_table_unref ();
0x0000396c b 0x365a | goto label_1;
| label_15:
0x0000396e ldr r3, [r5, 8] | r3 = *((r5 + 8));
| if (r3 == 0) {
0x00003970 cbz r3, 0x3990 | goto label_14;
| }
0x00003972 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00003974 ldr.w r0, [r3, fp] | r0 = *((r3 + fp));
0x00003978 blx 0x1c98 | fcn_00001c98 ();
0x0000397c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0000397e mov r1, r8 | r1 = r8;
0x00003980 mov r0, r6 | r0 = r6;
0x00003982 ldr.w r2, [r3, fp] | r2 = *((r3 + fp));
0x00003986 blx 0x1da8 | r0 = fcn_00001da8 ();
0x0000398a cmp r0, 0 |
| if (r0 != 0) {
0x0000398c bne.w 0x3634 | goto label_2;
| }
| label_14:
0x00003990 mov.w r3, -1 | r3 = -1;
| label_8:
0x00003994 ldr.w r1, [pc, 0x4f0] | r1 = *(0x00003e88);
0x00003998 add.w r0, sp, 0x16c0 | r0 += var_16c0h;
0x0000399c ldr.w r2, [pc, 0x46c] | r2 = *(0x3e0c);
0x000039a0 adds r0, 0x14 | r0 += 0x14;
0x000039a2 add r1, pc | r1 += pc;
0x000039a4 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x000039a6 ldr r1, [r2] | r1 = *(0x3e0c);
0x000039a8 ldr r2, [r0] | r2 = *(r0);
0x000039aa eors r1, r2 | r1 ^= r2;
0x000039ac mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x000039b0 bne.w 0x3e04 | goto label_28;
| }
0x000039b4 mov r0, r3 | r0 = r3;
0x000039b6 add.w sp, sp, 0x16c0 |
0x000039ba add sp, 0x1c |
0x000039bc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_20:
0x000039c0 ldr.w r7, [pc, 0x4c8] |
0x000039c4 movs r2, 0 | r2 = 0;
0x000039c6 ldr.w r3, [pc, 0x4c8] | r3 = *(0x00003e90);
0x000039ca ldr r0, [sp, 0x34] | r0 = var_34h_2;
0x000039cc add r7, pc | r7 = 0x785c;
0x000039ce add r3, pc | r3 += pc;
0x000039d0 mov r1, r7 | r1 = r7;
0x000039d2 subs r0, 0xc | r0 -= 0xc;
0x000039d4 str r3, [sp] | *(sp) = r3;
0x000039d6 movs r3, 3 | r3 = 3;
0x000039d8 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x000039dc ldr.w r3, [pc, 0x4b4] | r3 = *(0x00003e94);
0x000039e0 movs r2, 0 | r2 = 0;
0x000039e2 ldr r0, [sp, 0x34] | r0 = var_34h_2;
0x000039e4 mov r1, r7 | r1 = r7;
0x000039e6 add r3, pc | r3 += pc;
0x000039e8 addw r0, r0, 0x22a | __asm ("addw r0, r0, 0x22a");
0x000039ec str r3, [sp] | *(sp) = r3;
0x000039ee movs r3, 0x21 | r3 = 0x21;
0x000039f0 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x000039f4 ldr.w r3, [pc, 0x4a0] | r3 = *(0x00003e98);
0x000039f8 mov r1, r7 | r1 = r7;
0x000039fa ldr r0, [sp, 0x34] | r0 = var_34h_2;
0x000039fc movs r2, 0 | r2 = 0;
0x000039fe add r3, pc | r3 += pc;
0x00003a00 addw r0, r0, 0x24b | __asm ("addw r0, r0, 0x24b");
0x00003a04 str r3, [sp] | *(sp) = r3;
0x00003a06 movw r3, 0x401 | r3 = 0x401;
0x00003a0a bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003a0e ldr.w r1, [pc, 0x48c] |
0x00003a12 mov r0, r4 | r0 = r4;
0x00003a14 add r1, pc | r1 = 0x78b6;
0x00003a16 blx 0x1c80 | r0 = fcn_00001c80 ();
| if (r0 != 0) {
0x00003a1a cbz r0, 0x3a1e |
0x00003a1c adds r4, 1 | r4++;
| }
0x00003a1e ldr.w r2, [pc, 0x480] |
0x00003a22 movw r1, 0x1001 | r1 = 0x1001;
0x00003a26 mov r0, r4 | r0 = r4;
0x00003a28 add r2, pc | r2 = 0x78ce;
0x00003a2a blx 0x1ca4 | r0 = fcn_00001ca4 ();
0x00003a2e mov sb, r0 | sb = r0;
0x00003a30 cmp r0, 0 |
| if (r0 == 0) {
0x00003a32 beq.w 0x3b82 | goto label_29;
| }
0x00003a36 ldr.w r0, [pc, 0x46c] |
0x00003a3a sub.w r2, sb, r4 | r2 = sb - r4;
0x00003a3e mov r1, r4 | r1 = r4;
0x00003a40 movs r3, 4 | r3 = 4;
0x00003a42 ldr r7, [sp, 0x34] | r7 = var_34h_2;
0x00003a44 add r0, pc | r0 = 0x78ee;
0x00003a46 ldr.w r5, [pc, 0x460] | r5 = *(0x00003ea8);
0x00003a4a str r0, [sp] | *(sp) = r0;
0x00003a4c ldr r0, [sp, 0x38] | r0 = var_38h;
0x00003a4e bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003a52 ldr.w r0, [pc, 0x458] |
0x00003a56 add.w r1, sb, 1 | r1 = sb + 1;
0x00003a5a movs r3, 0x81 | r3 = 0x81;
0x00003a5c movs r2, 0xf | r2 = 0xf;
0x00003a5e add.w sb, sb, 0x11 | sb += 0x11;
0x00003a62 add r5, pc | r5 += pc;
0x00003a64 add r0, pc | r0 = 0x7916;
0x00003a66 str r0, [sp] | *(sp) = r0;
0x00003a68 sub.w r0, r7, 9 | r0 = r7 - 9;
0x00003a6c bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003a70 movw r1, 0x1001 | r1 = 0x1001;
0x00003a74 mov r2, r5 | r2 = r5;
0x00003a76 mov r0, sb | r0 = sb;
0x00003a78 blx 0x1ca4 | r0 = fcn_00001ca4 ();
0x00003a7c mov r4, r0 | r4 = r0;
0x00003a7e cmp r0, 0 |
| if (r0 == 0) {
0x00003a80 beq.w 0x3c9a | goto label_30;
| }
0x00003a84 ldr.w r3, [pc, 0x428] |
0x00003a88 sub.w r2, r0, sb | r2 = r0 - sb;
0x00003a8c mov r1, sb | r1 = sb;
0x00003a8e adds r4, 1 | r4++;
0x00003a90 add.w r0, r7, 0x78 | r0 = r7 + 0x78;
0x00003a94 add r3, pc | r3 = 0x7948;
0x00003a96 str r3, [sp] | *(sp) = r3;
0x00003a98 mov.w r3, 0x100 | r3 = 0x100;
0x00003a9c bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003aa0 mov r2, r5 | r2 = r5;
0x00003aa2 movw r1, 0x1001 | r1 = 0x1001;
0x00003aa6 mov r0, r4 | r0 = r4;
0x00003aa8 blx 0x1ca4 | fcn_00001ca4 ();
0x00003aac ldr.w r2, [pc, 0x404] | r2 = *(0x00003eb4);
0x00003ab0 movs r1, 0x31 | r1 = 0x31;
0x00003ab2 mov r5, r0 | r5 = r0;
0x00003ab4 mov r0, r4 | r0 = r4;
0x00003ab6 add r2, pc | r2 += pc;
0x00003ab8 blx 0x1ca4 | r0 = fcn_00001ca4 ();
0x00003abc mov sb, r0 | sb = r0;
0x00003abe cmp r0, 0 |
| if (r0 == 0) {
0x00003ac0 beq.w 0x3d1a | goto label_31;
| }
0x00003ac4 ldr r2, [pc, 0x3f0] |
0x00003ac6 movs r1, 0x31 | r1 = 0x31;
0x00003ac8 mov r0, r4 | r0 = r4;
0x00003aca add r2, pc | r2 = 0x7986;
0x00003acc blx 0x1ca4 | fcn_00001ca4 ();
0x00003ad0 ldr r2, [pc, 0x3e8] |
0x00003ad2 mov sb, r0 | sb = r0;
0x00003ad4 movs r1, 0x31 | r1 = 0x31;
0x00003ad6 mov r0, r4 | r0 = r4;
0x00003ad8 add r2, pc | r2 = 0x7998;
0x00003ada blx 0x1ca4 | r0 = fcn_00001ca4 ();
0x00003ade cmp r0, 0 |
0x00003ae0 it ne |
| if (r0 != 0) {
0x00003ae2 cmpne sb, 0 | __asm ("cmpne sb, 0");
| }
| if (r0 != 0) {
0x00003ae6 bne.w 0x3c22 | goto label_32;
| }
0x00003aea ldr r3, [pc, 0x3d4] |
0x00003aec addw r0, r7, 0x1a9 | __asm ("addw r0, r7, 0x1a9");
0x00003af0 ldr r1, [pc, 0x3d0] |
0x00003af2 movs r2, 0 | r2 = 0;
0x00003af4 add r3, pc | r3 = 0x79ba;
0x00003af6 add r1, pc | r1 = 0x79be;
0x00003af8 str r3, [sp] | *(sp) = r3;
0x00003afa movs r3, 0x81 | r3 = 0x81;
0x00003afc bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003b00 ldr r3, [pc, 0x3c4] |
0x00003b02 subs r2, r5, r4 | r2 = r5 - r4;
0x00003b04 subs r2, 1 | r2--;
0x00003b06 mov r1, r4 | r1 = r4;
0x00003b08 add.w r0, r7, 0x178 | r0 = r7 + 0x178;
0x00003b0c add r3, pc | r3 = 0x79d8;
0x00003b0e str r3, [sp] | *(sp) = r3;
0x00003b10 movs r3, 0x31 | r3 = 0x31;
0x00003b12 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
| do {
0x00003b16 adds r5, 1 | r5++;
0x00003b18 mov r0, r5 | r0 = r5;
0x00003b1a blx 0x1dd0 | fcn_00001dd0 ();
0x00003b1e ldr r3, [pc, 0x3ac] |
0x00003b20 mov r2, r0 | r2 = r0;
0x00003b22 mov r1, r5 | r1 = r5;
0x00003b24 addw r0, r7, 0x64c | __asm ("addw r0, r7, 0x64c");
0x00003b28 add r3, pc | r3 = 0x79fa;
0x00003b2a str r3, [sp] | *(sp) = r3;
0x00003b2c movw r3, 0x1001 | r3 = 0x1001;
0x00003b30 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003b34 ldr r3, [pc, 0x398] |
0x00003b36 add r3, pc |
0x00003b38 ldr r3, [r3, 0xc] | r3 = *(0x7a16);
0x00003b3a b 0x3850 | goto label_3;
| label_22:
0x00003b3c ldr r0, [pc, 0x394] |
0x00003b3e add r0, pc | r0 = 0x7a16;
0x00003b40 blx 0x1b70 | g_path_get_basename ();
0x00003b44 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00003b46 mov r7, r0 | r7 = r0;
0x00003b48 ldr r3, [pc, 0x2dc] | r3 = *(0x3e28);
0x00003b4a movs r1, 1 | r1 = 1;
0x00003b4c ldr r4, [r2, r3] | r4 = *((r2 + r3));
0x00003b4e ldr r3, [pc, 0x388] |
0x00003b50 ldr r2, [pc, 0x388] |
0x00003b52 ldr r0, [r4] | r0 = *(r4);
0x00003b54 add r3, pc | r3 = 0x7a32;
0x00003b56 adds r3, 0x28 | r3 += 0x28;
0x00003b58 add r2, pc | r2 = 0x7a38;
0x00003b5a str r3, [sp] | *(sp) = r3;
0x00003b5c movs r3, 0xcc | r3 = 0xcc;
0x00003b5e str r3, [sp, 4] | var_4h_2 = r3;
0x00003b60 mov r3, r7 | r3 = r7;
0x00003b62 blx 0x1bdc | fprintf_chk ()
0x00003b66 ldr r0, [pc, 0x378] |
0x00003b68 movs r2, 0x31 | r2 = 0x31;
0x00003b6a ldr r3, [r4] | r3 = *(r4);
0x00003b6c movs r1, 1 | r1 = 1;
0x00003b6e add r0, pc | r0 = 0x7a54;
0x00003b70 blx 0x1db4 | fcn_00001db4 ();
0x00003b74 mov r0, r7 | r0 = r7;
0x00003b76 blx 0x1d14 | g_hash_table_unref ();
0x00003b7a mov r0, sb | r0 = sb;
0x00003b7c blx 0x1cb0 | fcn_00001cb0 ();
0x00003b80 b 0x3662 | goto label_4;
| label_29:
0x00003b82 ldr r0, [pc, 0x360] |
0x00003b84 add r0, pc | r0 = 0x7a6e;
0x00003b86 blx 0x1b70 | g_path_get_basename ();
0x00003b8a ldr r2, [sp, 0x30] | r2 = var_30h;
0x00003b8c mov r7, r0 | r7 = r0;
0x00003b8e ldr r3, [pc, 0x298] | r3 = *(0x3e2a);
0x00003b90 mov.w ip, 0xf0 |
0x00003b94 movs r1, 1 | r1 = 1;
0x00003b96 ldr r4, [r2, r3] | r4 = *((r2 + r3));
0x00003b98 mov r3, r0 | r3 = r0;
0x00003b9a ldr r2, [pc, 0x34c] |
0x00003b9c ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00003b9e ldr.w lr, [r4] |
0x00003ba2 add r2, pc | r2 = 0x7a90;
0x00003ba4 str.w ip, [sp, 4] | __asm ("str.w ip, [var_4h_2]");
0x00003ba8 str r0, [sp] | *(sp) = r0;
0x00003baa mov r0, lr | r0 = lr;
0x00003bac blx 0x1bdc | fprintf_chk ()
0x00003bb0 ldr r0, [pc, 0x338] |
0x00003bb2 movs r2, 0x2a | r2 = 0x2a;
0x00003bb4 ldr r3, [r4] | r3 = *(r4);
0x00003bb6 movs r1, 1 | r1 = 1;
0x00003bb8 add r0, pc | r0 = 0x7aa8;
0x00003bba blx 0x1db4 | fcn_00001db4 ();
0x00003bbe mov r0, r7 | r0 = r7;
0x00003bc0 blx 0x1d14 | g_hash_table_unref ();
0x00003bc4 b 0x3662 | goto label_4;
| label_23:
0x00003bc6 blx 0x1b58 | r0 = get_debug_level ();
0x00003bca cmp r0, 0 |
| if (r0 != 0) {
0x00003bcc bne 0x3c54 | goto label_33;
| }
| label_6:
0x00003bce ldr r5, [pc, 0x320] |
0x00003bd0 addw r0, r7, 0x24b | __asm ("addw r0, r7, 0x24b");
0x00003bd4 ldr r3, [pc, 0x31c] |
0x00003bd6 movs r2, 1 | r2 = 1;
0x00003bd8 add r5, pc | r5 = 0x7ace;
0x00003bda add r3, pc | r3 = 0x7ad2;
0x00003bdc mov r1, r5 | r1 = r5;
0x00003bde str r3, [sp] | *(sp) = r3;
0x00003be0 movw r3, 0x401 | r3 = 0x401;
0x00003be4 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003be8 mov r2, r5 | r2 = r5;
0x00003bea mov r0, r4 | r0 = r4;
0x00003bec movw r1, 0x401 | r1 = 0x401;
0x00003bf0 blx 0x1ca4 | r0 = fcn_00001ca4 ();
0x00003bf4 cmp r0, 0 |
| if (r0 == 0) {
0x00003bf6 beq.w 0x3d00 | goto label_34;
| }
0x00003bfa adds r4, r0, 1 | r4 = r0 + 1;
0x00003bfc mov r0, r4 | r0 = r4;
0x00003bfe blx 0x1dd0 | fcn_00001dd0 ();
0x00003c02 ldr r3, [pc, 0x2f4] |
0x00003c04 mov r2, r0 | r2 = r0;
0x00003c06 mov r1, r4 | r1 = r4;
0x00003c08 addw r0, r7, 0x64c | __asm ("addw r0, r7, 0x64c");
0x00003c0c add r3, pc | r3 = 0x7b0a;
0x00003c0e str r3, [sp] | *(sp) = r3;
0x00003c10 movw r3, 0x1001 | r3 = 0x1001;
0x00003c14 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
| label_7:
0x00003c18 addw r0, r7, 0x64c | __asm ("addw r0, r7, 0x64c");
0x00003c1c blx 0x1e00 | fcn_00001e00 ();
0x00003c20 b 0x3842 | goto label_5;
| label_32:
0x00003c22 ldr r3, [pc, 0x2d8] |
0x00003c24 sub.w r2, r0, sb | r2 = r0 - sb;
0x00003c28 add.w r1, sb, 1 | r1 = sb + 1;
0x00003c2c addw r0, r7, 0x1a9 | __asm ("addw r0, r7, 0x1a9");
0x00003c30 subs r2, 1 | r2--;
0x00003c32 add r3, pc | r3 = 0x7b34;
0x00003c34 str r3, [sp] | *(sp) = r3;
0x00003c36 movs r3, 0x81 | r3 = 0x81;
0x00003c38 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003c3c ldr r3, [pc, 0x2c0] |
0x00003c3e sub.w r2, sb, r4 | r2 = sb - r4;
0x00003c42 mov r1, r4 | r1 = r4;
0x00003c44 add.w r0, r7, 0x178 | r0 = r7 + 0x178;
0x00003c48 add r3, pc | r3 = 0x7b4c;
0x00003c4a str r3, [sp] | *(sp) = r3;
0x00003c4c movs r3, 0x31 | r3 = 0x31;
0x00003c4e bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003c52 b 0x3b16 |
| } while (1);
| label_33:
0x00003c54 ldr r0, [pc, 0x2ac] |
0x00003c56 add r0, pc | r0 = 0x7b5e;
0x00003c58 blx 0x1b70 | g_path_get_basename ();
0x00003c5c ldr r2, [sp, 0x30] | r2 = var_30h;
0x00003c5e mov r5, r0 | r5 = r0;
0x00003c60 ldr r3, [pc, 0x218] | r3 = *(0x3e7c);
0x00003c62 movs r1, 1 | r1 = 1;
0x00003c64 ldr.w sl, [r2, r3] | sl = *((r2 + r3));
0x00003c68 ldr r3, [pc, 0x29c] |
0x00003c6a ldr r2, [pc, 0x2a0] |
0x00003c6c add r3, pc | r3 = 0x7b78;
0x00003c6e adds r3, 0x3c | r3 += 0x3c;
0x00003c70 add r2, pc | r2 = 0x7b82;
0x00003c72 str r3, [sp] | *(sp) = r3;
0x00003c74 movs r3, 0xa9 | r3 = 0xa9;
0x00003c76 ldr.w r0, [sl] | r0 = *(sl);
0x00003c7a str r3, [sp, 4] | var_4h_2 = r3;
0x00003c7c mov r3, r5 | r3 = r5;
0x00003c7e blx 0x1bdc | fprintf_chk ()
0x00003c82 ldr r0, [pc, 0x28c] |
0x00003c84 movs r2, 0x27 | r2 = 0x27;
0x00003c86 ldr.w r3, [sl] | r3 = *(sl);
0x00003c8a movs r1, 1 | r1 = 1;
0x00003c8c add r0, pc | r0 = 0x7ba2;
0x00003c8e blx 0x1db4 | fcn_00001db4 ();
0x00003c92 mov r0, r5 | r0 = r5;
0x00003c94 blx 0x1d14 | g_hash_table_unref ();
0x00003c98 b 0x3bce | goto label_6;
| label_30:
0x00003c9a mov r0, sb | r0 = sb;
0x00003c9c ldr r5, [pc, 0x274] |
0x00003c9e blx 0x1dd0 | fcn_00001dd0 ();
0x00003ca2 ldr r3, [pc, 0x274] |
0x00003ca4 mov r2, r0 | r2 = r0;
0x00003ca6 mov r1, sb | r1 = sb;
0x00003ca8 add.w r0, r7, 0x78 | r0 = r7 + 0x78;
0x00003cac add r5, pc | r5 = 0x7bc4;
0x00003cae add r3, pc | r3 = 0x7bcc;
0x00003cb0 str r3, [sp] | *(sp) = r3;
0x00003cb2 mov.w r3, 0x100 | r3 = 0x100;
0x00003cb6 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003cba ldr r3, [pc, 0x260] |
0x00003cbc mov r2, r4 | r2 = r4;
0x00003cbe mov r1, r5 | r1 = r5;
0x00003cc0 addw r0, r7, 0x1a9 | __asm ("addw r0, r7, 0x1a9");
0x00003cc4 add r3, pc | r3 = 0x7be6;
0x00003cc6 str r3, [sp] | *(sp) = r3;
0x00003cc8 movs r3, 0x81 | r3 = 0x81;
0x00003cca bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003cce ldr r3, [pc, 0x250] |
0x00003cd0 mov r2, r4 | r2 = r4;
0x00003cd2 mov r1, r5 | r1 = r5;
0x00003cd4 add.w r0, r7, 0x178 | r0 = r7 + 0x178;
0x00003cd8 add r3, pc |
0x00003cda str r3, [sp] | *(sp) = r3;
0x00003cdc movs r3, 0x31 | r3 = 0x31;
0x00003cde bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003ce0 invalid |
0x00003ce4 mov r2, r4 | r2 = r4;
0x00003ce6 mov r1, r5 | r1 = r5;
0x00003ce8 addw r0, r7, 0x64c | __asm ("addw r0, r7, 0x64c");
0x00003cec add r3, pc | r3 = 0xb8ee;
0x00003cee str r3, [sp] | *(sp) = r3;
0x00003cf0 movw r3, 0x1001 | r3 = 0x1001;
0x00003cf4 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003cf8 ldr r3, [pc, 0x22c] |
0x00003cfa add r3, pc |
0x00003cfc ldr r3, [r3, 0xc] | r3 = *(0x7c32);
0x00003cfe b 0x3850 | goto label_3;
| label_34:
0x00003d00 ldr r3, [pc, 0x228] |
0x00003d02 mov r2, r0 | r2 = r0;
0x00003d04 ldr r1, [pc, 0x228] |
0x00003d06 addw r0, r7, 0x64c | __asm ("addw r0, r7, 0x64c");
0x00003d0a add r3, pc | r3 = 0x7c3a;
0x00003d0c str r3, [sp] | *(sp) = r3;
0x00003d0e add r1, pc | r1 = 0x7c42;
0x00003d10 movw r3, 0x1001 | r3 = 0x1001;
0x00003d14 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003d18 b 0x3c18 | goto label_7;
| label_31:
0x00003d1a ldr r5, [pc, 0x218] |
0x00003d1c mov r2, r0 | r2 = r0;
0x00003d1e ldr r3, [pc, 0x218] |
0x00003d20 addw r0, r7, 0x1a9 | __asm ("addw r0, r7, 0x1a9");
0x00003d24 add r5, pc | r5 = 0x7c5e;
0x00003d26 add r3, pc | r3 = 0x7c64;
0x00003d28 mov r1, r5 | r1 = r5;
0x00003d2a str r3, [sp] | *(sp) = r3;
0x00003d2c movs r3, 0x81 | r3 = 0x81;
0x00003d2e bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003d32 ldr r3, [pc, 0x208] |
0x00003d34 mov r2, sb | r2 = sb;
0x00003d36 mov r1, r5 | r1 = r5;
0x00003d38 add.w r0, r7, 0x178 | r0 = r7 + 0x178;
0x00003d3c add r3, pc | r3 = 0x7c7e;
0x00003d3e str r3, [sp] | *(sp) = r3;
0x00003d40 movs r3, 0x31 | r3 = 0x31;
0x00003d42 bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003d46 mov r0, r4 | r0 = r4;
0x00003d48 blx 0x1dd0 | fcn_00001dd0 ();
0x00003d4c ldr r3, [pc, 0x1f0] |
0x00003d4e mov r2, r0 | r2 = r0;
0x00003d50 mov r1, r4 | r1 = r4;
0x00003d52 addw r0, r7, 0x64c | __asm ("addw r0, r7, 0x64c");
0x00003d56 add r3, pc | r3 = 0x7c9a;
0x00003d58 str r3, [sp] | *(sp) = r3;
0x00003d5a movw r3, 0x1001 | r3 = 0x1001;
0x00003d5e bl 0x3230 | fcn_00003230 (r0, r1, r2, r3, r4);
0x00003d62 ldr r3, [pc, 0x1e0] |
0x00003d64 add r3, pc |
0x00003d66 ldr r3, [r3, 0xc] | r3 = *(0x7cba);
0x00003d68 b 0x3850 | goto label_3;
| do {
| label_9:
0x00003d6a movs r3, 0 | r3 = 0;
0x00003d6c b 0x3994 | goto label_8;
| label_24:
0x00003d6e blx 0x1af8 | get_now_timestamp_bsd ();
0x00003d72 ldrb.w r2, [sp, 0x201] | r2 = var_201h;
0x00003d76 mov r3, r0 | r3 = r0;
0x00003d78 str r4, [sp, 8] | var_8h_2 = r4;
| if (r2 == 0) {
0x00003d7a cbz r2, 0x3dc6 | goto label_35;
| }
0x00003d7c ldr r2, [pc, 0x1c8] |
0x00003d7e addw r4, r7, 0x64c | __asm ("addw r4, r7, 0x64c");
0x00003d82 str r4, [sp, 0x18] | var_18h_2 = r4;
0x00003d84 addw r4, r7, 0x1a9 | __asm ("addw r4, r7, 0x1a9");
0x00003d88 str r4, [sp, 0x14] | var_14h_2 = r4;
0x00003d8a add.w r4, r7, 0x178 | r4 = r7 + 0x178;
0x00003d8e add r2, pc | r2 = 0x7cda;
0x00003d90 adds r7, 0x78 | r7 += 0x78;
0x00003d92 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00003d96 mov r1, r8 | r1 = r8;
0x00003d98 mov.w r3, -1 | r3 = -1;
0x00003d9c mov r0, r6 | r0 = r6;
0x00003d9e movs r2, 1 | r2 = 1;
0x00003da0 str r4, [sp, 0x10] | var_10h = r4;
0x00003da2 str r7, [sp, 0xc] | var_ch = r7;
0x00003da4 blx 0x1ddc | r0 = fcn_00001ddc ();
0x00003da8 mov r3, r0 | r3 = r0;
0x00003daa b 0x3994 | goto label_8;
| label_16:
0x00003dac subs.w r3, r8, 1 | r3 = r8 - 1;
0x00003db0 bmi 0x3d6a |
| } while (r3 < r8);
0x00003db2 add r6, r8 | r6 += r8;
0x00003db4 b 0x3dba | goto label_36;
| label_10:
0x00003db6 subs r3, 1 | r3--;
| if (r3 <= 1) {
0x00003db8 blo 0x3d6a | goto label_9;
| }
| label_36:
0x00003dba ldrb r2, [r6, -0x1]! | r2 = *((r6 -= 0x1));
0x00003dbe cmp r2, 0 |
| if (r2 == 0) {
0x00003dc0 beq 0x3db6 | goto label_10;
| }
0x00003dc2 adds r3, 1 | r3++;
0x00003dc4 b 0x3994 | goto label_8;
| label_35:
0x00003dc6 ldr r2, [pc, 0x184] |
0x00003dc8 addw r4, r7, 0x64c | __asm ("addw r4, r7, 0x64c");
0x00003dcc str r4, [sp, 0x14] | var_14h_2 = r4;
0x00003dce add.w r4, r7, 0x178 | r4 = r7 + 0x178;
0x00003dd2 adds r7, 0x78 | r7 += 0x78;
0x00003dd4 mov r1, r8 | r1 = r8;
0x00003dd6 add r2, pc | r2 = 0x7d28;
0x00003dd8 mov r0, r6 | r0 = r6;
0x00003dda strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00003dde mov.w r3, -1 | r3 = -1;
0x00003de2 movs r2, 1 | r2 = 1;
0x00003de4 str r4, [sp, 0x10] | var_10h = r4;
0x00003de6 str r7, [sp, 0xc] | var_ch = r7;
0x00003de8 blx 0x1ddc | r0 = fcn_00001ddc ();
0x00003dec mov r3, r0 | r3 = r0;
0x00003dee b 0x3994 | goto label_8;
| label_27:
0x00003df0 ldr r3, [pc, 0x15c] |
0x00003df2 add r3, pc | r3 = 0x7d46;
0x00003df4 b 0x38b2 | goto label_11;
| label_26:
0x00003df6 ldr.w ip, [pc, 0x15c] | ip = *(0x00003f54);
0x00003dfa add ip, pc |
0x00003dfc b 0x38a0 | goto label_12;
| label_25:
0x00003dfe ldr r5, [pc, 0x158] |
0x00003e00 add r5, pc | r5 = 0x7d5e;
0x00003e02 b 0x388c | goto label_13;
| label_28:
0x00003e04 blx 0x1cec | fcn_00001cec ();
0x00003e08 ldr r0, [pc, 0x330] | r0 = *(0x413c);
0x00003e0a movs r0, r0 |
0x00003e0c lsls r0, r5, 5 | r0 = r5 << 5;
0x00003e0e movs r0, r0 |
0x00003e10 ldr r0, [pc, 0x2d8] | r0 = *(0x40ec);
0x00003e12 movs r0, r0 |
0x00003e14 ldr r5, [pc, 0x2c0] | r5 = *(0x40d8);
0x00003e16 movs r0, r0 |
0x00003e18 movs r6, 0xec | r6 = 0xec;
0x00003e1a movs r0, r0 |
0x00003e1c ldr r5, [pc, 0x228] | r5 = *(0x4048);
0x00003e1e movs r0, r0 |
0x00003e20 ldr r5, [pc, 0x218] | r5 = *(0x403c);
0x00003e22 movs r0, r0 |
0x00003e24 movs r6, 0xdc | r6 = 0xdc;
0x00003e26 movs r0, r0 |
0x00003e28 lsls r4, r6, 5 | r4 = r6 << 5;
0x00003e2a movs r0, r0 |
0x00003e2c ldr r5, [pc, 0x18] | r5 = *(0x3e48);
0x00003e2e movs r0, r0 |
0x00003e30 movs r4, 0x46 | r4 = 0x46;
0x00003e32 movs r0, r0 |
0x00003e34 adds r2, r5, 3 | r2 = r5 + 3;
0x00003e36 movs r0, r0 |
0x00003e38 movs r2, 0xf0 | r2 = 0xf0;
0x00003e3a movs r0, r0 |
0x00003e3c movs r2, 0xf2 | r2 = 0xf2;
0x00003e3e movs r0, r0 |
0x00003e40 movs r3, 2 | r3 = 2;
0x00003e42 movs r0, r0 |
0x00003e44 movs r2, 0x9a | r2 = 0x9a;
0x00003e46 movs r0, r0 |
0x00003e48 movs r2, 0xce | r2 = 0xce;
0x00003e4a movs r0, r0 |
0x00003e4c movs r2, 0xba | r2 = 0xba;
0x00003e4e movs r0, r0 |
0x00003e50 movs r2, 0xa0 | r2 = 0xa0;
0x00003e52 movs r0, r0 |
0x00003e54 movs r2, 0x84 | r2 = 0x84;
0x00003e56 movs r0, r0 |
0x00003e58 movs r2, 0x68 | r2 = 0x68;
0x00003e5a movs r0, r0 |
0x00003e5c movs r2, 0x58 | r2 = 0x58;
0x00003e5e movs r0, r0 |
0x00003e60 movs r2, 0x4a | r2 = 0x4a;
0x00003e62 movs r0, r0 |
0x00003e64 adds r2, r5, 4 | r2 = r5 + 4;
0x00003e66 movs r0, r0 |
0x00003e68 movs r2, 0x1a | r2 = 0x1a;
0x00003e6a movs r0, r0 |
0x00003e6c ldr r3, [pc, 0xa0] | r3 = *(0x3f10);
0x00003e6e movs r0, r0 |
0x00003e70 movs r1, 0xf6 | r1 = 0xf6;
0x00003e72 movs r0, r0 |
0x00003e74 movs r1, 0xf8 | r1 = 0xf8;
0x00003e76 movs r0, r0 |
0x00003e78 subs r2, r2, 4 | r2 -= 4;
0x00003e7a movs r0, r0 |
0x00003e7c lsls r0, r0, 6 | r0 <<= 6;
0x00003e7e movs r0, r0 |
0x00003e80 asrs r4, r0, 0x10 | r4 = r0 >> 0x10;
0x00003e82 movs r0, r0 |
0x00003e84 movs r1, 0x38 | r1 = 0x38;
0x00003e86 movs r0, r0 |
0x00003e88 add lr, r8 | lr += r8;
0x00003e8a movs r0, r0 |
0x00003e8c adds r4, r5, r2 | r4 = r5 + r2;
0x00003e8e movs r0, r0 |
0x00003e90 subs r2, r3, 7 | r2 = r3 - 7;
0x00003e92 movs r0, r0 |
0x00003e94 subs r2, r1, 7 | r2 = r1 - 7;
0x00003e96 movs r0, r0 |
0x00003e98 subs r6, r7, r4 | r6 = r7 - r4;
0x00003e9a movs r0, r0 |
0x00003e9c subs r0, r2, 6 | r0 = r2 - 6;
0x00003e9e movs r0, r0 |
0x00003ea0 adds r0, r2, r5 | r0 = r2 + r5;
0x00003ea2 movs r0, r0 |
0x00003ea4 movs r0, 0x3c | r0 = 0x3c;
0x00003ea6 movs r0, r0 |
0x00003ea8 asrs r2, r7, 0xb | r2 = r7 >> 0xb;
0x00003eaa movs r0, r0 |
0x00003eac movs r0, 0x20 | r0 = 0x20;
0x00003eae movs r0, r0 |
0x00003eb0 subs r4, r6, 5 | r4 = r6 - 5;
0x00003eb2 movs r0, r0 |
0x00003eb4 subs r2, r3, 7 | r2 = r3 - 7;
0x00003eb6 movs r0, r0 |
0x00003eb8 subs r6, r2, 5 | r6 = r2 - 5;
0x00003eba movs r0, r0 |
0x00003ebc subs r4, r7, 6 | r4 = r7 - 6;
0x00003ebe movs r0, r0 |
0x00003ec0 subs r0, r4, 4 | r0 = r4 - 4;
0x00003ec2 movs r0, r0 |
0x00003ec4 asrs r2, r0, 0x1e | r2 = r0 >> 0x1e;
0x00003ec6 movs r0, r0 |
0x00003ec8 subs r4, r0, 4 | r4 = r0 - 4;
0x00003eca movs r0, r0 |
0x00003ecc subs r0, r5, 4 | r0 = r5 - 4;
0x00003ece movs r0, r0 |
0x00003ed0 ldr r0, [pc, 0xf8] | r0 = *(0x3fcc);
0x00003ed2 movs r0, r0 |
0x00003ed4 adds r2, r7, 3 | r2 = r7 + 3;
0x00003ed6 movs r0, r0 |
0x00003ed8 movs r1, 0x7c | r1 = 0x7c;
0x00003eda movs r0, r0 |
0x00003edc asrs r4, r5, 6 | r4 = r5 >> 6;
0x00003ede movs r0, r0 |
0x00003ee0 subs r6, r1, 1 | r6 = r1 - 1;
0x00003ee2 movs r0, r0 |
0x00003ee4 adds r4, r6, 2 | r4 = r6 + 2;
0x00003ee6 movs r0, r0 |
0x00003ee8 asrs r2, r4, 5 | r2 = r4 >> 5;
0x00003eea movs r0, r0 |
0x00003eec subs r4, r3, 2 | r4 = r3 - 2;
0x00003eee movs r0, r0 |
0x00003ef0 adds r0, r1, 7 | r0 = r1 + 7;
0x00003ef2 movs r0, r0 |
0x00003ef4 adds r2, r4, r5 | r2 = r4 + r5;
0x00003ef6 movs r0, r0 |
0x00003ef8 subs r4, r0, 1 | r4 = r0 - 1;
0x00003efa movs r0, r0 |
0x00003efc adds r2, r4, 7 | r2 = r4 + 7;
0x00003efe movs r0, r0 |
0x00003f00 adds r0, r1, 7 | r0 = r1 + 7;
0x00003f02 movs r0, r0 |
0x00003f04 subs r2, r4, r7 | r2 = r4 - r7;
0x00003f06 movs r0, r0 |
0x00003f08 movs r0, 0x64 | r0 = 0x64;
0x00003f0a movs r0, r0 |
0x00003f0c asrs r4, r3, 3 | r4 = r3 >> 3;
0x00003f0e movs r0, r0 |
0x00003f10 adds r4, r3, 6 | r4 = r3 + 6;
0x00003f12 movs r0, r0 |
0x00003f14 asrs r4, r1, 0x17 | r4 = r1 >> 0x17;
0x00003f16 movs r0, r0 |
0x00003f18 adds r2, r3, 5 | r2 = r3 + 5;
0x00003f1a movs r0, r0 |
0x00003f1c adds r0, r2, 5 | r0 = r2 + 5;
0x00003f1e movs r0, r0 |
0x00003f20 adds r0, r7, 4 | r0 = r7 + 4;
0x00003f22 movs r0, r0 |
0x00003f24 adds r4, r4, 5 | r4 += 5;
0x00003f26 movs r0, r0 |
0x00003f28 mov r2, pc | r2 = pc;
0x00003f2a movs r0, r0 |
0x00003f2c adds r6, r0, 5 | r6 = r0 + 5;
0x00003f2e movs r0, r0 |
0x00003f30 asrs r2, r5, 0x15 | r2 = r5 >> 0x15;
0x00003f32 movs r0, r0 |
0x00003f34 asrs r4, r2, 0x15 | r4 = r2 >> 0x15;
0x00003f36 movs r0, r0 |
0x00003f38 adds r6, r5, 3 | r6 = r5 + 3;
0x00003f3a movs r0, r0 |
0x00003f3c adds r4, r2, 3 | r4 = r2 + 3;
0x00003f3e movs r0, r0 |
0x00003f40 adds r2, r7, 3 | r2 = r7 + 3;
0x00003f42 movs r0, r0 |
0x00003f44 mov r0, r2 | r0 = r2;
0x00003f46 movs r0, r0 |
0x00003f48 adds r2, r5, 5 | r2 = r5 + 5;
0x00003f4a movs r0, r0 |
0x00003f4c adds r2, r7, 4 | r2 = r7 + 4;
0x00003f4e movs r0, r0 |
0x00003f50 subs r6, r5, r6 | r6 = r5 - r6;
0x00003f52 movs r0, r0 |
0x00003f54 subs r6, r4, r6 | r6 = r4 - r6;
0x00003f56 movs r0, r0 |
0x00003f58 subs r0, r4, r6 | r0 = r4 - r6;
0x00003f5a movs r0, r0 |
| }
[*] Function printf used 67 times loggen