[*] Binary protection state of riod
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of riod
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/riod @ 0x827c */
| #include <stdint.h>
|
; (fcn) fcn.0000827c () | void fcn_0000827c (int16_t arg_4h, int16_t arg_ch, int16_t arg_10h, uint32_t arg1) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_34h;
| int16_t var_38h;
| int32_t var_0h_2;
| int32_t var_8h;
| int16_t var_44h;
| int32_t var_0h_3;
| int32_t var_8h_2;
| int16_t var_50h;
| int32_t var_30h;
| int32_t var_38h_2;
| int16_t var_10ch;
| int16_t var_1c8h;
| int32_t var_1c8h_2;
| int16_t var_284h;
| int16_t var_28ch;
| r0 = arg1;
0x0000827c ldr.w r2, [pc, 0x5d8] | r2 = *(0x00008858);
0x00008280 ldr.w r3, [pc, 0x5d8] |
0x00008284 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00008288 sub.w sp, sp, 0x28c |
0x0000828c add r2, pc | r2 += pc;
0x0000828e ldr.w r6, [pc, 0x5d0] | r6 = *(0x00008860);
0x00008290 str r0, [r2, 0x5c] | *((r2 + 0x5c)) = r0;
0x00008292 mov fp, r0 |
0x00008294 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00008296 add r6, pc | r6 += pc;
0x00008298 ldr r3, [r3] | r3 = *(0x885c);
0x0000829a str r3, [sp, 0x284] | var_284h = r3;
0x0000829c mov.w r3, 0 | r3 = 0;
0x000082a0 cmp r0, 0 |
| if (r0 == 0) {
0x000082a2 beq.w 0x8674 | goto label_8;
| }
| label_2:
0x000082a6 add r5, sp, 0x50 | r5 += var_50h;
0x000082a8 movs r7, 0 | r7 = 0;
0x000082aa mov r0, r5 | r0 = r5;
0x000082ac add r4, sp, 0x38 | r4 += var_38h;
0x000082ae blx 0x46bc | apireq_init ();
0x000082b2 ldr.w r2, [pc, 0x5b0] | r2 = *(0x8866);
0x000082b6 add r1, sp, 0x1c8 | r1 += var_1c8h;
0x000082b8 ldr.w r3, [pc, 0x5ac] | r3 = *(0x8868);
0x000082bc mov r0, r5 | r0 = r5;
0x000082be str r1, [sp, 0x14] | var_14h = r1;
0x000082c0 strd r7, r7, [r4] | __asm ("strd r7, r7, [r4]");
0x000082c4 str r7, [r4, 8] | var_8h = r7;
0x000082c6 strd r7, r7, [sp, 0x1c8] | __asm ("strd r7, r7, [var_1c8h]");
0x000082ca ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000082cc ldr r6, [r6, r2] | r6 = *((r6 + r2));
0x000082ce mov r2, r1 | r2 = r1;
0x000082d0 mov r1, r7 | r1 = r7;
0x000082d2 strd r4, r6, [sp] | __asm ("strd r4, r6, [sp]");
0x000082d6 blx 0x4ac8 | fcn_00004ac8 ();
0x000082da ldr.w r8, [r5, 0x30] | r8 = var_30h;
0x000082de cmp.w r8, 0 |
| if (r8 != 0) {
0x000082e2 bne.w 0x87f2 | goto label_9;
| }
0x000082e6 add r3, sp, 0x10c | r3 += var_10ch;
0x000082e8 mov r0, r3 | r0 = r3;
0x000082ea mov r7, r3 | r7 = r3;
0x000082ec str r3, [sp, 0x10] | var_10h = r3;
0x000082ee blx 0x46bc | apireq_init ();
0x000082f2 ldr r3, [r4, 4] | r3 = var_0h_2;
0x000082f4 cmp r3, 0 |
| if (r3 > 0) {
0x000082f6 ble.w 0x843a |
0x000082fa ldr.w r2, [pc, 0x570] |
0x000082fe mov r1, r4 | r1 = r4;
0x00008300 ldr.w r3, [pc, 0x56c] |
0x00008304 mov r0, r5 | r0 = r5;
0x00008306 add r2, pc |
0x00008308 add r3, pc | r3 = 0x10b7c;
0x0000830a bl 0x8154 | r0 = fcn_00008154 (r0, r1, r2, r3);
0x0000830e blx 0x4f80 | g_source_set_callback ();
0x00008310 mrc p8, 1, apsr_nzcv, c8, c15, 6 | __asm ("mrc p8, 1, apsr_nzcv, c8, c15, 6");
0x00008314 movs r5, 0x60 | r5 = 0x60;
0x00008316 mov r3, r0 | r3 = r0;
0x00008318 mov r1, r4 | r1 = r4;
0x0000831a mov r0, r5 | r0 = r5;
0x0000831c add r2, pc | r2 = 0x18e98;
0x0000831e bl 0x8154 | fcn_00008154 (r0, r1, r2, r3);
0x00008322 mov r0, r7 | r0 = r7;
0x00008324 mov r2, r6 | r2 = r6;
0x00008326 mov r1, r4 | r1 = r4;
0x00008328 bl 0x9d58 | r0 = fcn_00009d58 (r0);
0x0000832c mov r7, r0 | r7 = r0;
0x0000832e cmp r0, 0 |
| if (r0 != 0) {
0x00008330 bne.w 0x868c | goto label_10;
| }
0x00008334 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00008336 ldr.w r0, [fp, 0xc] | r0 = *(arg_ch);
0x0000833a ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x0000833c str r3, [sp, 0xc] | var_ch = r3;
0x0000833e blx 0x506c | fcn_0000506c ();
0x00008342 blx 0x4a40 | g_variant_builder_unref ();
0x00008346 blx 0x4a1c | g_strchomp ();
0x0000834a ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x0000834e mov r8, r0 | r8 = r0;
| if (r3 != 0) {
0x00008350 cbz r3, 0x8360 |
0x00008352 ldr.w sl, [pc, 0x524] |
0x00008356 add sl, pc | sl = 0x10bd4;
0x00008358 mov r1, sl | r1 = sl;
0x0000835a blx 0x5268 | r0 = fcn_00005268 ();
| if (r0 != 0) {
0x0000835e cbnz r0, 0x83b0 | goto label_11;
| }
| }
0x00008360 ldr.w r3, [pc, 0x518] |
0x00008364 movs r0, 0 | r0 = 0;
0x00008366 ldr.w r2, [pc, 0x518] |
0x0000836a movs r1, 0x10 | r1 = 0x10;
0x0000836c add r3, pc | r3 = 0x10bec;
0x0000836e add r2, pc | r2 = 0x10bf4;
0x00008370 blx 0x4868 | fcn_00004868 ();
0x00008374 mov.w r3, -1 | r3 = -1;
0x00008378 mov r0, r8 | r0 = r8;
0x0000837a str r3, [sp, 0xc] | var_ch = r3;
0x0000837c blx 0x4d6c | fcn_00004d6c ();
| label_1:
0x00008380 ldr r0, [sp, 0x10] | r0 = var_10h;
0x00008382 blx 0x48b4 | g_variant_new_tuple ();
| label_6:
0x00008386 mov r0, r5 | r0 = r5;
0x00008388 blx 0x48b4 | g_variant_new_tuple ();
0x0000838c ldr.w r2, [pc, 0x4f4] | r2 = *(0x00008884);
0x00008390 ldr.w r3, [pc, 0x4c8] | r3 = *(0x885c);
0x00008394 add r2, pc | r2 += pc;
0x00008396 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00008398 ldr r2, [r3] | r2 = *(0x885c);
0x0000839a ldr r3, [sp, 0x284] | r3 = var_284h;
0x0000839c eors r2, r3 | r2 ^= r3;
0x0000839e mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000083a2 bne.w 0x8854 | goto label_12;
| }
0x000083a6 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000083a8 add.w sp, sp, 0x28c |
0x000083ac pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x000083b0 ldr.w r0, [fp, 0xc] | r0 = *(arg_ch);
0x000083b4 bl 0xbdc4 | fcn_0000bdc4 (r0);
0x000083b8 ldr.w r2, [pc, 0x4cc] |
0x000083bc mov r1, r0 | r1 = r0;
0x000083be mov sb, r0 | sb = r0;
0x000083c0 ldr.w r0, [pc, 0x4c8] |
0x000083c4 mov r3, r7 | r3 = r7;
0x000083c6 add r2, pc | r2 = 0x10c52;
0x000083c8 add r0, pc | r0 = 0x10c58;
0x000083ca blx 0x4eb0 | fcn_00004eb0 ();
0x000083ce ldr.w r2, [pc, 0x4c0] |
0x000083d2 str r7, [sp, 4] | var_4h = r7;
0x000083d4 mov r7, r0 | r7 = r0;
0x000083d6 ldr.w r1, [pc, 0x4bc] |
0x000083da add r2, pc |
0x000083dc ldr.w r0, [pc, 0x4b8] |
0x000083e0 str r2, [sp] | *(sp) = r2;
0x000083e2 ldr.w r2, [pc, 0x4b8] | r2 = fcn.00006d40;
0x000083e6 add r1, pc | r1 = 0x10c80;
0x000083e8 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000083ea add r0, pc | r0 = 0x10c86;
0x000083ec add r2, pc | r2 = 0x19060;
0x000083ee blx 0x4eb0 | fcn_00004eb0 ();
0x000083f2 ldrd r1, r2, [fp, 0x10] | __asm ("ldrd r1, r2, [arg_10h]");
0x000083f6 mov r3, r0 | r3 = r0;
0x000083f8 str r0, [sp, 0xc] | var_ch = r0;
0x000083fa mov r0, r7 | r0 = r7;
0x000083fc bl 0x9660 | fcn_00009660 (r0, r1, r2);
0x00008400 ldr.w r1, [fp, 4] | r1 = *(arg_4h);
0x00008404 str r0, [sp, 0x1c8] | var_1c8h = r0;
0x00008406 bl 0xbdd8 | r0 = fcn_0000bdd8 (r0, r1);
0x0000840a cmp r0, 0 |
| if (r0 == 0) {
0x0000840c beq.w 0x876e | goto label_13;
| }
0x00008410 ldr r3, [sp, 0x1c8] | r3 = var_1c8h;
| if (r3 != 0) {
0x00008412 cbz r3, 0x841a |
0x00008414 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00008416 bl 0x95f8 | fcn_000095f8 (r0);
| }
0x0000841a mov r0, sb | r0 = sb;
0x0000841c blx 0x4d6c | fcn_00004d6c ();
0x00008420 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00008422 blx 0x4d6c | fcn_00004d6c ();
0x00008426 mov r0, r7 | r0 = r7;
0x00008428 blx 0x4d6c | fcn_00004d6c ();
0x0000842c mov r0, r8 | r0 = r8;
0x0000842e blx 0x4d6c | fcn_00004d6c ();
0x00008432 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x00008436 bl 0xac3c | fcn_0000ac3c (r0);
| }
0x0000843a ldr.w r0, [fp, 0xc] | r0 = *(arg_ch);
0x0000843e blx 0x506c | fcn_0000506c ();
0x00008442 blx 0x4a40 | g_variant_builder_unref ();
0x00008446 blx 0x4a1c | g_strchomp ();
0x0000844a ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x0000844e mov r7, r0 | r7 = r0;
0x00008450 cmp r3, 0 |
| if (r3 == 0) {
0x00008452 beq.w 0x8646 | goto label_14;
| }
0x00008456 ldr.w r8, [pc, 0x448] |
0x0000845a add r8, pc | r8 = 0x10d00;
0x0000845c mov r1, r8 | r1 = r8;
0x0000845e blx 0x5268 | r0 = fcn_00005268 ();
0x00008462 cmp r0, 0 |
| if (r0 == 0) {
0x00008464 beq.w 0x8646 | goto label_14;
| }
0x00008468 ldr.w r0, [fp, 0xc] | r0 = *(arg_ch);
0x0000846c bl 0xbdc4 | fcn_0000bdc4 (r0);
0x00008470 ldr.w r2, [pc, 0x430] |
0x00008474 mov r1, r0 | r1 = r0;
0x00008476 mov sl, r0 | sl = r0;
0x00008478 ldr.w r0, [pc, 0x42c] |
0x0000847c movs r3, 0 | r3 = 0;
0x0000847e add r2, pc | r2 = 0x10d26;
0x00008480 add r0, pc | r0 = 0x10d2c;
0x00008482 blx 0x4eb0 | fcn_00004eb0 ();
0x00008486 ldr.w r2, [pc, 0x424] |
0x00008488 movs r4, 0x24 | r4 = 0x24;
0x0000848a mov sb, r0 | sb = r0;
0x0000848c ldr.w r1, [pc, 0x420] |
0x00008490 movs r3, 0 | r3 = 0;
0x00008492 ldr.w r0, [pc, 0x420] |
0x00008496 add r2, pc | r2 = 0x10d48;
0x00008498 add r1, pc | r1 = 0x10d4c;
0x0000849a add r0, pc | r0 = 0x10d54;
0x0000849c blx 0x4eb0 | fcn_00004eb0 ();
0x000084a0 ldrd r1, r2, [fp, 0x10] | __asm ("ldrd r1, r2, [arg_10h]");
0x000084a2 asrs r4, r0, 8 | r4 = r0 >> 8;
0x000084a4 mov r3, r0 | r3 = r0;
0x000084a6 str r0, [sp, 0xc] | var_ch = r0;
0x000084a8 mov r0, sb | r0 = sb;
0x000084aa bl 0x9660 | fcn_00009660 (r0, r1, r2);
0x000084ae ldr.w r1, [fp, 4] | r1 = *(arg_4h);
0x000084b2 str r0, [sp, 0x1c8] | var_1c8h = r0;
0x000084b4 bl 0xbdd8 | r0 = fcn_0000bdd8 (r0, r1);
0x000084b6 ldc2 p8, c2, [r0], {0} | __asm ("ldc2 p8, c2, [r0], {0}");
0x000084b8 cmp r0, 0 |
| if (r0 == 0) {
0x000084ba beq.w 0x86a4 | goto label_15;
| }
0x000084be ldr r3, [sp, 0x1c8] | r3 = var_1c8h;
0x000084c0 ldrd r0, r1, [r3, 4] | __asm ("ldrd r0, r1, [r3, 4]");
0x000084c4 blx 0x4760 | fcn_00004760 ();
0x000084c8 ldr r3, [sp, 0x1c8] | r3 = var_1c8h;
0x000084ca str r0, [sp, 0x1c] | var_1ch = r0;
0x000084cc cmp r3, 0 |
| if (r3 != 0) {
0x000084ce bne.w 0x87ea | goto label_16;
| }
| label_5:
0x000084d2 mov r0, sl | r0 = sl;
0x000084d4 blx 0x4d6c | fcn_00004d6c ();
0x000084d8 mov r0, sb | r0 = sb;
0x000084da blx 0x4d6c | fcn_00004d6c ();
0x000084de ldr r0, [sp, 0xc] | r0 = var_ch;
0x000084e0 blx 0x4d6c | fcn_00004d6c ();
0x000084e4 mov r0, r7 | r0 = r7;
0x000084e6 movs r7, 0 | r7 = 0;
0x000084e8 blx 0x4d6c | fcn_00004d6c ();
0x000084ec ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x000084f0 bl 0xac3c | fcn_0000ac3c (r0);
0x000084f4 ldr.w r8, [sp, 0x14] | r8 = var_14h;
0x000084f8 mov r0, r8 | r0 = r8;
0x000084fa blx 0x46bc | apireq_init ();
0x000084fe mov r3, r6 | r3 = r6;
0x00008500 add r6, sp, 0x44 | r6 += var_44h;
0x00008502 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00008504 mov r2, r6 | r2 = r6;
0x00008506 mov r0, r8 | r0 = r8;
0x00008508 strd r7, r7, [r6] | __asm ("strd r7, r7, [r6]");
0x0000850c str r7, [r6, 8] | var_8h_2 = r7;
0x0000850e bl 0x9d40 | fcn_00009d40 (r0);
0x00008512 str r0, [sp, 0xc] | var_ch = r0;
0x00008514 cmp r0, 0 |
| if (r0 != 0) {
0x00008516 bne.w 0x8724 | goto label_17;
| }
0x0000851a ldr r0, [pc, 0x39c] |
0x0000851c add r0, pc | r0 = 0x10dda;
0x0000851e blx 0x479c | fcn_0000479c ();
0x00008522 ldr r3, [r6, 4] | r3 = var_0h_3;
0x00008524 str r0, [sp, 0x20] | var_20h = r0;
0x00008526 cmp r3, 0 |
| if (r3 <= 0) {
0x00008528 ble.w 0x8634 | goto label_18;
| }
0x0000852c ldr r3, [pc, 0x38c] |
0x0000852e str r5, [sp, 0x2c] | var_2ch = r5;
0x00008530 add r3, pc | r3 = 0x10df0;
0x00008532 str r3, [sp, 0x24] | var_24h = r3;
0x00008534 ldr r3, [pc, 0x388] |
0x00008536 add r3, pc | r3 = 0x10dfa;
0x00008538 str r3, [sp, 0x28] | var_28h = r3;
0x0000853a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000853c mov r7, r3 | r7 = r3;
0x0000853e mov sb, r3 | sb = r3;
0x00008540 str r3, [sp, 0x18] | var_18h = r3;
| label_0:
0x00008542 ldr r3, [r6, 8] | r3 = var_8h_2;
0x00008544 add r3, r7 | r3 += r7;
0x00008546 ldr.w sl, [r3, 0x18] | sl = *((r3 + 0x18));
0x0000854a add.w r8, sl, -1 | r8 = sl + -1;
0x0000854e add.w r8, r8, r8, lsl 1 | r8 += (r8 << 1);
0x00008552 lsl.w r8, r8, 2 | r8 <<= 2;
0x00008556 b 0x857e |
| while (sl > 0) {
0x00008558 ldr r3, [r6, 8] | r3 = var_8h_2;
0x0000855a add.w sl, sl, -1 | sl += -1;
0x0000855e add r3, r7 | r3 += r7;
0x00008560 ldr r3, [r3, 0x1c] | r3 = *((r3 + 0x1c));
0x00008562 add r3, r8 | r3 += r8;
0x00008564 sub.w r8, r8, 0xc | r8 -= 0xc;
0x00008568 ldr r5, [r3, 8] | r5 = *((r3 + 8));
0x0000856a blx 0x4f80 | r0 = g_source_set_callback ();
0x0000856e mov r1, r0 | r1 = r0;
0x00008570 mov r0, r5 | r0 = r5;
0x00008572 blx 0x5268 | r0 = fcn_00005268 ();
0x00008576 mov r5, r0 | r5 = r0;
0x00008578 cmp r0, 0 |
| if (r0 == 0) {
0x0000857a beq.w 0x86d4 | goto label_19;
| }
0x0000857e cmp.w sl, 0 |
0x00008582 bgt 0x8558 |
| }
| label_3:
0x00008584 ldr r3, [r6, 4] | r3 = var_0h_3;
0x00008586 add.w sb, sb, 1 | sb++;
0x0000858a adds r7, 0x28 | r7 += 0x28;
0x0000858c cmp sb, r3 |
| if (sb < r3) {
0x0000858e blt 0x8542 | goto label_0;
| }
0x00008590 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00008592 ldr r5, [sp, 0x2c] | r5 = var_2ch;
0x00008594 cmp r3, 0 |
| if (r3 != 0) {
0x00008596 beq 0x8634 |
0x00008598 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000859a ldr.w r0, [fp, 0xc] | r0 = *(arg_ch);
0x0000859c movs r4, r1 | r4 = r1;
0x0000859e ldr r6, [r3] | r6 = *(r3);
0x000085a0 blx 0x506c | fcn_0000506c ();
0x000085a4 blx 0x4a40 | g_variant_builder_unref ();
0x000085a8 blx 0x4a1c | g_strchomp ();
0x000085ac ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x000085b0 mov r4, r0 | r4 = r0;
0x000085b2 cmp r3, 0 |
| if (r3 == 0) {
0x000085b4 beq.w 0x87a4 | goto label_20;
| }
0x000085b8 ldr.w sb, [pc, 0x308] |
0x000085bc add sb, pc | sb = "axhbt:Heartbeat";
0x000085be mov r1, sb | r1 = sb;
0x000085c0 blx 0x5268 | r0 = fcn_00005268 ();
0x000085c4 cmp r0, 0 |
| if (r0 == 0) {
0x000085c6 beq.w 0x87a4 | goto label_20;
| }
0x000085ca ldr r2, [pc, 0x2fc] |
0x000085cc movs r3, 0 | r3 = 0;
0x000085ce ldr r0, [pc, 0x2fc] |
0x000085d0 add r7, sp, 0x34 | r7 += var_34h;
0x000085d2 ldr.w r1, [fp, 0xc] | r1 = *(arg_ch);
0x000085d6 add r2, pc | r2 = 0x10ea4;
0x000085d8 add r0, pc | r0 = 0x10eaa;
0x000085da blx 0x4eb0 | fcn_00004eb0 ();
0x000085de ldr r2, [pc, 0x2f0] |
0x000085e0 mov r8, r0 | r8 = r0;
0x000085e2 ldr r1, [pc, 0x2f0] |
0x000085e4 mov r3, r6 | r3 = r6;
0x000085e6 ldr r0, [pc, 0x2f0] |
0x000085e8 add r2, pc | r2 = 0x10ebe;
0x000085ea str r2, [sp] | *(sp) = r2;
0x000085ec movs r2, 0 | r2 = 0;
0x000085ee str r2, [sp, 4] | var_4h = r2;
0x000085f0 add r1, pc | r1 = 0x10eca;
0x000085f2 ldr r2, [pc, 0x2e8] |
0x000085f4 add r0, pc | r0 = 0x10ed2;
0x000085f6 add r2, pc | r2 = 0x10ed8;
0x000085f8 blx 0x4eb0 | fcn_00004eb0 ();
0x000085fc ldrd r1, r2, [fp, 0x10] | __asm ("ldrd r1, r2, [arg_10h]");
0x00008600 mov r3, r0 | r3 = r0;
0x00008602 mov r6, r0 | r6 = r0;
0x00008604 mov r0, r8 | r0 = r8;
0x00008606 bl 0x9660 | fcn_00009660 (r0, r1, r2);
0x00008608 invalid |
0x0000860c asrs r4, r0, 0x20 | r4 = r0 >> 0x20;
0x0000860e str r0, [r7] | *(r7) = r0;
0x00008610 bl 0xbdd8 | r0 = fcn_0000bdd8 (r0, r1);
0x00008614 cmp r0, 0 |
| if (r0 == 0) {
0x00008616 beq.w 0x8822 | goto label_21;
| }
0x0000861a ldr r3, [r7] | r3 = *(r7);
0x0000861c cmp r3, 0 |
| if (r3 != 0) {
0x0000861e bne.w 0x884c | goto label_22;
| }
| label_7:
0x00008622 mov r0, r6 | r0 = r6;
0x00008624 blx 0x4d6c | fcn_00004d6c ();
0x00008628 mov r0, r8 | r0 = r8;
0x0000862a blx 0x4d6c | r0 = fcn_00004d6c ();
0x0000862c sub.w r6, r0, r0, asr 16 | r6 = r0 - (r0 >> 16);
0x00008630 blx 0x4d6c | fcn_00004d6c ();
| }
| label_18:
0x00008634 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00008636 movs r1, 1 | r1 = 1;
0x00008638 blx 0x4f10 | fcn_00004f10 ();
0x0000863c ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x0000863e movs r4, r0 | r4 = r0;
0x00008640 bl 0xac3c | fcn_0000ac3c (r0);
0x00008644 b 0x873a | goto label_4;
| label_14:
0x00008646 ldr r3, [pc, 0x298] |
0x00008648 movs r0, 0 | r0 = 0;
0x0000864a ldr r2, [pc, 0x298] |
0x0000864c movs r1, 0x10 | r1 = 0x10;
0x0000864e add r3, pc | r3 = 0x10f34;
0x00008650 add r2, pc | r2 = 0x10f3a;
0x00008652 blx 0x4868 | fcn_00004868 ();
0x00008656 mov r0, r7 | r0 = r7;
0x00008658 blx 0x4d6c | fcn_00004d6c ();
| do {
0x0000865c ldr r3, [pc, 0x288] |
0x0000865e movs r1, 0x10 | r1 = 0x10;
0x00008660 ldr r2, [pc, 0x288] |
0x00008662 movs r0, 0 | r0 = 0;
0x00008664 add r3, pc | r3 = 0x10f50;
0x00008666 add r2, pc | r2 = 0x10f56;
0x00008668 blx 0x4868 | fcn_00004868 ();
0x0000866c mov.w r3, -1 | r3 = -1;
0x00008670 str r3, [sp, 0xc] | var_ch = r3;
0x00008672 b 0x8380 | goto label_1;
| label_8:
0x00008674 ldr r3, [pc, 0x278] |
0x00008676 ldr r2, [pc, 0x27c] |
0x00008678 ldr r1, [pc, 0x27c] |
0x0000867a add r3, pc | r3 = 0x10f6e;
0x0000867c add r2, pc | r2 = 0x10f76;
0x0000867e adds r3, 0x18 | r3 += 0x18;
0x00008680 str r2, [sp] | *(sp) = r2;
0x00008682 add r1, pc | r1 = 0x10f7e;
0x00008684 movs r2, 0x7a | r2 = 0x7a;
0x00008686 blx 0x4dac | g_variant_type_free ();
0x0000868a b 0x82a6 | goto label_2;
| label_10:
0x0000868c ldr r3, [pc, 0x26c] |
0x0000868e mov r0, r8 | r0 = r8;
0x00008690 ldr r2, [pc, 0x26c] |
0x00008692 movs r1, 0x10 | r1 = 0x10;
0x00008694 add r3, pc | r3 = 0x10f94;
0x00008696 add r2, pc | r2 = 0x10f9a;
0x00008698 blx 0x4868 | fcn_00004868 ();
0x0000869c mov.w r3, -1 | r3 = -1;
0x000086a0 str r3, [sp, 0xc] | var_ch = r3;
0x000086a2 b 0x8380 | goto label_1;
| label_15:
0x000086a4 ldr r2, [pc, 0x25c] |
0x000086a6 mov r3, r8 | r3 = r8;
0x000086a8 movs r1, 0x10 | r1 = 0x10;
0x000086aa add r2, pc | r2 = 0x10fb2;
0x000086ac blx 0x4868 | fcn_00004868 ();
0x000086b0 ldr r3, [sp, 0x1c8] | r3 = var_1c8h;
| if (r3 != 0) {
0x000086b2 cbz r3, 0x86ba |
0x000086b4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x000086b6 bl 0x95f8 | fcn_000095f8 (r0);
| }
0x000086ba mov r0, sl | r0 = sl;
0x000086bc blx 0x4d6c | fcn_00004d6c ();
0x000086c0 mov r0, sb | r0 = sb;
0x000086c2 blx 0x4d6c | fcn_00004d6c ();
0x000086c6 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000086c8 blx 0x4d6c | fcn_00004d6c ();
0x000086cc mov r0, r7 | r0 = r7;
0x000086ce blx 0x4d6c | fcn_00004d6c ();
0x000086d2 b 0x865c |
| } while (1);
| label_19:
0x000086d4 ldr r2, [r6, 8] | r2 = var_8h_2;
0x000086d6 adds.w r8, r2, r7 | r8 = r2 + r7;
| if (r8 == r2) {
0x000086da beq 0x8748 | goto label_23;
| }
0x000086dc ldr r1, [r4, 4] | r1 = var_0h_2;
0x000086de cmp r1, 0 |
0x000086e0 it gt |
| if (r1 <= 0) {
0x000086e2 movgt sl, r0 | sl = r0;
| }
| if (r1 > 0) {
0x000086e4 bgt 0x86f4 | goto label_24;
| }
0x000086e6 b 0x870a | goto label_25;
| do {
0x000086e8 ldr r3, [r4, 4] | r3 = var_0h_2;
0x000086ea adds r5, 1 | r5++;
0x000086ec add.w sl, sl, 0x28 | sl += 0x28;
0x000086f0 cmp r5, r3 |
| if (r5 >= r3) {
0x000086f2 bge 0x8708 | goto label_26;
| }
| label_24:
0x000086f4 ldr r3, [r4, 8] | r3 = var_8h;
0x000086f6 ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
0x000086fa add r3, sl | r3 += sl;
0x000086fc ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x000086fe blx 0x5268 | fcn_00005268 ();
0x00008700 ldc p8, c2, [r4, 0]! | __asm ("ldc p8, c2, [r4, 0]!");
0x00008704 bne 0x86e8 |
| } while (r5 != r3);
0x00008706 b 0x8584 | goto label_3;
| label_26:
0x00008708 ldr r2, [r6, 8] | r2 = var_8h_2;
| label_25:
0x0000870a ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 != 0) {
0x0000870c cbnz r3, 0x8760 | goto label_27;
| }
0x0000870e ldr r3, [r6, 8] | r3 = var_8h_2;
0x00008710 ldr r1, [sp, 0x28] | r1 = var_28h;
0x00008712 ldr r0, [sp, 0x20] | r0 = var_20h;
0x00008714 add r3, r7 | r3 += r7;
0x00008716 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00008718 blx 0x51c8 | fcn_000051c8 ();
| do {
0x0000871c ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000871e adds r3, 1 | r3++;
0x00008720 str r3, [sp, 0x18] | var_18h = r3;
0x00008722 b 0x8584 | goto label_3;
| label_17:
0x00008724 ldr r3, [pc, 0x1e0] |
0x00008726 mov r0, r7 | r0 = r7;
0x00008728 ldr r2, [pc, 0x1e0] |
0x0000872a movs r1, 0x10 | r1 = 0x10;
0x0000872c add r3, pc | r3 = 0x11038;
0x0000872e add r2, pc | r2 = 0x1103e;
0x00008730 blx 0x4868 | fcn_00004868 ();
0x00008734 mov.w r3, -1 | r3 = -1;
0x00008738 str r3, [sp, 0xc] | var_ch = r3;
| label_4:
0x0000873a ldr r0, [sp, 0x14] | r0 = var_14h;
0x0000873c blx 0x48b4 | g_variant_new_tuple ();
0x00008740 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00008742 blx 0x4d6c | fcn_00004d6c ();
0x00008746 b 0x8380 | goto label_1;
| label_23:
0x00008748 ldr r3, [pc, 0x1c4] |
0x0000874a mov.w r2, 0x1e6 | r2 = 0x1e6;
0x0000874e ldr r4, [pc, 0x1c4] |
0x00008750 ldr r1, [pc, 0x1c4] |
0x00008752 add r3, pc | r3 = 0x11066;
0x00008754 add r4, pc | r4 = 0x1106e;
0x00008756 adds r3, 0x2c | r3 += 0x2c;
0x00008758 add r1, pc | r1 = 0x11074;
0x0000875a str r4, [sp] | *(sp) = r4;
0x0000875c blx 0x5150 | fcn_00005150 ();
| label_27:
0x00008760 add r2, r7 | r2 += r7;
0x00008762 ldrd r0, r1, [sp, 0x20] | __asm ("ldrd r0, r1, [var_20h]");
0x00008766 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00008768 blx 0x51c8 | fcn_000051c8 ();
0x0000876c b 0x871c |
| } while (1);
| label_13:
0x0000876e ldr r2, [pc, 0x1ac] |
0x00008770 mov r3, sl | r3 = sl;
0x00008772 movs r1, 0x10 | r1 = 0x10;
0x00008774 add r2, pc | r2 = 0x11096;
0x00008776 blx 0x4868 | fcn_00004868 ();
0x0000877a ldr r3, [sp, 0x1c8] | r3 = var_1c8h;
| if (r3 != 0) {
0x0000877c cbz r3, 0x8784 |
0x0000877e ldr r0, [sp, 0x14] | r0 = var_14h;
0x00008780 bl 0x95f8 | fcn_000095f8 (r0);
| }
0x00008784 mov r0, sb | r0 = sb;
0x00008786 blx 0x4d6c | fcn_00004d6c ();
0x0000878a ldr r0, [sp, 0xc] | r0 = var_ch;
0x0000878c blx 0x4d6c | fcn_00004d6c ();
0x00008790 mov r0, r7 | r0 = r7;
0x00008792 blx 0x4d6c | fcn_00004d6c ();
0x00008796 mov.w r3, -1 | r3 = -1;
0x0000879a mov r0, r8 | r0 = r8;
0x0000879c str r3, [sp, 0xc] | var_ch = r3;
0x0000879e blx 0x4d6c | fcn_00004d6c ();
0x000087a2 b 0x8380 | goto label_1;
| label_20:
0x000087a4 ldr r3, [pc, 0x178] |
0x000087a6 movs r0, 0 | r0 = 0;
0x000087a8 ldr r2, [pc, 0x178] |
0x000087aa movs r1, 0x10 | r1 = 0x10;
0x000087ac add r3, pc | r3 = 0x110d0;
0x000087ae add r2, pc | r2 = 0x110d6;
0x000087b0 blx 0x4868 | fcn_00004868 ();
0x000087b4 mov r0, r4 | r0 = r4;
0x000087b6 blx 0x4d6c | fcn_00004d6c ();
| do {
0x000087ba ldr r4, [pc, 0x16c] |
0x000087bc mov.w r3, -1 | r3 = -1;
0x000087c0 ldr r2, [pc, 0x168] |
0x000087c2 movs r1, 0x10 | r1 = 0x10;
0x000087c4 str r3, [sp, 0xc] | var_ch = r3;
0x000087c6 movs r0, 0 | r0 = 0;
0x000087c8 add r4, pc | r4 = 0x110f6;
0x000087ca mov r3, r4 | r3 = r4;
0x000087cc add r2, pc | r2 = 0x110fc;
0x000087ce blx 0x4868 | fcn_00004868 ();
0x000087d2 ldr r0, [sp, 0x20] | r0 = var_20h;
0x000087d4 movs r1, 1 | r1 = 1;
0x000087d6 blx 0x4f10 | fcn_00004f10 ();
0x000087da ldr r2, [pc, 0x154] |
0x000087dc mov r3, r4 | r3 = r4;
0x000087de movs r1, 0x10 | r1 = 0x10;
0x000087e0 movs r0, 0 | r0 = 0;
0x000087e2 add r2, pc | r2 = 0x11118;
0x000087e4 blx 0x4868 | fcn_00004868 ();
0x000087e8 b 0x873a | goto label_4;
| label_16:
0x000087ea ldr r0, [sp, 0x14] | r0 = var_14h;
0x000087ec bl 0x95f8 | fcn_000095f8 (r0);
0x000087f0 b 0x84d2 | goto label_5;
| label_9:
0x000087f2 ldr r2, [r5, 0x38] | r2 = var_38h_2;
0x000087f4 movs r1, 0x10 | r1 = 0x10;
0x000087f6 ldr r4, [pc, 0x13c] |
0x000087f8 mov r0, r7 | r0 = r7;
0x000087fa str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000087fc strh r0, [r0] | *(r0) = r0;
0x000087fe str r2, [sp, 4] | var_4h = r2;
0x00008800 ldr r2, [pc, 0x134] |
0x00008802 add r4, pc | r4 = 0x1113c;
0x00008804 mov r3, r4 | r3 = r4;
0x00008806 add r2, pc | r2 = 0x11142;
0x00008808 blx 0x4868 | fcn_00004868 ();
0x0000880c ldr r2, [pc, 0x12c] |
0x0000880e mov r3, r4 | r3 = r4;
0x00008810 movs r1, 0x10 | r1 = 0x10;
0x00008812 mov r0, r7 | r0 = r7;
0x00008814 add r2, pc | r2 = 0x11154;
0x00008816 blx 0x4868 | fcn_00004868 ();
0x0000881a mov.w r3, -1 | r3 = -1;
0x0000881e str r3, [sp, 0xc] | var_ch = r3;
0x00008820 b 0x8386 | goto label_6;
| label_21:
0x00008822 ldr r2, [pc, 0x11c] |
0x00008824 mov r3, sb | r3 = sb;
0x00008826 movs r1, 0x10 | r1 = 0x10;
0x00008828 add r2, pc | r2 = 0x1116e;
0x0000882a blx 0x4868 | fcn_00004868 ();
0x0000882e ldr r3, [r7] | r3 = *(r7);
| if (r3 != 0) {
0x00008830 cbz r3, 0x8838 |
0x00008832 mov r0, r7 | r0 = r7;
0x00008834 bl 0x95f8 | fcn_000095f8 (r0);
| }
0x00008838 mov r0, r6 | r0 = r6;
0x0000883a blx 0x4d6c | fcn_00004d6c ();
0x0000883e mov r0, r8 | r0 = r8;
0x00008840 blx 0x4d6c | fcn_00004d6c ();
0x00008844 mov r0, r4 | r0 = r4;
0x00008846 blx 0x4d6c | fcn_00004d6c ();
0x0000884a b 0x87ba |
| } while (1);
| label_22:
0x0000884c mov r0, r7 | r0 = r7;
0x0000884e bl 0x95f8 | fcn_000095f8 (r0);
0x00008852 b 0x8622 | goto label_7;
| label_12:
0x00008854 blx 0x4d44 | fcn_00004d44 ();
0x00008858 invalid |
| }
[*] Function strcat used 1 times riod