[*] Binary protection state of libglib-2.0.so.0.5600.4
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of libglib-2.0.so.0.5600.4
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x3d288 */
| #include <stdint.h>
|
; (fcn) fcn.0003d288 () | void fcn_0003d288 (int32_t arg1, char * s) {
| char * src;
| int32_t var_5h;
| int32_t var_6h;
| int32_t var_ch;
| r0 = arg1;
| r1 = s;
0x0003d288 push {r0, r1, r2, r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0003d28c mov sb, r0 | sb = r0;
0x0003d290 mov r0, r1 | r0 = r1;
0x0003d294 mov r4, r1 | r4 = r1;
0x0003d298 mov sl, r2 | sl = r2;
0x0003d29c bl 0x17744 | strlen (r0);
0x0003d2a0 mov fp, 1 |
0x0003d2a4 mov r7, 0 | r7 = 0;
0x0003d2a8 mov r8, 0x5c | r8 = 0x5c;
0x0003d2ac mov r5, r0 | r5 = r0;
0x0003d2b0 add r0, r0, 1 | r0++;
0x0003d2b4 lsl r0, r0, 1 | r0 <<= 1;
0x0003d2b8 bl 0x4b814 | g_malloc ();
0x0003d2bc add r5, r4, r5 | r5 = r4 + r5;
0x0003d2c0 mov r6, r0 | r6 = r0;
0x0003d2c4 mov r3, r0 | r3 = r0;
| label_0:
0x0003d2c8 cmp r4, r5 |
| if (r4 > r5) {
0x0003d2cc blo 0x3d2e0 |
0x0003d2d0 mov r0, r6 | r0 = r6;
0x0003d2d4 strb r7, [r3] | *(r3) = r7;
0x0003d2d8 add sp, sp, 0xc |
0x0003d2dc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0003d2e0 ldrb r2, [r4], 1 | r2 = *(r4);
| r4++;
0x0003d2e4 strh r8, [sp, 4] | src = r8;
0x0003d2e8 cmp r2, 0xd |
0x0003d2ec strb r7, [sp, 6] | var_6h = r7;
| if (r2 == 0xd) {
0x0003d2f0 beq 0x3d390 | goto label_1;
| }
| if (r2 > 0xd) {
0x0003d2f4 bhi 0x3d328 | goto label_2;
| }
0x0003d2f8 cmp r2, 9 |
| if (r2 == 9) {
0x0003d2fc beq 0x3d368 | goto label_3;
| }
0x0003d300 cmp r2, 0xa |
| if (r2 != 0xa) {
0x0003d304 moveq r2, 0x6e | r2 = 0x6e;
| }
| if (r2 == 0xa) {
0x0003d308 beq 0x3d394 | goto label_4;
| }
| do {
0x0003d30c cmp sl, 0 |
| if (sl != 0) {
0x0003d310 beq 0x3d320 |
0x0003d314 ldrb r1, [sb, 0x14] | r1 = *((sb + 0x14));
0x0003d318 cmp r1, r2 |
| if (r1 == r2) {
0x0003d31c beq 0x3d374 | goto label_5;
| }
| }
0x0003d320 strb r2, [r3], 1 | *(r3) = r2;
| r3++;
0x0003d324 b 0x3d34c | goto label_6;
| label_2:
0x0003d328 cmp r2, 0x20 |
| if (r2 == 0x20) {
0x0003d32c beq 0x3d354 | goto label_7;
| }
0x0003d330 cmp r2, 0x5c |
0x0003d334 bne 0x3d30c |
| } while (r2 != 0x5c);
0x0003d338 mov r0, r3 | r0 = r3;
0x0003d33c add r1, sp, 4 | r1 += src;
0x0003d340 strb r8, [sp, 5] | var_5h = r8;
0x0003d344 bl 0x170d8 | r0 = strcpy (r0, r1)
0x0003d348 add r3, r0, 2 | r3 = r0 + 2;
| label_6:
0x0003d34c mov fp, 0 |
0x0003d350 b 0x3d2c8 | goto label_0;
| label_7:
0x0003d354 cmp fp, 0 |
| if (fp == 0) {
0x0003d358 movne r2, 0x73 | r2 = 0x73;
| }
| if (fp != 0) {
0x0003d35c bne 0x3d374 | goto label_5;
| }
| do {
0x0003d360 strb r2, [r3], 1 | *(r3) = r2;
| r3++;
0x0003d364 b 0x3d2c8 | goto label_0;
| label_3:
0x0003d368 cmp fp, 0 |
| if (fp == 0) {
0x0003d36c movne r2, 0x74 | r2 = 0x74;
| }
0x0003d370 beq 0x3d360 |
| } while (fp == 0);
| label_5:
0x0003d374 mov r0, r3 | r0 = r3;
0x0003d378 add r1, sp, 4 | r1 += src;
0x0003d37c strb r2, [sp, 5] | var_5h = r2;
0x0003d380 bl 0x170d8 | strcpy (r0, r1)
0x0003d384 mov fp, 1 |
0x0003d388 add r3, r0, 2 | r3 = r0 + 2;
0x0003d38c b 0x3d2c8 | goto label_0;
| label_1:
0x0003d390 mov r2, 0x72 | r2 = 0x72;
| label_4:
0x0003d394 mov r0, r3 | r0 = r3;
0x0003d398 add r1, sp, 4 | r1 += src;
0x0003d39c strb r2, [sp, 5] | var_5h = r2;
0x0003d3a0 bl 0x170d8 | r0 = strcpy (r0, r1)
0x0003d3a4 add r3, r0, 2 | r3 = r0 + 2;
0x0003d3a8 b 0x3d2c8 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x4935c */
| #include <stdint.h>
|
; (fcn) fcn.0004935c () | void fcn_0004935c (int32_t arg_0h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| char * s2;
| char * var_28h;
| char * var_2ch;
| char * * endptr;
| int32_t var_1h;
| char * src;
| int32_t var_3ch;
| int32_t var_44h;
| r0 = arg1;
| r1 = arg2;
0x0004935c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00049360 mov r5, 0 | r5 = 0;
0x00049364 str r5, [r2] | *(r2) = r5;
0x00049368 mov r8, r3 | r8 = r3;
0x0004936c ldr r3, [r0, 0x14] | r3 = *(arg_0hx14);
0x00049370 sub sp, sp, 0x44 |
0x00049374 sub r3, r3, 9 | r3 -= 9;
0x00049378 cmp r3, 1 |
0x0004937c str r3, [sp, 0x14] | var_14h = r3;
| if (r3 > 1) {
0x00049380 movls r3, 0x20 | r3 = 0x20;
| }
| if (r3 <= 1) {
0x00049384 movhi r3, 0xa | r3 = 0xa;
| }
0x00049388 str r3, [sp, 0x20] | var_20h = r3;
0x0004938c ldr r3, [pc, 0x37c] | r3 = *(0x4970c);
0x00049390 ldr r4, [r1] | r4 = *(r1);
0x00049394 add r3, pc, r3 | r3 = pc + r3;
0x00049398 str r3, [sp, 0x24] | s2 = r3;
0x0004939c ldr r3, [pc, 0x370] | r3 = *(0x49710);
0x000493a0 mov r7, r0 | r7 = r0;
0x000493a4 add r3, pc, r3 | r3 = pc + r3;
0x000493a8 str r3, [sp, 0x28] | var_28h = r3;
0x000493ac ldr r3, [pc, 0x364] | r3 = *(0x49714);
0x000493b0 mov sb, r1 | sb = r1;
0x000493b4 add r3, pc, r3 | r3 = pc + r3;
0x000493b8 mov fp, r4 |
0x000493bc str r2, [sp, 0x18] | var_18h = r2;
0x000493c0 str r3, [sp, 0x2c] | var_2ch = r3;
| label_0:
0x000493c4 ldrb r2, [r4] | r2 = *(r4);
0x000493c8 cmp r2, 0 |
| if (r2 == 0) {
0x000493cc bne 0x49410 |
0x000493d0 ldr r1, [sb] | r1 = *(sb);
0x000493d4 ldr r3, [sb, 4] | r3 = *((sb + 4));
0x000493d8 sub r1, fp, r1 | r1 = fp - r1;
0x000493dc cmp r1, r3 |
| if (r1 > r3) {
0x000493e0 bhi 0x496e0 | goto label_5;
| }
| if (r1 != r3) {
0x000493e4 beq 0x493f0 |
0x000493e8 mov r0, sb | r0 = sb;
0x000493ec bl 0x635ec | g_string_truncate ();
| }
0x000493f0 lsl r5, r5, 0x18 | r5 <<= 0x18;
0x000493f4 asr r5, r5, 0x18 | r5 >>= 0x18;
0x000493f8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000493fc mvn r5, r5 | r5 = ~r5;
0x00049400 lsr r5, r5, 0x1f | r5 >>= 0x1f;
0x00049404 str r5, [r3] | *(r3) = r5;
0x00049408 mov r0, 1 | r0 = 1;
0x0004940c b 0x49500 | goto label_6;
| }
0x00049410 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00049414 strb r2, [fp] | *(fp) = r2;
0x00049418 cmp r3, 1 |
0x0004941c orr r5, r2, r5 | r5 = r2 | r5;
| if (r3 <= 1) {
0x00049420 bhi 0x49434 |
0x00049424 sub r2, r2, 9 | r2 -= 9;
0x00049428 cmp r2, 1 |
| if (r2 > 1) {
0x0004942c movls r2, 0x20 | r2 = 0x20;
| }
| if (r2 <= 1) {
0x00049430 strbls r2, [fp] | *(fp) = r2;
| goto label_7;
| }
| }
| label_7:
0x00049434 ldrb r2, [fp] | r2 = *(fp);
0x00049438 cmp r2, 0xd |
| if (r2 == 0xd) {
0x0004943c bne 0x49454 |
0x00049440 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00049444 strb r3, [fp] | *(fp) = r3;
0x00049448 ldrb r2, [r4, 1] | r2 = *((r4 + 1));
0x0004944c cmp r2, 0xa |
| if (r2 == 0xa) {
0x00049450 addeq r4, r4, 1 | r4++;
| goto label_8;
| }
| }
| label_8:
0x00049454 ldrb r3, [r4] | r3 = *(r4);
0x00049458 cmp r3, 0x26 |
0x0004945c str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 != 0x26) {
0x00049460 bne 0x495a8 | goto label_2;
| }
0x00049464 ldrb sl, [r4, 1] | sl = *((r4 + 1));
0x00049468 cmp sl, 0x23 |
| if (sl != 0x23) {
0x0004946c bne 0x495c0 | goto label_9;
| }
0x00049470 mov r2, 0 | r2 = 0;
0x00049474 str r2, [sp, 0x34] | endptr = r2;
0x00049478 ldrb r2, [r4, 2] | r2 = *((r4 + 2));
0x0004947c cmp r2, 0x78 |
| if (r2 == 0x78) {
0x00049480 movne sl, 0xa | sl = 0xa;
| }
| if (r2 != 0x78) {
0x00049484 moveq sl, 0x10 | sl = 0x10;
| }
| if (r2 == 0x78) {
0x00049488 addne r4, r4, 2 | r4 += 2;
| }
| if (r2 != 0x78) {
0x0004948c addeq r4, r4, 3 | r4 += 3;
| }
0x00049490 bl 0x174e0 | errno_location ();
0x00049494 mov r2, 0 | r2 = 0;
0x00049498 add r1, sp, 0x34 | r1 += endptr;
0x0004949c str r2, [r0] | *(r0) = r2;
0x000494a0 mov r6, r0 | r6 = r0;
0x000494a4 mov r2, sl | r2 = sl;
0x000494a8 mov r0, r4 | r0 = r4;
0x000494ac bl 0x17420 | strtoul (r0, r1, r2);
0x000494b0 ldr r2, [sp, 0x34] | r2 = endptr;
0x000494b4 cmp r2, r4 |
0x000494b8 mov sl, r0 | sl = r0;
| if (r2 != r4) {
0x000494bc beq 0x494cc |
0x000494c0 ldr r1, [r6] | r1 = *(r6);
0x000494c4 cmp r1, 0 |
| if (r1 == 0) {
0x000494c8 beq 0x49508 | goto label_10;
| }
| }
0x000494cc ldr r0, [pc, 0x248] | r0 = *(0x49718);
0x000494d0 add r0, pc, r0 | r0 = pc + r0;
| label_1:
0x000494d4 bl 0x35298 | glib_gettext ();
0x000494d8 ldr r3, [sp, 0x34] | r3 = endptr;
0x000494dc mov r2, r4 | r2 = r4;
0x000494e0 sub r3, r3, r4 | r3 -= r4;
0x000494e4 str r4, [sp, 8] | var_8h = r4;
0x000494e8 stm sp, {r0, r3} | *(sp) = r0;
| *((sp + 4)) = r3;
0x000494ec mov r3, 2 | r3 = 2;
| label_4:
0x000494f0 mov r1, r8 | r1 = r8;
0x000494f4 mov r0, r7 | r0 = r7;
0x000494f8 bl 0x492bc | fcn_000492bc (r0, r1, r2, r3);
| do {
0x000494fc mov r0, 0 | r0 = 0;
| label_6:
0x00049500 add sp, sp, 0x44 |
0x00049504 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x00049508 ldrb r2, [r2] | r2 = *(r2);
0x0004950c cmp r2, 0x3b |
| if (r2 == 0x3b) {
0x00049510 beq 0x4953c | goto label_11;
| }
0x00049514 ldr r0, [pc, 0x204] | r0 = *(0x4971c);
0x00049518 add r0, pc, r0 | r0 = pc + r0;
0x0004951c bl 0x35298 | glib_gettext ();
0x00049520 mov r3, 2 | r3 = 2;
0x00049524 mov r2, r4 | r2 = r4;
0x00049528 str r0, [sp] | *(sp) = r0;
| label_3:
0x0004952c mov r1, r8 | r1 = r8;
0x00049530 mov r0, r7 | r0 = r7;
0x00049534 bl 0x492bc | fcn_000492bc (r0, r1, r2, r3);
0x00049538 b 0x494fc |
| } while (1);
| label_11:
0x0004953c sub r1, r0, 1 | r1 = r0 - 1;
0x00049540 sub r2, r0, 0xe000 | r2 = r0 - 0xe000;
0x00049544 ldr ip, [pc, 0x1d8] | ip = "ew";
0x00049548 ldr r0, [pc, 0x1d8] | r0 = "ew";
0x0004954c cmp r2, r0 |
0x00049550 cmphi r1, ip | __asm ("cmphi r1, ip");
| if (r2 >= r0) {
0x00049554 bls 0x49564 |
0x00049558 sub r2, sl, 0x10000 | r2 = sl - 0x10000;
0x0004955c cmp r2, 0x100000 |
| if (r2 >= 0x100000) {
0x00049560 bhs 0x495b4 | goto label_12;
| }
| }
0x00049564 add r4, sp, 0x38 | r4 += src;
0x00049568 mov r2, 0 | r2 = 0;
0x0004956c mov r1, r4 | r1 = r4;
0x00049570 mov r0, sl | r0 = sl;
0x00049574 str r2, [sp, 0x38] | src = r2;
0x00049578 str r2, [sp, 0x3c] | var_3ch = r2;
0x0004957c bl 0x70f48 | g_unichar_to_utf8 ();
0x00049580 mov r1, r4 | r1 = r4;
0x00049584 mov r0, fp | r0 = fp;
0x00049588 bl 0x170d8 | strcpy (r0, r1)
0x0004958c mov r0, r4 | r0 = r4;
0x00049590 bl 0x17744 | strlen (r0);
0x00049594 ldr r4, [sp, 0x34] | r4 = endptr;
0x00049598 cmp sl, 0x7f |
| if (sl <= 0x7f) {
0x0004959c orrhi r5, r5, 0x80 | r5 |= 0x80;
| }
0x000495a0 sub r0, r0, 1 | r0 -= var_1h;
0x000495a4 add fp, fp, r0 |
| do {
| label_2:
0x000495a8 add r4, r4, 1 | r4++;
0x000495ac add fp, fp, 1 |
0x000495b0 b 0x493c4 | goto label_0;
| label_12:
0x000495b4 ldr r0, [pc, 0x170] | r0 = *(0x49728);
0x000495b8 add r0, pc, r0 | r0 = pc + r0;
0x000495bc b 0x494d4 | goto label_1;
| label_9:
0x000495c0 add r6, r4, 1 | r6 = r4 + 1;
0x000495c4 mov r2, 3 | r2 = 3;
0x000495c8 ldr r1, [sp, 0x24] | r1 = s2;
0x000495cc mov r0, r6 | r0 = r6;
0x000495d0 bl 0x170b4 | r0 = strncmp (r0, r1, r2);
0x000495d4 cmp r0, 0 |
| if (r0 != 0) {
0x000495d8 moveq r2, 0x3c | r2 = 0x3c;
| }
| if (r0 != 0) {
0x000495dc beq 0x495fc |
0x000495e0 mov r2, 3 | r2 = 3;
0x000495e4 ldr r1, [sp, 0x28] | r1 = var_28h;
0x000495e8 mov r0, r6 | r0 = r6;
0x000495ec bl 0x170b4 | r0 = strncmp (r0, r1, r2);
0x000495f0 cmp r0, 0 |
| if (r0 != 0) {
0x000495f4 bne 0x49608 | goto label_13;
| }
0x000495f8 mov r2, 0x3e | r2 = 0x3e;
| }
0x000495fc strb r2, [fp] | *(fp) = r2;
0x00049600 add r4, r4, 3 | r4 += 3;
0x00049604 b 0x495a8 |
| } while (1);
| label_13:
0x00049608 mov r2, 4 | r2 = 4;
0x0004960c ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00049610 mov r0, r6 | r0 = r6;
0x00049614 bl 0x170b4 | r0 = strncmp (r0, r1, r2);
0x00049618 cmp r0, 0 |
| if (r0 != 0) {
0x0004961c ldreq r3, [sp, 0x1c] | r3 = var_1ch;
| }
| if (r0 != 0) {
0x00049620 addeq r4, r4, 4 | r4 += 4;
| }
| if (r0 == 0) {
0x00049624 strbeq r3, [fp] | *(fp) = r3;
| goto label_14;
| }
| if (r0 == 0) {
| label_14:
0x00049628 beq 0x495a8 | goto label_2;
| }
0x0004962c ldr r1, [pc, 0xfc] | r1 = *(0x4972c);
0x00049630 mov r2, 5 | r2 = 5;
0x00049634 add r1, pc, r1 | r1 = pc + r1;
0x00049638 mov r0, r6 | r0 = r6;
0x0004963c bl 0x170b4 | r0 = strncmp (r0, r1, r2);
0x00049640 cmp r0, 0 |
| if (r0 != 0) {
0x00049644 moveq r2, 0x22 | r2 = 0x22;
| }
| if (r0 != 0) {
0x00049648 beq 0x4966c |
0x0004964c ldr r1, [pc, 0xe0] | r1 = *(0x49730);
0x00049650 mov r2, 5 | r2 = 5;
0x00049654 add r1, pc, r1 | r1 = pc + r1;
0x00049658 mov r0, r6 | r0 = r6;
0x0004965c bl 0x170b4 | r0 = strncmp (r0, r1, r2);
0x00049660 cmp r0, 0 |
| if (r0 != 0) {
0x00049664 bne 0x49678 | goto label_15;
| }
0x00049668 mov r2, 0x27 | r2 = 0x27;
| }
0x0004966c strb r2, [fp] | *(fp) = r2;
0x00049670 add r4, r4, 5 | r4 += 5;
0x00049674 b 0x495a8 | goto label_2;
| label_15:
0x00049678 cmp sl, 0x3b |
| if (sl != 0x3b) {
0x0004967c bne 0x4969c | goto label_16;
| }
0x00049680 ldr r0, [pc, 0xb0] | r0 = *(0x49734);
0x00049684 add r0, pc, r0 | r0 = pc + r0;
| do {
0x00049688 bl 0x35298 | glib_gettext ();
0x0004968c mov r3, 2 | r3 = 2;
0x00049690 mov r2, r6 | r2 = r6;
0x00049694 str r0, [sp] | *(sp) = r0;
0x00049698 b 0x4952c | goto label_3;
| label_16:
0x0004969c mov r1, 0x3b | r1 = 0x3b;
0x000496a0 mov r0, r6 | r0 = r6;
0x000496a4 bl 0x17240 | r0 = strchr (r0, r1);
0x000496a8 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x000496ac beq 0x496d4 |
0x000496b0 ldr r0, [pc, 0x84] | r0 = *(0x49738);
0x000496b4 sub r4, r4, r6 | r4 -= r6;
0x000496b8 add r0, pc, r0 | r0 = pc + r0;
0x000496bc bl 0x35298 | glib_gettext ();
0x000496c0 str r6, [sp, 8] | var_8h = r6;
0x000496c4 mov r3, 2 | r3 = 2;
0x000496c8 mov r2, r6 | r2 = r6;
0x000496cc stm sp, {r0, r4} | *(sp) = r0;
| *((sp + 4)) = r4;
0x000496d0 b 0x494f0 | goto label_4;
| }
0x000496d4 ldr r0, [pc, 0x64] | r0 = *(0x4973c);
0x000496d8 add r0, pc, r0 | r0 = pc + r0;
0x000496dc b 0x49688 |
| } while (1);
| label_5:
0x000496e0 ldr r3, [pc, 0x5c] | r3 = *(0x49740);
0x000496e4 ldr r1, [pc, 0x5c] | r1 = *(0x49744);
0x000496e8 add r3, pc, r3 | r3 = pc + r3;
0x000496ec str r3, [sp] | *(sp) = r3;
0x000496f0 ldr r3, [pc, 0x54] |
0x000496f4 ldr r0, [pc, 0x54] | r0 = *(0x4974c);
0x000496f8 add r3, pc, r3 | r3 = pc + r3;
0x000496fc add r3, r3, 0x37 | r3 = 0x4977f;
0x00049700 ldr r2, [pc, 0x4c] | r2 = *(0x49750);
0x00049704 add r1, pc, r1 | r1 = pc + r1;
0x00049708 add r0, pc, r0 | r0 = pc + r0;
0x0004970c bl 0x6848c | g_assertion_message_expr ();
| if (r4 != r0) {
0x00049710 andeq r7, r4, r2, lsl ip | r7 = r4 & (r2 << ip);
| }
| if (r4 != r0) {
0x00049714 andeq r7, r4, r7, lsl 24 | r7 = r4 & (r7 << 24);
| }
0x00049718 strdeq r7, r8, [r4], -r2 | __asm ("strdeq r7, r8, [r4], -r2");
0x0004971c strheq r6, [r4], -r1 | __asm ("strheq r6, [r4], -r1");
0x00049720 strdeq r6, r7, [r4], -r4 | __asm ("strdeq r6, r7, [r4], -r4");
0x00049724 strdeq sp, lr, [r0], -lr | __asm ("strdeq sp, lr, [r0], -lr");
0x00049728 strdeq r1, r2, [r0], -sp | __asm ("strdeq r1, r2, [r0], -sp");
0x0004972c strdeq r6, r7, [r4], -r3 | __asm ("strdeq r6, r7, [r4], -r3");
| if (r4 != r0) {
0x00049730 andeq r7, r4, ip, ror sb | r7 = r4 & (ip >>> sb);
| }
0x00049734 ldrdeq r6, r7, [r4], -sp | __asm ("ldrdeq r6, r7, [r4], -sp");
| if (r4 != r0) {
0x00049738 andeq r6, r4, sb, ror 30 | r6 = r4 & (sb >>> 30);
| }
| if (r4 != r0) {
0x0004973c andeq r6, r4, pc, ror pc | r6 = r4 & (pc >>> pc);
| }
| if (r4 != r0) {
0x00049740 andeq r6, r4, r0, lsl 31 | r6 = r4 & (r0 << 31);
| }
| if (r4 != r0) {
0x00049744 andeq r7, r4, r2 | r7 = r4 & r2;
| }
| if (r4 != r0) {
0x00049748 andeq r6, r4, lr, lsl 24 | r6 = r4 & (lr << 24);
| }
| if (r4 != r0) {
0x0004974c andeq r6, r4, r0, asr sl | r6 = r4 & (r0 >> sl);
| }
| if (r4 != r0) {
0x00049750 andeq ip, r4, lr, ror 18 |
| }
| /* Beware that this jump is a conditional jump.
| * r2dec transformed it as a return, due being the
| * last instruction. Please, check 'pdda' output
| * for more hints. */
0x00049754 andeq r0, r0, r3, lsl r3 | return r0 &= (r3 << r3);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x4bed8 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0004bed8 () | void fcn_0004bed8 (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0004bed8 push {r4, r5, r6, r7, r8, lr} |
0x0004bedc ldr r7, [pc, 0x1e4] | r7 = *(0x4c0c4);
0x0004bee0 subs r8, r2, 0 | r8 = r2 - 0;
0x0004bee4 add r7, pc, r7 | r7 = pc + r7;
0x0004bee8 mov r4, r0 | r4 = r0;
0x0004beec mov r6, r1 | r6 = r1;
| if (r8 == r2) {
0x0004bef0 beq 0x4bf70 | goto label_5;
| }
0x0004bef4 tst r1, 4 |
| if ((r1 & 4) != 0) {
0x0004bef8 bne 0x4bf7c | goto label_6;
| }
0x0004befc tst r1, 8 |
| if ((r1 & 8) != 0) {
0x0004bf00 bne 0x4bf88 | goto label_7;
| }
0x0004bf04 tst r1, 0x10 |
| if ((r1 & 0x10) != 0) {
0x0004bf08 bne 0x4bf94 | goto label_8;
| }
0x0004bf0c tst r1, 0xe0 |
| if ((r1 & 0xe0) != 0) {
0x0004bf10 bne 0x4bfa0 | goto label_9;
| }
0x0004bf14 ldr r1, [pc, 0x1b0] | r1 = *(0x4c0c8);
0x0004bf18 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_0:
0x0004bf1c mov r0, r4 | r0 = r4;
0x0004bf20 bic r5, r6, 3 | r5 = BIT_MASK (r6, 3);
0x0004bf24 bl 0x170d8 | strcpy (r0, r1)
0x0004bf28 cmp r5, 0x10 |
| if (r5 == 0x10) {
0x0004bf2c beq 0x4c004 | goto label_10;
| }
| if (r5 > 0x10) {
0x0004bf30 bgt 0x4bfac | goto label_11;
| }
0x0004bf34 cmp r5, 4 |
| if (r5 == 4) {
0x0004bf38 beq 0x4bfd0 | goto label_12;
| }
0x0004bf3c cmp r5, 8 |
| if (r5 == 8) {
0x0004bf40 beq 0x4bff8 | goto label_13;
| }
| label_1:
0x0004bf44 cmp r6, 0 |
| if (r6 == 0) {
0x0004bf48 beq 0x4c048 | goto label_14;
| }
0x0004bf4c ldr r1, [pc, 0x17c] | r1 = *(0x4c0cc);
0x0004bf50 mov r0, r4 | r0 = r4;
0x0004bf54 add r1, pc, r1 | r1 = pc + r1;
0x0004bf58 bl 0x17090 | strcat (r0, r1);
0x0004bf5c cmp r5, 0 |
| if (r5 != 0) {
0x0004bf60 bne 0x4c034 | goto label_15;
| }
0x0004bf64 mov r3, 0x30 | r3 = 0x30;
0x0004bf68 strh r3, [r4, 4] | *((r4 + 4)) = r3;
0x0004bf6c b 0x4c020 | goto label_4;
| label_5:
0x0004bf70 ldr r1, [pc, 0x15c] | r1 = *(0x4c0d0);
0x0004bf74 add r1, pc, r1 | r1 = pc + r1;
0x0004bf78 b 0x4bf1c |
| } while (1);
| label_6:
0x0004bf7c ldr r1, [pc, 0x154] | r1 = *(0x4c0d4);
0x0004bf80 add r1, pc, r1 | r1 = pc + r1;
0x0004bf84 b 0x4bf1c | goto label_0;
| label_7:
0x0004bf88 ldr r1, [pc, 0x14c] | r1 = "array_foreach";
0x0004bf8c add r1, pc, r1 | r1 = pc + r1;
0x0004bf90 b 0x4bf1c | goto label_0;
| label_8:
0x0004bf94 ldr r1, [pc, 0x144] | r1 = *(0x4c0dc);
0x0004bf98 add r1, pc, r1 | r1 = pc + r1;
0x0004bf9c b 0x4bf1c | goto label_0;
| label_9:
0x0004bfa0 ldr r1, [pc, 0x13c] | r1 = *(0x4c0e0);
0x0004bfa4 add r1, pc, r1 | r1 = pc + r1;
0x0004bfa8 b 0x4bf1c | goto label_0;
| label_11:
0x0004bfac cmp r5, 0x40 |
| if (r5 == 0x40) {
0x0004bfb0 beq 0x4c010 | goto label_16;
| }
0x0004bfb4 cmp r5, 0x80 |
| if (r5 == 0x80) {
0x0004bfb8 beq 0x4c028 | goto label_17;
| }
0x0004bfbc cmp r5, 0x20 |
| if (r5 != 0x20) {
0x0004bfc0 bne 0x4bf44 | goto label_1;
| }
0x0004bfc4 ldr r1, [pc, 0x11c] | r1 = *(0x4c0e4);
0x0004bfc8 add r1, pc, r1 | r1 = pc + r1;
0x0004bfcc b 0x4bfd8 | goto label_2;
| label_12:
0x0004bfd0 ldr r1, [pc, 0x114] | r1 = *(0x4c0e8);
0x0004bfd4 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_2:
0x0004bfd8 mov r0, r4 | r0 = r4;
0x0004bfdc bl 0x17090 | strcat (r0, r1);
0x0004bfe0 mov r5, 0 | r5 = 0;
| label_3:
0x0004bfe4 cmp r8, 0 |
| if (r8 == 0) {
0x0004bfe8 beq 0x4c0bc | goto label_18;
| }
0x0004bfec ldr r1, [pc, 0xfc] | r1 = *(0x4c0ec);
0x0004bff0 add r1, pc, r1 | r1 = pc + r1;
0x0004bff4 b 0x4c06c | goto label_19;
| label_13:
0x0004bff8 ldr r1, [pc, 0xf4] | r1 = *(0x4c0f0);
0x0004bffc add r1, pc, r1 | r1 = pc + r1;
0x0004c000 b 0x4bfd8 |
| } while (1);
| label_10:
0x0004c004 ldr r1, [pc, 0xec] | r1 = *(0x4c0f4);
0x0004c008 add r1, pc, r1 | r1 = pc + r1;
0x0004c00c b 0x4bfd8 | goto label_2;
| label_16:
0x0004c010 ldr r1, [pc, 0xe4] | r1 = *(0x4c0f8);
0x0004c014 add r1, pc, r1 | r1 = pc + r1;
| do {
0x0004c018 mov r0, r4 | r0 = r4;
0x0004c01c bl 0x17090 | strcat (r0, r1);
| label_4:
0x0004c020 mov r5, 1 | r5 = 1;
0x0004c024 b 0x4bfe4 | goto label_3;
| label_17:
0x0004c028 ldr r1, [pc, 0xd0] | r1 = *(0x4c0fc);
0x0004c02c add r1, pc, r1 | r1 = pc + r1;
0x0004c030 b 0x4c018 |
| } while (1);
| label_15:
0x0004c034 mov r2, 0x10 | r2 = 0x10;
0x0004c038 mov r1, r5 | r1 = r5;
0x0004c03c add r0, r4, 4 | r0 = r4 + 4;
0x0004c040 bl 0x4be44 | fcn_0004be44 (r0, r1);
0x0004c044 b 0x4c020 | goto label_4;
| label_14:
0x0004c048 ldr r1, [pc, 0xb4] | r1 = *(0x4c100);
0x0004c04c mov r0, r4 | r0 = r4;
0x0004c050 add r1, pc, r1 | r1 = pc + r1;
0x0004c054 bl 0x17090 | strcat (r0, r1);
0x0004c058 cmp r8, 0 |
0x0004c05c mov r5, 1 | r5 = 1;
| if (r8 == 0) {
0x0004c060 beq 0x4c08c | goto label_20;
| }
0x0004c064 ldr r1, [pc, 0x9c] | r1 = *(0x4c104);
0x0004c068 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_19:
0x0004c06c mov r0, r4 | r0 = r4;
0x0004c070 bl 0x17090 | strcat (r0, r1);
0x0004c074 tst r6, 1 |
| if ((r6 & 1) != 0) {
0x0004c078 beq 0x4c08c |
0x0004c07c ldr r1, [pc, 0x88] | r1 = *(0x4c108);
0x0004c080 mov r0, r4 | r0 = r4;
0x0004c084 add r1, pc, r1 | r1 = pc + r1;
0x0004c088 bl 0x17090 | strcat (r0, r1);
| }
| label_20:
0x0004c08c tst r6, 0x1c |
| if ((r6 & 0x1c) != 0) {
0x0004c090 beq 0x4c0a4 |
0x0004c094 ldr r1, [pc, 0x74] | r1 = *(0x4c10c);
0x0004c098 mov r0, r4 | r0 = r4;
0x0004c09c add r1, pc, r1 | r1 = pc + r1;
0x0004c0a0 bl 0x17090 | strcat (r0, r1);
| }
0x0004c0a4 cmp r5, 0 |
0x0004c0a8 ldr r3, [pc, 0x64] | r3 = *(0x4c110);
| if (r5 != 0) {
0x0004c0ac ldreq r3, [pc, 0x64] | r3 = *((pc + 0x64));
| }
0x0004c0b0 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x0004c0b4 ldr r0, [r3] | r0 = *(0x4c110);
0x0004c0b8 pop {r4, r5, r6, r7, r8, pc} |
| label_18:
0x0004c0bc ldr r1, [pc, 0x58] | r1 = *(0x4c118);
0x0004c0c0 add r1, pc, r1 | r1 = pc + r1;
0x0004c0c4 b 0x4c06c |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x4fc0c */
| #include <stdint.h>
|
; (fcn) fcn.0004fc0c () | void fcn_0004fc0c (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0004fc0c push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0004fc10 ldr r5, [r0, 0x28] | r5 = *((r0 + 0x28));
0x0004fc14 mov r6, r0 | r6 = r0;
0x0004fc18 mov r7, r1 | r7 = r1;
0x0004fc1c mov r8, 0 | r8 = 0;
0x0004fc20 mov sb, 0x2d | sb = 0x2d;
| do {
0x0004fc24 cmp r5, 0 |
| if (r5 == 0) {
0x0004fc28 bne 0x4fc3c |
0x0004fc2c ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x0004fc30 bl 0x42cd4 | g_list_free ();
0x0004fc34 str r5, [r6, 0x28] | *((r6 + 0x28)) = r5;
0x0004fc38 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
0x0004fc3c cmp r7, 0 |
0x0004fc40 ldr r4, [r5] | r4 = *(r5);
| if (r7 != 0) {
0x0004fc44 beq 0x4fc74 |
0x0004fc48 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0004fc4c ldr r3, [r4] | r3 = *(r4);
0x0004fc50 cmp r2, 0 |
| if (r2 == 0) {
0x0004fc54 beq 0x4fc8c | goto label_1;
| }
0x0004fc58 ldr r3, [r3] | r3 = *(r3);
0x0004fc5c strb sb, [r3] | *(r3) = sb;
0x0004fc60 ldr r3, [r4] | r3 = *(r4);
0x0004fc64 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0004fc68 ldr r0, [r3] | r0 = *(r3);
0x0004fc6c add r0, r0, 1 | r0++;
0x0004fc70 bl 0x170d8 | strcpy (r0, r1)
| }
| label_0:
0x0004fc74 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0004fc78 bl 0x4b940 | g_free ();
0x0004fc7c mov r0, r4 | r0 = r4;
0x0004fc80 bl 0x4b940 | g_free ();
0x0004fc84 ldr r5, [r5, 4] | r5 = *((r5 + 4));
0x0004fc88 b 0x4fc24 |
| } while (1);
| label_1:
0x0004fc8c ldrb r2, [r6, 0x1c] | r2 = *((r6 + 0x1c));
0x0004fc90 tst r2, 4 |
| if ((r2 & 4) != 0) {
0x0004fc94 beq 0x4fca0 |
0x0004fc98 ldr r0, [r3] | r0 = *(r3);
0x0004fc9c bl 0x4b940 | g_free ();
| }
0x0004fca0 ldr r3, [r4] | r3 = *(r4);
0x0004fca4 str r8, [r3] | *(r3) = r8;
0x0004fca8 b 0x4fc74 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x6b55c */
| #include <stdint.h>
|
; (fcn) fcn.0006b55c () | void fcn_0006b55c (int32_t arg1, void * arg2) {
| r0 = arg1;
| r1 = arg2;
0x0006b55c push {r4, r5, r6, lr} |
0x0006b560 mov r6, r0 | r6 = r0;
0x0006b564 mov r0, 0x120 | r0 = 0x120;
0x0006b568 mov r5, r1 | r5 = r1;
0x0006b56c bl 0x4b870 | g_malloc0 ();
0x0006b570 ldr r3, [pc, 0x78] | r3 = *(0x6b5ec);
0x0006b574 add lr, r5, 0xc | lr = r5 + 0xc;
0x0006b578 str r3, [r0] | *(r0) = r3;
0x0006b57c ldr r3, [pc, 0x70] | r3 = *(0x6b5f0);
0x0006b580 str r0, [r6] | *(r6) = r0;
0x0006b584 str r3, [r0, 0x90] | *((r0 + 0x90)) = r3;
0x0006b588 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0006b58c mov r4, r0 | r4 = r0;
0x0006b590 rsb r3, r3, 0 | r3 -= ;
0x0006b594 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x0006b598 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0006b59c add ip, r0, 0xc |
0x0006b5a0 rsb r3, r3, 0 | r3 -= ;
0x0006b5a4 str r3, [r0, 8] | *((r0 + 8)) = r3;
0x0006b5a8 ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0006b5ac stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0006b5b0 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x0006b5b4 add lr, r5, 0x2c | lr = r5 + 0x2c;
0x0006b5b8 stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0006b5bc ldm lr!, {r0, r1, r2, r3} | r0 = *(lr!);
| r1 = *((lr! + 4));
| r2 = *((lr! + 8));
| r3 = *((lr! + 12));
0x0006b5c0 add ip, r4, 0x2c |
0x0006b5c4 stm ip!, {r0, r1, r2, r3} | *(ip!) = r0;
| *((ip! + 4)) = r1;
| *((ip! + 8)) = r2;
| *((ip! + 12)) = r3;
0x0006b5c8 ldm lr, {r0, r1, r2, r3} | r0 = *(lr);
| r1 = *((lr + 4));
| r2 = *((lr + 8));
| r3 = *((lr + 12));
0x0006b5cc stm ip, {r0, r1, r2, r3} | *(ip) = r0;
| *((ip + 4)) = r1;
| *((ip + 8)) = r2;
| *((ip + 12)) = r3;
0x0006b5d0 add r1, r5, 0x4c | r1 = r5 + 0x4c;
0x0006b5d4 add r0, r4, 0x4c | r0 = r4 + 0x4c;
0x0006b5d8 bl 0x170d8 | strcpy (r0, r1)
0x0006b5dc add r1, r5, 0x6d | r1 = r5 + 0x6d;
0x0006b5e0 add r0, r4, 0x6d | r0 = r4 + 0x6d;
0x0006b5e4 bl 0x170d8 | strcpy (r0, r1)
0x0006b5e8 mov r0, 2 | r0 = 2;
0x0006b5ec pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x86d0c */
| #include <stdint.h>
|
; (fcn) fcn.00086d0c () | void fcn_00086d0c () {
| char * dest;
| char * format;
| char * src;
| char * var_3ch;
| int32_t var_2h;
| size_t size;
| int32_t var_74h;
0x00086d0c ldr r3, [pc, 0x2ac] | r3 = *(0x86fbc);
0x00086d10 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00086d14 ldr r4, [pc, r3] | r4 = *(0x00086d1c);
0x00086d18 sub sp, sp, 0x74 |
0x00086d1c cmp r4, 0 |
| if (r4 != 0) {
0x00086d20 bne 0x86fa8 | goto label_5;
| }
0x00086d24 ldr r0, [pc, 0x298] | r0 = *(0x86fc0);
0x00086d28 add r0, pc, r0 | r0 = pc + r0;
0x00086d2c bl 0x176d8 | r0 = getenv (r0);
0x00086d30 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00086d34 beq 0x86e78 | goto label_6;
| }
0x00086d38 ldrb r3, [r4] | r3 = *(r4);
0x00086d3c cmp r3, 0 |
| if (r3 == 0) {
0x00086d40 beq 0x86e84 | goto label_7;
| }
| label_0:
0x00086d44 mov r0, r4 | r0 = r4;
0x00086d48 bl 0x17744 | r0 = strlen (r0);
0x00086d4c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00086d50 moveq r6, r5 | r6 = r5;
| }
| if (r5 != r0) {
0x00086d54 beq 0x86d68 |
0x00086d58 add r3, r4, r5 | r3 = r4 + r5;
0x00086d5c ldrb r6, [r3, -1] | r6 = *((r3 - 1));
0x00086d60 subs r6, r6, 0x2f | r6 -= 0x2f;
| if (r6 != r6) {
0x00086d64 movne r6, 1 | r6 = 1;
| goto label_8;
| }
| }
| label_8:
0x00086d68 add r7, r6, r5 | r7 = r6 + r5;
0x00086d6c add r0, r7, 0xe | r0 = r7 + 0xe;
0x00086d70 bl 0x17048 | r0 = malloc (r0);
0x00086d74 subs sb, r0, 0 | sb = r0 - 0;
| if (sb == r0) {
0x00086d78 beq 0x86f94 | goto label_9;
| }
0x00086d7c mov r2, r5 | r2 = r5;
0x00086d80 mov r1, r4 | r1 = r4;
0x00086d84 bl 0x176fc | memcpy (r0, r1, r2);
0x00086d88 ldr r1, [pc, 0x238] | r1 = *(0x86fc4);
0x00086d8c cmp r6, 0 |
| if (r6 == 0) {
0x00086d90 movne r3, 0x2f | r3 = 0x2f;
| }
0x00086d94 mov r2, 0xe | r2 = 0xe;
0x00086d98 add r1, pc, r1 | r1 = pc + r1;
0x00086d9c add r0, sb, r7 | r0 = sb + r7;
| if (r6 == 0) {
0x00086da0 strbne r3, [sb, r5] | *((sb + r5)) = r3;
| }
0x00086da4 bl 0x176fc | memcpy (r0, r1, r2);
0x00086da8 ldr r1, [pc, 0x21c] | r1 = *(0x86fc8);
0x00086dac mov r0, sb | r0 = sb;
0x00086db0 add r1, pc, r1 | r1 = pc + r1;
0x00086db4 bl 0x17300 | r0 = fopen64 ();
0x00086db8 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 == r0) {
0x00086dbc beq 0x86fb4 | goto label_10;
| }
0x00086dc0 ldr r3, [pc, 0x208] | r3 = *(0x86fcc);
0x00086dc4 mov r6, 0 | r6 = 0;
0x00086dc8 add r3, pc, r3 | r3 = pc + r3;
0x00086dcc mov r4, r6 | r4 = r6;
0x00086dd0 add sl, sp, 0x3c | sl += var_3ch;
0x00086dd4 add fp, sp, 8 |
0x00086dd8 str r3, [sp, 4] | format = r3;
| label_3:
0x00086ddc ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x00086de0 cmp r3, 0 |
| if (r3 == 0) {
0x00086de4 beq 0x86e90 | goto label_11;
| }
0x00086de8 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00086dec ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00086df0 cmp r3, r2 |
| if (r3 >= r2) {
0x00086df4 addlo r2, r3, 1 | r2 = r3 + 1;
| }
| if (r3 >= r2) {
0x00086df8 strlo r2, [r5, 0x10] | *((r5 + 0x10)) = r2;
| }
| if (r3 >= r2) {
0x00086dfc ldrblo r0, [r3] | r0 = *(r3);
| }
| if (r3 > r2) {
0x00086e00 blo 0x86e14 |
0x00086e04 mov r0, r5 | r0 = r5;
0x00086e08 bl 0x175c4 | r0 = fgetc_unlocked ();
| label_1:
0x00086e0c cmn r0, 1 |
| if (r0 == 1) {
0x00086e10 beq 0x86f24 | goto label_12;
| }
| }
0x00086e14 sub r3, r0, 9 | r3 = r0 - 9;
0x00086e18 cmp r0, 0x20 |
0x00086e1c cmpne r3, 1 | __asm ("cmpne r3, 1");
| if (r0 < 0x20) {
0x00086e20 bls 0x86e70 | goto label_13;
| }
0x00086e24 cmp r0, 0x23 |
| if (r0 != 0x23) {
0x00086e28 bne 0x86ea8 | goto label_14;
| }
| do {
0x00086e2c ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x00086e30 cmp r3, 0 |
| if (r3 == 0) {
0x00086e34 beq 0x86e9c | goto label_15;
| }
0x00086e38 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00086e3c ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x00086e40 cmp r3, r2 |
| if (r3 >= r2) {
0x00086e44 addlo r2, r3, 1 | r2 = r3 + 1;
| }
| if (r3 >= r2) {
0x00086e48 strlo r2, [r5, 0x10] | *((r5 + 0x10)) = r2;
| }
| if (r3 >= r2) {
0x00086e4c ldrblo r0, [r3] | r0 = *(r3);
| }
| if (r3 > r2) {
0x00086e50 blo 0x86e5c |
0x00086e54 mov r0, r5 | r0 = r5;
0x00086e58 bl 0x175c4 | r0 = fgetc_unlocked ();
| }
| label_2:
0x00086e5c cmp r0, 0xa |
0x00086e60 cmnne r0, 1 | __asm ("cmnne r0, 1");
0x00086e64 bne 0x86e2c |
| } while (r0 != 0xa);
0x00086e68 cmn r0, 1 |
| if (r0 == 1) {
0x00086e6c beq 0x86f24 | goto label_12;
| }
| label_13:
0x00086e70 mov r8, r4 | r8 = r4;
0x00086e74 b 0x86f8c | goto label_16;
| label_6:
0x00086e78 ldr r4, [pc, 0x154] | r4 = *(0x86fd0);
0x00086e7c add r4, pc, r4 | r4 = pc + r4;
0x00086e80 b 0x86d44 | goto label_0;
| label_7:
0x00086e84 ldr r4, [pc, 0x14c] | r4 = *(0x86fd4);
0x00086e88 add r4, pc, r4 | r4 = pc + r4;
0x00086e8c b 0x86d44 | goto label_0;
| label_11:
0x00086e90 mov r0, r5 | r0 = r5;
0x00086e94 bl 0x17378 | fgetc (r0);
0x00086e98 b 0x86e0c | goto label_1;
| label_15:
0x00086e9c mov r0, r5 | r0 = r5;
0x00086ea0 bl 0x17378 | fgetc (r0);
0x00086ea4 b 0x86e5c | goto label_2;
| label_14:
0x00086ea8 mov r1, r5 | r1 = r5;
0x00086eac bl 0x175e8 | ungetc (r0, r1);
0x00086eb0 mov r3, sl | r3 = sl;
0x00086eb4 mov r2, fp | r2 = fp;
0x00086eb8 ldr r1, [sp, 4] | r1 = format;
0x00086ebc mov r0, r5 | r0 = r5;
0x00086ec0 bl 0x17228 | r0 = fscanf (r0, r1, r2, r3);
0x00086ec4 cmp r0, 1 |
| if (r0 <= 1) {
0x00086ec8 ble 0x86f24 | goto label_12;
| }
0x00086ecc mov r0, fp | r0 = fp;
0x00086ed0 bl 0x17744 | strlen (r0);
0x00086ed4 str r0, [sp] | *(sp) = r0;
0x00086ed8 mov r0, sl | r0 = sl;
0x00086edc bl 0x17744 | strlen (r0);
0x00086ee0 ldr r3, [sp] | r3 = *(sp);
0x00086ee4 cmp r6, 0 |
0x00086ee8 mov r7, r0 | r7 = r0;
0x00086eec add r0, r3, r0 | r0 = r3 + r0;
| if (r6 != 0) {
0x00086ef0 bne 0x86f48 | goto label_17;
| }
0x00086ef4 add r6, r0, 2 | r6 += var_2h;
0x00086ef8 add r0, r0, 3 | r0 += size;
0x00086efc bl 0x17048 | r0 = malloc (r0);
| do {
0x00086f00 cmp r0, 0 |
0x00086f04 mov r8, r0 | r8 = r0;
| if (r0 != 0) {
0x00086f08 bne 0x86f60 | goto label_18;
| }
0x00086f0c cmp r4, 0 |
| if (r4 != 0) {
0x00086f10 beq 0x86f20 |
0x00086f14 mov r0, r4 | r0 = r4;
0x00086f18 bl 0x175a0 | free (r0);
0x00086f1c mov r4, r8 | r4 = r8;
| }
0x00086f20 mov r6, r4 | r6 = r4;
| label_12:
0x00086f24 mov r0, r5 | r0 = r5;
0x00086f28 bl 0x17138 | fclose (r0);
0x00086f2c cmp r6, 0 |
| if (r6 == 0) {
0x00086f30 beq 0x86fb4 | goto label_10;
| }
0x00086f34 mov r3, 0 | r3 = 0;
0x00086f38 strb r3, [r4, r6] | *((r4 + r6)) = r3;
| label_4:
0x00086f3c mov r0, sb | r0 = sb;
0x00086f40 bl 0x175a0 | free (r0);
0x00086f44 b 0x86f9c | goto label_19;
| label_17:
0x00086f48 add r1, r6, r0 | r1 = r6 + r0;
0x00086f4c add r6, r1, 2 | r6 += var_2h;
0x00086f50 mov r0, r4 | r0 = r4;
0x00086f54 add r1, r1, 3 | r1 += size;
0x00086f58 bl 0x16ee0 | realloc (r0, r1);
0x00086f5c b 0x86f00 |
| } while (1);
| label_18:
0x00086f60 ldr r3, [sp] | r3 = *(sp);
0x00086f64 sub r7, r6, r7 | r7 = r6 - r7;
0x00086f68 sub r0, r7, r3 | r0 = r7 - r3;
0x00086f6c sub r0, r0, 2 | r0 -= 2;
0x00086f70 mov r1, fp | r1 = fp;
0x00086f74 add r0, r8, r0 | r0 = r8 + r0;
0x00086f78 sub r7, r7, 1 | r7--;
0x00086f7c bl 0x170d8 | strcpy (r0, r1)
0x00086f80 mov r1, sl | r1 = sl;
0x00086f84 add r0, r8, r7 | r0 = r8 + r7;
0x00086f88 bl 0x170d8 | strcpy (r0, r1)
| label_16:
0x00086f8c mov r4, r8 | r4 = r8;
0x00086f90 b 0x86ddc | goto label_3;
| label_9:
0x00086f94 ldr r4, [pc, 0x40] | r4 = *(0x86fd8);
0x00086f98 add r4, pc, r4 | r4 = pc + r4;
| label_19:
0x00086f9c ldr r3, [pc, 0x3c] | r3 = *(0x86fdc);
0x00086fa0 add r3, pc, r3 | r3 = pc + r3;
0x00086fa4 str r4, [r3] | *(r3) = r4;
| label_5:
0x00086fa8 mov r0, r4 | r0 = r4;
0x00086fac add sp, sp, 0x74 |
0x00086fb0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_10:
0x00086fb4 ldr r4, [pc, 0x28] | r4 = *(0x86fe0);
0x00086fb8 add r4, pc, r4 | r4 = pc + r4;
0x00086fbc b 0x86f3c | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x68278 */
| #include <stdint.h>
|
; (fcn) sym.g_assertion_message () | void g_assertion_message (int32_t arg_60h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_40h;
| r0 = arg1;
| r1 = arg2;
0x00068278 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0006827c ldr r7, [pc, 0x1c8] | r7 = *(0x68448);
0x00068280 sub sp, sp, 0x40 |
0x00068284 ldr r6, [sp, 0x60] | r6 = *(arg_60h);
0x00068288 add r7, pc, r7 | r7 = pc + r7;
0x0006828c cmp r6, 0 |
0x00068290 mov r4, r0 | r4 = r0;
0x00068294 mov sl, r1 | sl = r1;
0x00068298 mov r8, r3 | r8 = r3;
| if (r6 != 0) {
0x0006829c ldreq r6, [pc, 0x1ac] | r6 = *(0x00068450);
| }
| if (r6 != 0) {
0x000682a0 addeq r6, pc, r6 | r6 = pc + r6;
| }
0x000682a4 mov r3, r2 | r3 = r2;
0x000682a8 ldr r2, [pc, 0x1a4] | r2 = *(0x68450);
0x000682ac add sb, sp, 0x20 | sb += var_20h;
0x000682b0 add r2, pc, r2 | r2 = pc + r2;
0x000682b4 mov r1, 0x20 | r1 = 0x20;
0x000682b8 mov r0, sb | r0 = sb;
0x000682bc bl 0x83be0 | g_snprintf ();
0x000682c0 cmp r4, 0 |
| if (r4 != 0) {
0x000682c4 bne 0x68434 | goto label_4;
| }
0x000682c8 ldr r4, [pc, 0x188] | r4 = *(0x68454);
0x000682cc add r4, pc, r4 | r4 = pc + r4;
0x000682d0 mov r1, r4 | r1 = r4;
| do {
| label_3:
0x000682d4 ldrb r3, [r8] | r3 = *(r8);
0x000682d8 cmp r3, 0 |
| if (r3 != 0) {
0x000682dc bne 0x683b8 | goto label_5;
| }
0x000682e0 ldr r3, [pc, 0x174] | r3 = *(0x68458);
0x000682e4 add r3, pc, r3 | r3 = pc + r3;
| label_0:
0x000682e8 ldr r2, [pc, 0x170] | r2 = *(0x6845c);
0x000682ec str r3, [sp, 0x10] | var_10h = r3;
0x000682f0 add r2, pc, r2 | r2 = pc + r2;
0x000682f4 ldr r3, [pc, 0x168] | r3 = *(0x68460);
0x000682f8 str r2, [sp, 0x14] | var_14h = r2;
0x000682fc ldr r2, [pc, 0x164] | r2 = *(0x68464);
0x00068300 add r3, pc, r3 | r3 = pc + r3;
0x00068304 mov r5, 0 | r5 = 0;
0x00068308 add r2, pc, r2 | r2 = pc + r2;
0x0006830c str r3, [sp, 8] | var_8h = r3;
0x00068310 stm sp, {r3, sb} | *(sp) = r3;
| *((sp + 4)) = sb;
0x00068314 mov r0, r4 | r0 = r4;
0x00068318 mov r3, sl | r3 = sl;
0x0006831c str r5, [sp, 0x1c] | var_1ch = r5;
0x00068320 str r6, [sp, 0x18] | var_18h = r6;
0x00068324 str r8, [sp, 0xc] | var_ch = r8;
0x00068328 bl 0x6078c | r0 = g_strconcat ();
0x0006832c mov r1, r0 | r1 = r0;
0x00068330 mov r4, r0 | r4 = r0;
0x00068334 ldr r0, [pc, 0x130] | r0 = *(0x68468);
0x00068338 add r0, pc, r0 | r0 = pc + r0;
0x0006833c bl 0x4e594 | g_printerr ();
0x00068340 ldr r3, [pc, 0x128] | r3 = *(0x6846c);
0x00068344 add r3, pc, r3 | r3 = pc + r3;
0x00068348 ldr r2, [r3, 0x30] | r2 = *(0x6849c);
0x0006834c cmp r2, r5 |
| if (r2 == r5) {
0x00068350 bne 0x6836c |
0x00068354 ldr r2, [r3, 0x44] | r2 = *((r3 + 0x44));
0x00068358 cmp r2, r5 |
| if (r2 != r5) {
0x0006835c bne 0x6836c | goto label_6;
| }
0x00068360 ldr r3, [r3, 0x3c] | r3 = *((r3 + 0x3c));
0x00068364 cmp r3, r5 |
| if (r3 == r5) {
0x00068368 beq 0x683c4 | goto label_7;
| }
| }
| label_6:
0x0006836c mov r3, 0 | r3 = 0;
0x00068370 mov r2, r3 | r2 = r3;
0x00068374 mov r1, r4 | r1 = r4;
0x00068378 mov r0, 9 | r0 = 9;
0x0006837c str r5, [sp] | *(sp) = r5;
| label_1:
0x00068380 bl 0x66424 | fcn_00066424 (r0, r1, r2);
0x00068384 ldr r3, [pc, 0xe8] |
0x00068388 add r3, pc, r3 | r3 = pc + r3;
0x0006838c ldr r3, [r3, 0x30] | r3 = *(0x684a0);
0x00068390 cmp r3, 0 |
| if (r3 == 0) {
0x00068394 beq 0x683d8 | goto label_8;
| }
0x00068398 mov r0, r4 | r0 = r4;
0x0006839c bl 0x4b940 | g_free ();
0x000683a0 bl 0x65564 | g_test_fail ();
0x000683a4 add sp, sp, 0x40 |
0x000683a8 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_2:
0x000683ac ldr r1, [pc, 0xc4] | r1 = "back__.";
0x000683b0 add r1, pc, r1 | r1 = pc + r1;
0x000683b4 b 0x682d4 |
| } while (1);
| label_5:
0x000683b8 ldr r3, [pc, 0xbc] | r3 = *(0x68478);
0x000683bc add r3, pc, r3 | r3 = pc + r3;
0x000683c0 b 0x682e8 | goto label_0;
| label_7:
0x000683c4 str r3, [sp] | *(sp) = r3;
0x000683c8 mov r2, r3 | r2 = r3;
0x000683cc mov r1, r4 | r1 = r4;
0x000683d0 mov r0, 1 | r0 = 1;
0x000683d4 b 0x68380 | goto label_1;
| label_8:
0x000683d8 ldr r3, [pc, 0xa0] | r3 = *(0x6847c);
0x000683dc ldr r5, [r7, r3] | r5 = *((r7 + r3));
0x000683e0 ldr r0, [r5] | r0 = *(r5);
0x000683e4 cmp r0, 0 |
| if (r0 != 0) {
0x000683e8 beq 0x683f0 |
0x000683ec bl 0x175a0 | free (r0);
| }
0x000683f0 mov r0, r4 | r0 = r4;
0x000683f4 bl 0x17744 | r0 = strlen (r0);
0x000683f8 add r0, r0, 1 | r0++;
0x000683fc bl 0x17048 | malloc (r0);
0x00068400 mov r1, r4 | r1 = r4;
0x00068404 str r0, [r5] | *(r5) = r0;
0x00068408 bl 0x170d8 | strcpy (r0, r1)
0x0006840c mov r0, r4 | r0 = r4;
0x00068410 bl 0x4b940 | g_free ();
0x00068414 ldr r3, [pc, 0x68] |
0x00068418 add r3, pc, r3 | r3 = pc + r3;
0x0006841c ldr r3, [r3, 0x44] | r3 = *(0x684c4);
0x00068420 cmp r3, 0 |
| if (r3 != 0) {
0x00068424 beq 0x68430 |
0x00068428 mov r0, 1 | r0 = 1;
0x0006842c bl 0x16f10 | r0 = exit (r0);
| }
0x00068430 bl 0x16ed4 | abort ();
| label_4:
0x00068434 ldrb r3, [r4] | r3 = *(r4);
0x00068438 cmp r3, 0 |
| if (r3 != 0) {
0x0006843c bne 0x683ac | goto label_2;
| }
0x00068440 ldr r1, [pc, 0x40] | r1 = "ispatched_without_callbackYou_must_call_g_source_set_callback__.";
0x00068444 add r1, pc, r1 | r1 = pc + r1;
0x00068448 b 0x682d4 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x6848c */
| #include <stdint.h>
|
; (fcn) sym.g_assertion_message_expr () | void g_assertion_message_expr (int32_t arg_10h, int32_t arg1, int32_t arg2) {
| int32_t var_0h_2;
| int32_t var_ch;
| int32_t var_0h;
| r0 = arg1;
| r1 = arg2;
0x0006848c push {r0, r1, r7, lr} |
0x00068490 mov r6, r1 | r6 = r1;
0x00068494 ldr r1, [sp, 0x10] | r1 = *(arg_10h);
0x00068498 mov r5, r0 | r5 = r0;
0x0006849c cmp r1, 0 |
0x000684a0 mov r7, r2 | r7 = r2;
0x000684a4 mov r8, r3 | r8 = r3;
| if (r1 != 0) {
0x000684a8 bne 0x684f8 | goto label_0;
| }
0x000684ac ldr r0, [pc, 0x64] | r0 = *(0x68514);
0x000684b0 add r0, pc, r0 | r0 = pc + r0;
0x000684b4 bl 0x605d8 | g_strdup ();
| do {
0x000684b8 mov r3, r8 | r3 = r8;
0x000684bc mov r4, r0 | r4 = r0;
0x000684c0 str r0, [sp] | *(sp) = r0;
0x000684c4 mov r2, r7 | r2 = r7;
0x000684c8 mov r1, r6 | r1 = r6;
0x000684cc mov r0, r5 | r0 = r5;
0x000684d0 bl 0x68278 | g_assertion_message ();
0x000684d4 mov r0, r4 | r0 = r4;
0x000684d8 bl 0x4b940 | g_free ();
0x000684dc ldr r3, [pc, 0x38] |
0x000684e0 add r3, pc, r3 | r3 = pc + r3;
0x000684e4 ldr r3, [r3, 0x44] | r3 = *(0x6855c);
0x000684e8 cmp r3, 0 |
| if (r3 == 0) {
0x000684ec beq 0x68514 | goto label_1;
| }
0x000684f0 mov r0, 1 | r0 = 1;
0x000684f4 bl 0x16f10 | exit (r0);
| label_0:
0x000684f8 ldr r2, [pc, 0x20] | r2 = "meout_add_full";
0x000684fc ldr r0, [pc, 0x20] | r0 = *(0x68520);
0x00068500 mov r3, 0 | r3 = 0;
0x00068504 add r2, pc, r2 | r2 = pc + r2;
0x00068508 add r0, pc, r0 | r0 = pc + r0;
0x0006850c bl 0x6078c | g_strconcat ();
0x00068510 b 0x684b8 |
| } while (1);
| label_1:
0x00068514 bl 0x16ed4 | abort ();
| if (r3 != 0) {
0x00068518 andeq sb, r2, r6, ror 2 | sb = r2 & (r6 >>> 2);
| }
| if (r3 != 0) {
0x0006851c andeq pc, r8, r0, ror r7 | pc = r8 & (r0 >>> r7);
| }
0x00068520 ldrdeq sl, fp, [r2], -sl | __asm ("ldrdeq sl, fp, [r2], -sl");
0x00068524 strdeq sp, lr, [r2], -sb | __asm ("strdeq sp, lr, [r2], -sb");
0x00068528 cmn r1, 1 |
0x0006852c push {r0, r1, r2, lr} |
| if (r1 != 1) {
0x00068530 beq 0x68560 |
0x00068534 ldr r3, [r2, 0xc] | r3 = *((r2 + 0xc));
0x00068538 str r1, [r2, 8] | *((r2 + 8)) = r1;
0x0006853c cmp r3, 0 |
| if (r3 != 0) {
0x00068540 bne 0x68594 | goto label_2;
| }
0x00068544 ldr r3, [r2, 0x18] | r3 = *((r2 + 0x18));
0x00068548 cmp r3, 0 |
| if (r3 != 0) {
0x0006854c bne 0x68594 | goto label_2;
| }
0x00068550 ldr r0, [r2, 4] | r0 = *((r2 + 4));
0x00068554 add sp, sp, 0xc |
0x00068558 pop {lr} |
0x0006855c b 0x471f8 | void (*0x471f8)() ();
| }
0x00068560 ldr r3, [pc, 0x34] | r3 = *(0x68598);
0x00068564 ldr r1, [pc, 0x34] | r1 = *(0x6859c);
0x00068568 add r3, pc, r3 | r3 = pc + r3;
0x0006856c str r3, [sp] | *(sp) = r3;
0x00068570 ldr r3, [pc, 0x2c] |
0x00068574 ldr r0, [pc, 0x2c] | r0 = *(0x685a4);
0x00068578 add r3, pc, r3 | r3 = pc + r3;
0x0006857c add r3, r3, 0x178 | r3 = 0x68718;
0x00068580 add r3, r3, 2 | r3 += 2;
0x00068584 ldr r2, [pc, 0x20] | r2 = *(0x685a8);
0x00068588 add r1, pc, r1 | r1 = pc + r1;
0x0006858c add r0, pc, r0 | r0 = pc + r0;
0x00068590 bl 0x6848c | g_assertion_message_expr ();
| label_2:
0x00068594 add sp, sp, 0xc |
0x00068598 pop {pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x68830 */
| #include <stdint.h>
|
; (fcn) sym.g_assertion_message_cmpnum () | void g_assertion_message_cmpnum (int32_t arg_40h, int32_t arg_48h, int32_t arg_50h, int32_t arg_58h, int32_t arg_60h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_10h_2;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x00068830 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00068834 sub sp, sp, 0x1c |
0x00068838 mov sl, r3 | sl = r3;
0x0006883c ldrb r3, [sp, 0x60] | r3 = *(arg_60h);
0x00068840 mov r5, r0 | r5 = r0;
0x00068844 cmp r3, 0x69 |
0x00068848 mov r8, r1 | r8 = r1;
0x0006884c mov sb, r2 | sb = r2;
0x00068850 ldr r4, [sp, 0x40] | r4 = *(arg_40h);
0x00068854 ldrd r0, r1, [sp, 0x48] | __asm ("ldrd r0, r1, [arg_48h]");
0x00068858 ldr fp, [sp, 0x50] | fp = *(arg_50h);
0x0006885c ldrd r6, r7, [sp, 0x58] | __asm ("ldrd r6, r7, [arg_58h]");
| if (r3 != 0x69) {
0x00068860 beq 0x6889c |
0x00068864 cmp r3, 0x78 |
| if (r3 == 0x78) {
0x00068868 beq 0x68900 | goto label_0;
| }
0x0006886c cmp r3, 0x66 |
| if (r3 == 0x66) {
0x00068870 movne r4, 0 | r4 = 0;
| }
| if (r3 != 0x66) {
0x00068874 bne 0x688d8 | goto label_1;
| }
0x00068878 mov r2, r0 | r2 = r0;
0x0006887c ldr r0, [pc, 0xb4] | r0 = *(0x68934);
0x00068880 mov r3, r1 | r3 = r1;
0x00068884 strd r6, r7, [sp, 8] | __asm ("strd r6, r7, [var_8h]");
0x00068888 str fp, [sp] | *(sp) = fp;
0x0006888c mov r1, r4 | r1 = r4;
0x00068890 add r0, pc, r0 | r0 = pc + r0;
0x00068894 bl 0x60764 | g_strdup_printf ();
0x00068898 b 0x688d4 | goto label_2;
| }
0x0006889c bl 0x87e48 | r0 = fcn_00087e48 (r0, r1);
0x000688a0 mov r2, r0 | r2 = r0;
0x000688a4 mov r3, r1 | r3 = r1;
0x000688a8 mov r0, r6 | r0 = r6;
0x000688ac mov r1, r7 | r1 = r7;
0x000688b0 strd r2, r3, [sp, 0x10] | __asm ("strd r2, r3, [var_10h]");
0x000688b4 bl 0x87e48 | fcn_00087e48 (r0, r1);
0x000688b8 ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
0x000688bc str fp, [sp] | *(sp) = fp;
0x000688c0 strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [var_8h]");
0x000688c4 ldr r0, [pc, 0x70] | r0 = *(0x68938);
0x000688c8 mov r1, r4 | r1 = r4;
0x000688cc add r0, pc, r0 | r0 = pc + r0;
| do {
0x000688d0 bl 0x60764 | r0 = g_strdup_printf ();
| label_2:
0x000688d4 mov r4, r0 | r4 = r0;
| label_1:
0x000688d8 mov r0, r5 | r0 = r5;
0x000688dc str r4, [sp] | *(sp) = r4;
0x000688e0 mov r3, sl | r3 = sl;
0x000688e4 mov r2, sb | r2 = sb;
0x000688e8 mov r1, r8 | r1 = r8;
0x000688ec bl 0x68278 | g_assertion_message ();
0x000688f0 mov r0, r4 | r0 = r4;
0x000688f4 add sp, sp, 0x1c |
0x000688f8 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000688fc b 0x4b940 | void (*0x4b940)() ();
| label_0:
0x00068900 bl 0x87e8c | r0 = fcn_00087e8c (r0, r1);
0x00068904 mov r2, r0 | r2 = r0;
0x00068908 mov r3, r1 | r3 = r1;
0x0006890c mov r0, r6 | r0 = r6;
0x00068910 mov r1, r7 | r1 = r7;
0x00068914 strd r2, r3, [sp, 0x10] | __asm ("strd r2, r3, [var_10h]");
0x00068918 bl 0x87e8c | fcn_00087e8c (r0, r1);
0x0006891c str fp, [sp] | *(sp) = fp;
0x00068920 ldrd r2, r3, [sp, 0x10] | __asm ("ldrd r2, r3, [var_10h]");
0x00068924 strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [var_8h]");
0x00068928 ldr r0, [pc, 0x10] | r0 = *(0x6893c);
0x0006892c mov r1, r4 | r1 = r4;
0x00068930 add r0, pc, r0 | r0 = pc + r0;
0x00068934 b 0x688d0 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x68a70 */
| #include <stdint.h>
|
; (fcn) sym.g_assertion_message_cmpstr () | void g_assertion_message_cmpstr (int32_t arg_38h, int32_t arg_3ch, int32_t arg_40h, int32_t arg_44h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00068a70 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00068a74 sub sp, sp, 0x14 |
0x00068a78 mov fp, r3 |
0x00068a7c ldr r3, [sp, 0x38] | r3 = *(arg_38h);
0x00068a80 ldr r5, [sp, 0x3c] | r5 = *(arg_3ch);
0x00068a84 str r3, [sp, 8] | var_8h = r3;
0x00068a88 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x00068a8c cmp r5, 0 |
0x00068a90 mov r8, r0 | r8 = r0;
0x00068a94 mov sb, r1 | sb = r1;
0x00068a98 mov sl, r2 | sl = r2;
0x00068a9c str r3, [sp, 0xc] | var_ch = r3;
0x00068aa0 ldr r4, [sp, 0x44] | r4 = *(arg_44h);
| if (r5 == 0) {
0x00068aa4 beq 0x68b70 | goto label_1;
| }
0x00068aa8 mov r1, 0 | r1 = 0;
0x00068aac mov r0, r5 | r0 = r5;
0x00068ab0 bl 0x61c2c | g_strescape ();
0x00068ab4 ldr r2, [pc, 0xd4] | r2 = *(0x68b8c);
0x00068ab8 mov r3, 0 | r3 = 0;
0x00068abc add r2, pc, r2 | r2 = pc + r2;
0x00068ac0 mov r5, r0 | r5 = r0;
0x00068ac4 mov r1, r0 | r1 = r0;
0x00068ac8 mov r0, r2 | r0 = r2;
0x00068acc bl 0x6078c | g_strconcat ();
| do {
0x00068ad0 cmp r4, 0 |
0x00068ad4 mov r7, r0 | r7 = r0;
| if (r4 == 0) {
0x00068ad8 beq 0x68b80 | goto label_2;
| }
0x00068adc mov r1, 0 | r1 = 0;
0x00068ae0 mov r0, r4 | r0 = r4;
0x00068ae4 bl 0x61c2c | g_strescape ();
0x00068ae8 ldr r2, [pc, 0xa4] | r2 = *(0x68b90);
0x00068aec mov r3, 0 | r3 = 0;
0x00068af0 add r2, pc, r2 | r2 = pc + r2;
0x00068af4 mov r4, r0 | r4 = r0;
0x00068af8 mov r1, r0 | r1 = r0;
0x00068afc mov r0, r2 | r0 = r2;
0x00068b00 bl 0x6078c | r0 = g_strconcat ();
| label_0:
0x00068b04 mov r6, r0 | r6 = r0;
0x00068b08 mov r0, r5 | r0 = r5;
0x00068b0c bl 0x4b940 | g_free ();
0x00068b10 mov r0, r4 | r0 = r4;
0x00068b14 bl 0x4b940 | g_free ();
0x00068b18 ldr r0, [pc, 0x78] | r0 = *(0x68b94);
0x00068b1c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00068b20 mov r2, r7 | r2 = r7;
0x00068b24 ldr r1, [sp, 8] | r1 = var_8h;
0x00068b28 str r6, [sp] | *(sp) = r6;
0x00068b2c add r0, pc, r0 | r0 = pc + r0;
0x00068b30 bl 0x60764 | r0 = g_strdup_printf ();
0x00068b34 mov r4, r0 | r4 = r0;
0x00068b38 mov r0, r7 | r0 = r7;
0x00068b3c bl 0x4b940 | g_free ();
0x00068b40 mov r0, r6 | r0 = r6;
0x00068b44 bl 0x4b940 | g_free ();
0x00068b48 mov r0, r8 | r0 = r8;
0x00068b4c str r4, [sp] | *(sp) = r4;
0x00068b50 mov r3, fp | r3 = fp;
0x00068b54 mov r2, sl | r2 = sl;
0x00068b58 mov r1, sb | r1 = sb;
0x00068b5c bl 0x68278 | g_assertion_message ();
0x00068b60 mov r0, r4 | r0 = r4;
0x00068b64 add sp, sp, 0x14 |
0x00068b68 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00068b6c b 0x4b940 | void (*0x4b940)() ();
| label_1:
0x00068b70 ldr r0, [pc, 0x24] | r0 = *(0x68b98);
0x00068b74 add r0, pc, r0 | r0 = pc + r0;
0x00068b78 bl 0x605d8 | g_strdup ();
0x00068b7c b 0x68ad0 |
| } while (1);
| label_2:
0x00068b80 ldr r0, [pc, 0x18] | r0 = *(0x68b9c);
0x00068b84 add r0, pc, r0 | r0 = pc + r0;
0x00068b88 bl 0x605d8 | g_strdup ();
0x00068b8c b 0x68b04 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x68ba4 */
| #include <stdint.h>
|
; (fcn) sym.g_assertion_message_error () | void g_assertion_message_error (int32_t arg_38h, int32_t arg_3ch, int32_t arg_40h, int32_t arg_44h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x00068ba4 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00068ba8 mov r7, r0 | r7 = r0;
0x00068bac sub sp, sp, 0x14 |
0x00068bb0 ldr r0, [pc, 0xe4] | r0 = *(0x68c98);
0x00068bb4 mov sl, r3 | sl = r3;
0x00068bb8 ldr r3, [sp, 0x40] | r3 = *(arg_40h);
0x00068bbc add r0, pc, r0 | r0 = pc + r0;
0x00068bc0 str r3, [sp, 0xc] | var_ch = r3;
0x00068bc4 mov r8, r1 | r8 = r1;
0x00068bc8 mov sb, r2 | sb = r2;
0x00068bcc ldr r6, [sp, 0x38] | r6 = *(arg_38h);
0x00068bd0 ldr r5, [sp, 0x3c] | r5 = *(arg_3ch);
0x00068bd4 ldr fp, [sp, 0x44] | fp = *(arg_44h);
0x00068bd8 bl 0x63968 | g_string_new ();
0x00068bdc ldr r3, [sp, 0xc] | r3 = var_ch;
0x00068be0 cmp r3, 0 |
0x00068be4 mov r4, r0 | r4 = r0;
| if (r3 == 0) {
0x00068be8 beq 0x68c70 | goto label_1;
| }
0x00068bec mov r0, r3 | r0 = r3;
0x00068bf0 bl 0x53cd8 | g_quark_to_string ();
0x00068bf4 ldr r1, [pc, 0xa4] | r1 = *(0x68c9c);
0x00068bf8 str fp, [sp] | *(sp) = fp;
0x00068bfc mov r2, r6 | r2 = r6;
0x00068c00 add r1, pc, r1 | r1 = pc + r1;
0x00068c04 mov r3, r0 | r3 = r0;
0x00068c08 mov r0, r4 | r0 = r4;
0x00068c0c bl 0x64580 | g_string_append_printf ();
| do {
0x00068c10 cmp r5, 0 |
| if (r5 == 0) {
0x00068c14 beq 0x68c84 | goto label_2;
| }
0x00068c18 ldr r0, [r5] | r0 = *(r5);
0x00068c1c bl 0x53cd8 | g_quark_to_string ();
0x00068c20 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00068c24 ldr r1, [pc, 0x78] | r1 = *(0x68ca0);
0x00068c28 str r3, [sp] | *(sp) = r3;
0x00068c2c add r1, pc, r1 | r1 = pc + r1;
0x00068c30 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00068c34 mov r3, r0 | r3 = r0;
0x00068c38 mov r0, r4 | r0 = r4;
0x00068c3c bl 0x64580 | g_string_append_printf ();
| label_0:
0x00068c40 ldr r3, [r4] | r3 = *(r4);
0x00068c44 mov r1, r8 | r1 = r8;
0x00068c48 str r3, [sp] | *(sp) = r3;
0x00068c4c mov r0, r7 | r0 = r7;
0x00068c50 mov r3, sl | r3 = sl;
0x00068c54 mov r2, sb | r2 = sb;
0x00068c58 bl 0x68278 | g_assertion_message ();
0x00068c5c mov r1, 1 | r1 = 1;
0x00068c60 mov r0, r4 | r0 = r4;
0x00068c64 add sp, sp, 0x14 |
0x00068c68 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00068c6c b 0x6349c | void (*0x6349c)() ();
| label_1:
0x00068c70 ldr r1, [pc, 0x30] | r1 = *(0x68ca4);
0x00068c74 mov r2, r6 | r2 = r6;
0x00068c78 add r1, pc, r1 | r1 = pc + r1;
0x00068c7c bl 0x64580 | g_string_append_printf ();
0x00068c80 b 0x68c10 |
| } while (1);
| label_2:
0x00068c84 ldr r1, [pc, 0x20] | r1 = "array_foreach";
0x00068c88 mov r2, r6 | r2 = r6;
0x00068c8c add r1, pc, r1 | r1 = pc + r1;
0x00068c90 mov r0, r4 | r0 = r4;
0x00068c94 bl 0x64580 | g_string_append_printf ();
0x00068c98 b 0x68c40 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x352bc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.g_dpgettext () | void g_dpgettext (int32_t arg1, int32_t arg2) {
| int32_t var_1ch_2;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x000352bc push {r4, r5, r6, r7, r8, sb, fp, lr} |
0x000352c0 add fp, sp, 0x1c |
0x000352c4 mov r6, r1 | r6 = r1;
0x000352c8 mov r7, r0 | r7 = r0;
0x000352cc mov r5, r2 | r5 = r2;
0x000352d0 bl 0x3527c | r0 = g_dgettext ();
0x000352d4 cmp r6, r0 |
0x000352d8 mov r4, r0 | r4 = r0;
| if (r6 == r0) {
0x000352dc bne 0x3534c |
0x000352e0 cmp r5, 0 |
| if (r5 == 0) {
0x000352e4 addne r4, r0, r5 | r4 = r0 + r5;
| }
| if (r5 != 0) {
0x000352e8 bne 0x3534c | goto label_0;
| }
0x000352ec mov r1, 0x7c | r1 = 0x7c;
0x000352f0 bl 0x17240 | r0 = strchr (r0, r1);
0x000352f4 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x000352f8 beq 0x3534c | goto label_0;
| }
0x000352fc mov r0, r4 | r0 = r4;
0x00035300 bl 0x17744 | strlen (r0);
0x00035304 mov r1, r4 | r1 = r4;
0x00035308 sub r4, r6, r4 | r4 = r6 - r4;
0x0003530c add r0, r0, 0xf | r0 += 0xf;
0x00035310 bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x00035314 sub sp, sp, r0 |
0x00035318 mov r3, sp | r3 = sp;
0x0003531c lsr r8, r3, 3 | r8 = r3 >> 3;
0x00035320 lsl r5, r8, 3 | r5 = r8 << 3;
0x00035324 mov r0, r5 | r0 = r5;
0x00035328 bl 0x170d8 | strcpy (r0, r1)
0x0003532c mov r3, 4 | r3 = 4;
0x00035330 strb r3, [r4, r8, lsl 3] | offset_0 = r8 << 3;
| *((r4 + offset_0)) = r3;
0x00035334 mov r1, r5 | r1 = r5;
0x00035338 mov r0, r7 | r0 = r7;
0x0003533c bl 0x3527c | r0 = g_dgettext ();
0x00035340 cmp r5, r0 |
0x00035344 mov r4, r0 | r4 = r0;
| if (r5 == r0) {
0x00035348 addeq r4, r6, 1 | r4 = r6 + 1;
| goto label_0;
| }
| }
| label_0:
0x0003534c mov r0, r4 | r0 = r4;
0x00035350 sub sp, fp, 0x1c |
0x00035354 pop {r4, r5, r6, r7, r8, sb, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x35384 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.g_dpgettext2 () | void g_dpgettext2 (int32_t arg1, char * s) {
| int32_t var_28h;
| int32_t var_20h_2;
| int32_t var_20h;
| r0 = arg1;
| r1 = s;
0x00035384 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00035388 add fp, sp, 0x20 |
0x0003538c sub sp, sp, 0xc |
0x00035390 str r0, [fp, -0x28] | var_28h = r0;
0x00035394 mov r0, r1 | r0 = r1;
0x00035398 mov r6, r2 | r6 = r2;
0x0003539c mov sl, r1 | sl = r1;
0x000353a0 bl 0x17744 | r0 = strlen (r0);
0x000353a4 mov r5, r0 | r5 = r0;
0x000353a8 add r8, r0, 1 | r8 = r0 + 1;
0x000353ac mov r0, r6 | r0 = r6;
0x000353b0 bl 0x17744 | strlen (r0);
0x000353b4 mov r2, r5 | r2 = r5;
0x000353b8 mov r1, sl | r1 = sl;
0x000353bc add sb, r0, 1 | sb = r0 + 1;
0x000353c0 add r3, r8, sb | r3 = r8 + sb;
0x000353c4 add r3, r3, 0xe | r3 += 0xe;
0x000353c8 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x000353cc sub sp, sp, r3 |
0x000353d0 mov r3, sp | r3 = sp;
0x000353d4 lsr r7, r3, 3 | r7 = r3 >> 3;
0x000353d8 lsl r4, r7, 3 | r4 = r7 << 3;
0x000353dc mov r0, r4 | r0 = r4;
0x000353e0 bl 0x176fc | memcpy (r0, r1, r2);
0x000353e4 mov r2, 4 | r2 = 4;
0x000353e8 strb r2, [r5, r7, lsl 3] | offset_0 = r7 << 3;
| *((r5 + offset_0)) = r2;
0x000353ec mov r1, r6 | r1 = r6;
0x000353f0 mov r2, sb | r2 = sb;
0x000353f4 add r0, r4, r8 | r0 = r4 + r8;
0x000353f8 bl 0x176fc | memcpy (r0, r1, r2);
0x000353fc mov r1, r4 | r1 = r4;
0x00035400 ldr r0, [fp, -0x28] | r0 = var_28h;
0x00035404 bl 0x3527c | r0 = g_dgettext ();
0x00035408 cmp r4, r0 |
| if (r4 == r0) {
0x0003540c bne 0x3542c |
0x00035410 mov r2, 0x7c | r2 = 0x7c;
0x00035414 mov r1, r0 | r1 = r0;
0x00035418 strb r2, [r5, r7, lsl 3] | offset_1 = r7 << 3;
| *((r5 + offset_1)) = r2;
0x0003541c ldr r0, [fp, -0x28] | r0 = var_28h;
0x00035420 bl 0x3527c | r0 = g_dgettext ();
0x00035424 cmp r4, r0 |
| if (r4 == r0) {
0x00035428 moveq r0, r6 | r0 = r6;
| goto label_0;
| }
| }
| label_0:
0x0003542c sub sp, fp, 0x20 |
0x00035430 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/libglib-2.0.so.0.5600.4 @ 0x5ac24 */
| #include <stdint.h>
|
; (fcn) sym.g_scanner_unexp_token () | void g_scanner_unexp_token (int32_t arg_40h, char * s, char * arg_48h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_1ch;
| r0 = arg1;
| r1 = arg2;
0x0005ac24 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005ac28 mov fp, r3 |
0x0005ac2c ldr r3, [pc, 0xa78] | r3 = *(0x5b6a8);
0x0005ac30 sub sp, sp, 0x1c |
0x0005ac34 subs r6, r0, 0 | r6 -= arg_40h;
0x0005ac38 mov r4, r1 | r4 = r1;
0x0005ac3c str r2, [sp, 0xc] | var_ch = r2;
0x0005ac40 add r3, pc, r3 | r3 = pc + r3;
0x0005ac44 ldr r2, [sp, 0x40] | r2 = *(arg_40h);
0x0005ac48 ldr sb, [sp, 0x44] | sb = *(s);
0x0005ac4c ldr r1, [sp, 0x48] | r1 = *(arg_48h);
| if (r6 == arg_40h) {
0x0005ac50 beq 0x5ad08 | goto label_26;
| }
0x0005ac54 cmp r1, 0 |
| if (r1 != 0) {
0x0005ac58 bne 0x5ad30 | goto label_27;
| }
0x0005ac5c ldr r1, [pc, 0xa4c] | r1 = *(0x5b6ac);
| do {
0x0005ac60 ldr sl, [r3, r1] | sl = *((r3 + r1));
0x0005ac64 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005ac68 cmp r3, 0 |
| if (r3 != 0) {
0x0005ac6c ldreq r3, [pc, 0xa40] | r3 = *((pc + 0xa40));
| }
| if (r3 != 0) {
0x0005ac70 addeq r3, pc, r3 | r3 = pc + r3;
| }
| if (r3 != 0) {
0x0005ac74 streq r3, [sp, 0xc] | var_ch = r3;
| }
0x0005ac78 cmp fp, 0 |
| if (fp != 0) {
0x0005ac7c ldreq fp, [pc, 0xa34] | fp = *((pc + 0xa34));
| }
| if (fp != 0) {
0x0005ac80 addeq fp, pc, fp |
| }
0x0005ac84 mov r0, 0x39 | r0 = 0x39;
0x0005ac88 str r2, [sp, 0x14] | var_14h = r2;
0x0005ac8c bl 0x4b814 | r0 = g_malloc ();
0x0005ac90 mov r7, r0 | r7 = r0;
0x0005ac94 mov r0, 0x41 | r0 = 0x41;
0x0005ac98 bl 0x4b814 | g_malloc ();
0x0005ac9c ldr r1, [pc, 0xa18] | r1 = *(0x5b6b8);
0x0005aca0 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0005aca4 str r1, [sp, 0x10] | var_10h = r1;
0x0005aca8 cmp r3, r1 |
0x0005acac mov r8, r0 | r8 = r0;
| if (r3 == r1) {
0x0005acb0 beq 0x5b1dc | goto label_28;
| }
0x0005acb4 ldr r2, [sp, 0x14] | r2 = var_14h;
| if (r3 > r1) {
0x0005acb8 bhi 0x5ad54 | goto label_29;
| }
0x0005acbc sub r1, r1, 6 | r1 -= 6;
0x0005acc0 cmp r3, r1 |
| if (r3 == r1) {
0x0005acc4 beq 0x5b080 | goto label_30;
| }
| if (r3 > r1) {
0x0005acc8 bhi 0x5ad38 | goto label_31;
| }
0x0005accc cmp r3, 0 |
| if (r3 == 0) {
0x0005acd0 beq 0x5aee0 | goto label_32;
| }
0x0005acd4 cmp r3, 0x100 |
| if (r3 != 0x100) {
0x0005acd8 bne 0x5ad7c | goto label_33;
| }
0x0005acdc mov r3, 0 | r3 = 0;
0x0005ace0 str r3, [sp] | *(sp) = r3;
0x0005ace4 ldr r3, [pc, 0x9d4] |
0x0005ace8 ldr r1, [pc, 0x9d4] | r1 = *(0x5b6c0);
0x0005acec ldr r0, [pc, 0x9d4] | r0 = *(0x5b6c4);
0x0005acf0 add r3, pc, r3 | r3 = pc + r3;
0x0005acf4 add r3, r3, 0x1d8 | r3 = 0x5b894;
0x0005acf8 ldr r2, [pc, 0x9cc] | r2 = *(0x5b6c8);
0x0005acfc add r1, pc, r1 | r1 = pc + r1;
0x0005ad00 add r0, pc, r0 | r0 = pc + r0;
0x0005ad04 bl 0x6848c | g_assertion_message_expr ();
| label_26:
0x0005ad08 ldr r1, [pc, 0x9c0] |
0x0005ad0c ldr r2, [pc, 0x9c0] | r2 = *(0x5b6d0);
0x0005ad10 ldr r0, [pc, 0x9c0] | r0 = *(0x5b6d4);
0x0005ad14 add r1, pc, r1 | r1 = pc + r1;
0x0005ad18 add r2, pc, r2 | r2 = pc + r2;
0x0005ad1c add r1, r1, 0x1d8 | r1 = 0x5b8a4;
0x0005ad20 add r0, pc, r0 | r0 = pc + r0;
0x0005ad24 add sp, sp, 0x1c |
0x0005ad28 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005ad2c b 0x4d3f0 | void (*0x4d3f0)() ();
| label_27:
0x0005ad30 ldr r1, [pc, 0x9a4] | r1 = *(0x5b6d8);
0x0005ad34 b 0x5ac60 |
| } while (1);
| label_31:
0x0005ad38 ldr r2, [pc, 0x9a0] | r2 = *(0x5b6dc);
0x0005ad3c cmp r3, r2 |
| if (r3 != r2) {
0x0005ad40 bne 0x5b19c | goto label_34;
| }
0x0005ad44 ldr r2, [pc, 0x998] | r2 = *(0x5b6e0);
0x0005ad48 ldrb r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x0005ad4c add r2, pc, r2 | r2 = pc + r2;
0x0005ad50 b 0x5add4 | goto label_3;
| label_29:
0x0005ad54 cmp r3, 0x10c |
| if (r3 >= 0x10c) {
0x0005ad58 bhs 0x5aec0 | goto label_35;
| }
0x0005ad5c ldr r1, [pc, 0x984] | r1 = *(0x5b6e4);
0x0005ad60 cmp r3, r1 |
| if (r3 >= r1) {
0x0005ad64 bhs 0x5b144 | goto label_36;
| }
0x0005ad68 cmp r3, 0x108 |
| if (r3 == 0x108) {
0x0005ad6c beq 0x5b1fc | goto label_37;
| }
0x0005ad70 sub r1, r1, 1 | r1--;
0x0005ad74 cmp r3, r1 |
| if (r3 == r1) {
0x0005ad78 beq 0x5afec | goto label_38;
| }
| do {
| label_33:
0x0005ad7c sub r1, r3, 1 | r1 = r3 - 1;
0x0005ad80 cmp r1, 0xfe |
| if (r1 > 0xfe) {
0x0005ad84 bhi 0x5afd4 | goto label_39;
| }
0x0005ad88 sub r2, r3, 0x20 | r2 = r3 - 0x20;
0x0005ad8c cmp r2, 0x5e |
| if (r2 >= 0x5e) {
0x0005ad90 bls 0x5adcc |
0x0005ad94 ldr r5, [r6, 0x14] | r5 = *((r6 + 0x14));
0x0005ad98 mov r1, r3 | r1 = r3;
0x0005ad9c ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0005ada0 str r3, [sp, 0x14] | var_14h = r3;
0x0005ada4 bl 0x17240 | strchr (r0, r1);
0x0005ada8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005adac cmp r0, 0 |
| if (r0 != 0) {
0x0005adb0 bne 0x5adcc | goto label_40;
| }
0x0005adb4 mov r1, r3 | r1 = r3;
0x0005adb8 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x0005adbc bl 0x17240 | strchr (r0, r1);
0x0005adc0 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0005adc4 cmp r0, 0 |
| if (r0 == 0) {
0x0005adc8 beq 0x5afc8 | goto label_41;
| }
| }
| label_40:
0x0005adcc ldr r2, [pc, 0x918] | r2 = *(0x5b6e8);
0x0005add0 add r2, pc, r2 | r2 = pc + r2;
| label_3:
0x0005add4 mov r1, 0x38 | r1 = 0x38;
0x0005add8 mov r0, r7 | r0 = r7;
0x0005addc bl 0x16f7c | snprintf (r0, r1, r2, r3);
| label_0:
0x0005ade0 mov r5, 1 | r5 = 1;
| label_4:
0x0005ade4 ldr r3, [pc, 0x904] | r3 = *(0x5b6ec);
0x0005ade8 cmp r4, r3 |
| if (r4 == r3) {
0x0005adec beq 0x5b4dc | goto label_42;
| }
| if (r4 > r3) {
0x0005adf0 bhi 0x5b2c0 | goto label_43;
| }
0x0005adf4 sub r3, r3, 4 | r3 -= 4;
0x0005adf8 cmp r4, r3 |
| if (r4 == r3) {
0x0005adfc beq 0x5b3e8 | goto label_44;
| }
| if (r4 > r3) {
0x0005ae00 bhi 0x5b274 | goto label_45;
| }
0x0005ae04 cmp r4, 0 |
| if (r4 == 0) {
0x0005ae08 beq 0x5b350 | goto label_46;
| }
0x0005ae0c cmp r4, 0x100 |
| if (r4 < 0x100) {
0x0005ae10 bhs 0x5ae70 |
| label_2:
0x0005ae14 sub r3, r4, 1 | r3 = r4 - 1;
0x0005ae18 cmp r3, 0xfe |
| if (r3 > 0xfe) {
0x0005ae1c bhi 0x5b3b0 | goto label_47;
| }
0x0005ae20 sub r3, r4, 0x20 | r3 = r4 - 0x20;
0x0005ae24 cmp r3, 0x5e |
| if (r3 >= 0x5e) {
0x0005ae28 bls 0x5ae58 |
0x0005ae2c ldr fp, [r6, 0x14] | fp = *((r6 + 0x14));
0x0005ae30 mov r1, r4 | r1 = r4;
0x0005ae34 ldr r0, [fp, 4] | r0 = *(s);
0x0005ae38 bl 0x17240 | r0 = strchr (r0, r1);
0x0005ae3c cmp r0, 0 |
| if (r0 != 0) {
0x0005ae40 bne 0x5ae58 | goto label_48;
| }
0x0005ae44 mov r1, r4 | r1 = r4;
0x0005ae48 ldr r0, [fp, 8] | r0 = *(arg_48h);
0x0005ae4c bl 0x17240 | r0 = strchr (r0, r1);
0x0005ae50 cmp r0, 0 |
| if (r0 == 0) {
0x0005ae54 beq 0x5b3a0 | goto label_49;
| }
| }
| label_48:
0x0005ae58 ldr r2, [pc, 0x894] | r2 = *(0x5b6f0);
0x0005ae5c mov r3, r4 | r3 = r4;
0x0005ae60 add r2, pc, r2 | r2 = pc + r2;
| label_11:
0x0005ae64 mov r1, 0x40 | r1 = 0x40;
0x0005ae68 mov r0, r8 | r0 = r8;
0x0005ae6c bl 0x16f7c | snprintf (r0, r1, r2, r3);
| }
| label_1:
0x0005ae70 cmp sb, 0 |
| if (sb != 0) {
0x0005ae74 bne 0x5b64c | goto label_50;
| }
| label_19:
0x0005ae78 ldr r3, [pc, 0x878] | r3 = *(0x5b6f4);
0x0005ae7c add r3, pc, r3 | r3 = pc + r3;
0x0005ae80 mov sb, r3 | sb = r3;
| label_20:
0x0005ae84 ldr r2, [pc, 0x870] | r2 = *(0x5b6f8);
0x0005ae88 cmp r4, r2 |
| if (r4 != r2) {
0x0005ae8c bne 0x5b664 | goto label_51;
| }
0x0005ae90 ldr r1, [pc, 0x868] | r1 = *(0x5b6fc);
0x0005ae94 mov r2, r7 | r2 = r7;
0x0005ae98 add r1, pc, r1 | r1 = pc + r1;
0x0005ae9c str sb, [sp] | *(sp) = sb;
| label_5:
0x0005aea0 mov r0, r6 | r0 = r6;
0x0005aea4 blx sl | sl (r0, r1, r2);
| label_10:
0x0005aea8 mov r0, r7 | r0 = r7;
0x0005aeac bl 0x4b940 | g_free ();
0x0005aeb0 mov r0, r8 | r0 = r8;
0x0005aeb4 add sp, sp, 0x1c |
0x0005aeb8 pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0005aebc b 0x4b940 | void (*0x4b940)() ();
| label_35:
0x0005aec0 ldr r1, [pc, 0x83c] | r1 = *(0x5b700);
0x0005aec4 cmp r3, r1 |
0x0005aec8 bhi 0x5ad7c |
| } while (r3 > r1);
0x0005aecc ldr r1, [pc, 0x834] | r1 = *(0x5b704);
0x0005aed0 mov r0, r7 | r0 = r7;
0x0005aed4 add r1, pc, r1 | r1 = pc + r1;
0x0005aed8 bl 0x170d8 | strcpy (r0, r1)
0x0005aedc b 0x5ade0 | goto label_0;
| label_32:
0x0005aee0 ldr r1, [pc, 0x824] | r1 = *(0x5b708);
0x0005aee4 mov r0, r7 | r0 = r7;
0x0005aee8 add r1, pc, r1 | r1 = pc + r1;
0x0005aeec bl 0x170d8 | strcpy (r0, r1)
0x0005aef0 ldr r3, [pc, 0x7f8] | r3 = *(0x5b6ec);
0x0005aef4 cmp r4, r3 |
| if (r4 == r3) {
0x0005aef8 beq 0x5b4d8 | goto label_52;
| }
| if (r4 > r3) {
0x0005aefc bhi 0x5af44 | goto label_53;
| }
0x0005af00 sub r3, r3, 4 | r3 -= 4;
0x0005af04 cmp r4, r3 |
| if (r4 == r3) {
0x0005af08 beq 0x5b418 | goto label_54;
| }
| if (r4 > r3) {
0x0005af0c bhi 0x5af2c | goto label_55;
| }
0x0005af10 cmp r4, 0 |
| if (r4 == 0) {
0x0005af14 beq 0x5b34c | goto label_56;
| }
0x0005af18 cmp r4, 0x100 |
| if (r4 >= 0x100) {
0x0005af1c movhs r5, 1 | r5 = 1;
| goto label_57;
| }
| if (r4 >= 0x100) {
| label_57:
0x0005af20 bhs 0x5ae70 | goto label_1;
| }
| do {
0x0005af24 mov r5, 1 | r5 = 1;
0x0005af28 b 0x5ae14 | goto label_2;
| label_55:
0x0005af2c cmp r4, 0x104 |
| if (r4 == 0x104) {
0x0005af30 beq 0x5b480 | goto label_58;
| }
| if (r4 > 0x104) {
0x0005af34 movls r5, 1 | r5 = 1;
| }
| if (r4 < 0x104) {
0x0005af38 bls 0x5b434 | goto label_59;
| }
0x0005af3c mov r5, 1 | r5 = 1;
0x0005af40 b 0x5b280 | goto label_60;
| label_53:
0x0005af44 cmp r4, 0x10c |
| if (r4 < 0x10c) {
0x0005af48 bhs 0x5af70 |
0x0005af4c ldr r3, [pc, 0x794] | r3 = *(0x5b6e4);
0x0005af50 cmp r4, r3 |
| if (r4 >= r3) {
0x0005af54 bhs 0x5b5b4 | goto label_61;
| }
0x0005af58 cmp r4, 0x108 |
| if (r4 == 0x108) {
0x0005af5c beq 0x5b574 | goto label_62;
| }
| if (r4 > 0x108) {
0x0005af60 movls r5, 1 | r5 = 1;
| }
| if (r4 < 0x108) {
0x0005af64 bls 0x5b528 | goto label_63;
| }
0x0005af68 mov r5, 1 | r5 = 1;
0x0005af6c b 0x5b2e0 | goto label_12;
| }
0x0005af70 cmp r4, 0x10c |
| if (r4 == 0x10c) {
0x0005af74 beq 0x5b5f4 | goto label_64;
| }
0x0005af78 ldr r3, [pc, 0x784] | r3 = *(0x5b700);
0x0005af7c cmp r4, r3 |
| if (r4 != r3) {
0x0005af80 moveq r5, 1 | r5 = 1;
| }
0x0005af84 bne 0x5af24 |
| } while (r4 != r3);
| label_9:
0x0005af88 ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x0005af8c ldr r3, [pc, 0x770] | r3 = *(0x5b700);
0x0005af90 cmp r2, r3 |
| if (r2 != r3) {
0x0005af94 bne 0x5b640 | goto label_65;
| }
0x0005af98 ldr r3, [pc, 0x770] | r3 = *(0x5b70c);
0x0005af9c add r3, pc, r3 | r3 = pc + r3;
| label_18:
0x0005afa0 ldr r2, [pc, 0x76c] | r2 = *(0x5b710);
0x0005afa4 mov r1, 0x40 | r1 = 0x40;
0x0005afa8 add r2, pc, r2 | r2 = pc + r2;
0x0005afac str r2, [sp] | *(sp) = r2;
0x0005afb0 ldr r2, [pc, 0x760] | r2 = *(0x5b714);
0x0005afb4 mov r0, r8 | r0 = r8;
0x0005afb8 add r2, pc, r2 | r2 = pc + r2;
0x0005afbc bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005afc0 ldr r4, [pc, 0x73c] | r4 = *(0x5b700);
0x0005afc4 b 0x5b364 | goto label_14;
| label_41:
0x0005afc8 ldr r2, [pc, 0x74c] | r2 = *(0x5b718);
0x0005afcc add r2, pc, r2 | r2 = pc + r2;
0x0005afd0 b 0x5add4 | goto label_3;
| label_39:
0x0005afd4 ldr r1, [r6, 0x14] | r1 = *((r6 + 0x14));
0x0005afd8 ldrb r1, [r1, 0x12] | r1 = *((r1 + 0x12));
0x0005afdc tst r1, 8 |
| if ((r1 & 8) != 0) {
0x0005afe0 ldreq r2, [pc, 0x738] | r2 = *(0x0005b720);
| }
| if ((r1 & 8) == 0) {
0x0005afe4 addeq r2, pc, r2 | r2 = pc + r2;
| goto label_66;
| }
| if ((r1 & 8) == 0) {
| label_66:
0x0005afe8 beq 0x5add4 | goto label_3;
| }
| label_38:
0x0005afec ldr r3, [pc, 0x730] | r3 = *(0x5b720);
0x0005aff0 cmp r4, r3 |
| if (r4 != r3) {
0x0005aff4 beq 0x5b018 |
0x0005aff8 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0005affc ldrb r1, [r3, 0x12] | r1 = *((r3 + 0x12));
0x0005b000 ldr r3, [pc, 0x720] | r3 = *(0x5b724);
0x0005b004 cmp r4, r3 |
| if (r4 > r3) {
0x0005b008 movls r3, 0 | r3 = 0;
| }
| if (r4 <= r3) {
0x0005b00c movhi r3, 1 | r3 = 1;
| }
0x0005b010 ands r3, r3, r1, lsr 3 | r3 &= (r1 >> 3);
| if (r3 == r3) {
0x0005b014 beq 0x5b694 | goto label_67;
| }
| }
0x0005b018 cmp r2, 0 |
| if (r2 == 0) {
0x0005b01c bne 0x5b048 |
0x0005b020 ldr r3, [pc, 0x704] | r3 = *(0x5b728);
0x0005b024 mov r5, r2 | r5 = r2;
0x0005b028 add r3, pc, r3 | r3 = pc + r3;
| label_25:
0x0005b02c ldr r2, [pc, 0x6fc] | r2 = *(0x5b72c);
0x0005b030 str fp, [sp] | *(sp) = fp;
0x0005b034 add r2, pc, r2 | r2 = pc + r2;
0x0005b038 mov r1, 0x38 | r1 = 0x38;
0x0005b03c mov r0, r7 | r0 = r7;
0x0005b040 bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b044 b 0x5ade4 | goto label_4;
| }
0x0005b048 ldr r3, [pc, 0x6e4] | r3 = *(0x5b730);
0x0005b04c mov r5, 0 | r5 = 0;
0x0005b050 add r3, pc, r3 | r3 = pc + r3;
| do {
0x0005b054 str r2, [sp, 4] | var_4h = r2;
0x0005b058 ldr r2, [pc, 0x6d8] | r2 = *(0x5b734);
0x0005b05c str fp, [sp] | *(sp) = fp;
0x0005b060 add r2, pc, r2 | r2 = pc + r2;
| label_7:
0x0005b064 mov r1, 0x38 | r1 = 0x38;
0x0005b068 mov r0, r7 | r0 = r7;
0x0005b06c bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b070 b 0x5ade4 | goto label_4;
| label_24:
0x0005b074 ldr r3, [pc, 0x6c0] | r3 = *(0x5b738);
0x0005b078 add r3, pc, r3 | r3 = pc + r3;
0x0005b07c b 0x5b054 |
| } while (1);
| label_30:
0x0005b080 ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x0005b084 sub r3, r3, 1 | r3--;
0x0005b088 cmp r3, 6 |
| if (r3 > 6) {
| /* switch table (7 cases) at 0x5b094 */
0x0005b08c addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x0005b090 b 0x5b138 | goto label_68;
0x0005b094 b 0x5b0b0 | goto label_69;
0x0005b098 b 0x5b0f0 | goto label_70;
0x0005b09c b 0x5b0fc | goto label_71;
0x0005b0a0 b 0x5b108 | goto label_72;
0x0005b0a4 b 0x5b12c | goto label_73;
0x0005b0a8 b 0x5b114 | goto label_74;
0x0005b0ac b 0x5b120 | goto label_75;
| label_69:
0x0005b0b0 ldr r1, [pc, 0x688] | r1 = *(0x5b73c);
0x0005b0b4 add r1, pc, r1 | r1 = pc + r1;
| do {
| label_6:
0x0005b0b8 mov r0, r7 | r0 = r7;
0x0005b0bc bl 0x170d8 | strcpy (r0, r1)
0x0005b0c0 cmp sb, 0 |
| if (sb == 0) {
0x0005b0c4 movne r5, 0 | r5 = 0;
| }
| if (sb == 0) {
0x0005b0c8 movne r4, 0x100 | r4 = 0x100;
| }
| if (sb != 0) {
0x0005b0cc bne 0x5b64c | goto label_50;
| }
0x0005b0d0 ldr sb, [pc, 0x66c] | sb = *(0x0005b744);
0x0005b0d4 add sb, pc, sb | sb = pc + sb;
0x0005b0d8 mov r3, sb | r3 = sb;
| label_22:
0x0005b0dc ldr r1, [pc, 0x664] | r1 = *(0x5b744);
0x0005b0e0 str sb, [sp] | *(sp) = sb;
0x0005b0e4 mov r2, r7 | r2 = r7;
0x0005b0e8 add r1, pc, r1 | r1 = pc + r1;
0x0005b0ec b 0x5aea0 | goto label_5;
| label_70:
0x0005b0f0 ldr r1, [pc, 0x654] | r1 = *(0x5b748);
0x0005b0f4 add r1, pc, r1 | r1 = pc + r1;
0x0005b0f8 b 0x5b0b8 |
| } while (1);
| label_71:
0x0005b0fc ldr r1, [pc, 0x64c] | r1 = *(0x5b74c);
0x0005b100 add r1, pc, r1 | r1 = pc + r1;
0x0005b104 b 0x5b0b8 | goto label_6;
| label_72:
0x0005b108 ldr r1, [pc, 0x644] | r1 = *(0x5b750);
0x0005b10c add r1, pc, r1 | r1 = pc + r1;
0x0005b110 b 0x5b0b8 | goto label_6;
| label_74:
0x0005b114 ldr r1, [pc, 0x63c] | r1 = *(0x5b754);
0x0005b118 add r1, pc, r1 | r1 = pc + r1;
0x0005b11c b 0x5b0b8 | goto label_6;
| label_75:
0x0005b120 ldr r1, [pc, 0x634] | r1 = *(0x5b758);
0x0005b124 add r1, pc, r1 | r1 = pc + r1;
0x0005b128 b 0x5b0b8 | goto label_6;
| label_73:
0x0005b12c ldr r1, [pc, 0x62c] | r1 = *(0x5b75c);
0x0005b130 add r1, pc, r1 | r1 = pc + r1;
0x0005b134 b 0x5b0b8 | goto label_6;
| label_68:
0x0005b138 ldr r1, [pc, 0x624] | r1 = *(0x5b760);
0x0005b13c add r1, pc, r1 | r1 = pc + r1;
0x0005b140 b 0x5b0b8 | goto label_6;
| label_36:
0x0005b144 sub r2, r4, 0x108 | r2 = r4 - 0x108;
0x0005b148 sub r2, r2, 2 | r2 -= 2;
0x0005b14c cmp r2, 1 |
| if (r2 > 1) {
0x0005b150 bhi 0x5b18c | goto label_76;
| }
0x0005b154 ldr r2, [pc, 0x60c] | r2 = *(0x5b764);
0x0005b158 mov r5, 0 | r5 = 0;
0x0005b15c add r2, pc, r2 | r2 = pc + r2;
| do {
0x0005b160 cmp r3, r1 |
| if (r3 != r1) {
0x0005b164 ldreq r3, [r6, 0x20] | r3 = *((r6 + 0x20));
| }
| if (r3 == r1) {
0x0005b168 ldrne r3, [pc, 0x5fc] | r3 = *((pc + 0x5fc));
| }
| if (r3 == r1) {
0x0005b16c addne r3, pc, r3 | r3 = pc + r3;
| }
0x0005b170 str r3, [sp, 4] | var_4h = r3;
0x0005b174 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0005b178 str r3, [sp] | *(sp) = r3;
0x0005b17c mov r3, r2 | r3 = r2;
0x0005b180 ldr r2, [pc, 0x5e8] | r2 = *(0x5b76c);
0x0005b184 add r2, pc, r2 | r2 = pc + r2;
0x0005b188 b 0x5b064 | goto label_7;
| label_76:
0x0005b18c ldr r2, [pc, 0x5e0] | r2 = *(0x5b770);
0x0005b190 mov r5, 1 | r5 = 1;
0x0005b194 add r2, pc, r2 | r2 = pc + r2;
0x0005b198 b 0x5b160 |
| } while (1);
| label_34:
0x0005b19c ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0005b1a0 ldrb r3, [r3, 0x12] | r3 = *((r3 + 0x12));
0x0005b1a4 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x0005b1a8 beq 0x5b1cc |
0x0005b1ac ldrd r2, r3, [r6, 0x20] | __asm ("ldrd r2, r3, [r6, 0x20]");
0x0005b1b0 mov r1, 0x38 | r1 = 0x38;
0x0005b1b4 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0005b1b8 ldr r2, [pc, 0x5b8] | r2 = *(0x5b774);
0x0005b1bc mov r0, r7 | r0 = r7;
0x0005b1c0 add r2, pc, r2 | r2 = pc + r2;
0x0005b1c4 bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b1c8 b 0x5ade0 | goto label_0;
| }
0x0005b1cc ldr r2, [pc, 0x5a8] | r2 = *(0x5b778);
0x0005b1d0 ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x0005b1d4 add r2, pc, r2 | r2 = pc + r2;
0x0005b1d8 b 0x5add4 | goto label_3;
| label_28:
0x0005b1dc ldrd r2, r3, [r6, 0x20] | __asm ("ldrd r2, r3, [r6, 0x20]");
0x0005b1e0 mov r1, 0x38 | r1 = 0x38;
0x0005b1e4 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x0005b1e8 ldr r2, [pc, 0x590] | r2 = *(0x5b77c);
0x0005b1ec mov r0, r7 | r0 = r7;
0x0005b1f0 add r2, pc, r2 | r2 = pc + r2;
0x0005b1f4 bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b1f8 b 0x5ade0 | goto label_0;
| label_37:
0x0005b1fc cmp r4, 0x108 |
| if (r4 == 0x108) {
0x0005b200 beq 0x5b258 | goto label_77;
| }
0x0005b204 ldr r3, [pc, 0x578] | r3 = *(0x5b780);
0x0005b208 mov r5, 1 | r5 = 1;
0x0005b20c add r3, pc, r3 | r3 = pc + r3;
| do {
0x0005b210 ldr r1, [r6, 0x20] | r1 = *((r6 + 0x20));
0x0005b214 ldrb r2, [r1] | r2 = *(r1);
0x0005b218 cmp r2, 0 |
| if (r2 == 0) {
0x0005b21c beq 0x5b268 | goto label_78;
| }
0x0005b220 ldr r2, [pc, 0x560] | r2 = "__NULL";
0x0005b224 add r2, pc, r2 | r2 = pc + r2;
| label_8:
0x0005b228 str r2, [sp] | *(sp) = r2;
0x0005b22c ldr r2, [pc, 0x558] | r2 = *(0x5b788);
0x0005b230 str r1, [sp, 4] | var_4h = r1;
0x0005b234 add r2, pc, r2 | r2 = pc + r2;
0x0005b238 mov r1, 0x38 | r1 = 0x38;
0x0005b23c mov r0, r7 | r0 = r7;
0x0005b240 bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b244 mov r3, 0x22 | r3 = 0x22;
0x0005b248 strb r3, [r7, 0x36] | *((r7 + 0x36)) = r3;
0x0005b24c mov r3, 0 | r3 = 0;
0x0005b250 strb r3, [r7, 0x37] | *((r7 + 0x37)) = r3;
0x0005b254 b 0x5ade4 | goto label_4;
| label_77:
0x0005b258 ldr r3, [pc, 0x530] | r3 = *(0x5b78c);
0x0005b25c mov r5, 0 | r5 = 0;
0x0005b260 add r3, pc, r3 | r3 = pc + r3;
0x0005b264 b 0x5b210 |
| } while (1);
| label_78:
0x0005b268 ldr r2, [pc, 0x524] | r2 = *(0x5b790);
0x0005b26c add r2, pc, r2 | r2 = pc + r2;
0x0005b270 b 0x5b228 | goto label_8;
| label_45:
0x0005b274 cmp r4, 0x104 |
| if (r4 == 0x104) {
0x0005b278 beq 0x5b484 | goto label_79;
| }
| if (r4 < 0x104) {
0x0005b27c bls 0x5b434 | goto label_59;
| }
| label_60:
0x0005b280 ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x0005b284 ldr r3, [pc, 0x50c] | r3 = *(0x5b794);
0x0005b288 cmp r2, r3 |
| if (r2 != r3) {
0x0005b28c bne 0x5b4cc | goto label_80;
| }
0x0005b290 ldr r3, [pc, 0x504] | r3 = *(0x5b798);
0x0005b294 add r3, pc, r3 | r3 = pc + r3;
| label_16:
0x0005b298 ldr r2, [pc, 0x500] | r2 = *(0x5b79c);
0x0005b29c mov r1, 0x40 | r1 = 0x40;
0x0005b2a0 add r2, pc, r2 | r2 = pc + r2;
0x0005b2a4 str r2, [sp] | *(sp) = r2;
0x0005b2a8 ldr r2, [pc, 0x4f4] | r2 = *(0x5b7a0);
0x0005b2ac mov r0, r8 | r0 = r8;
0x0005b2b0 add r2, pc, r2 | r2 = pc + r2;
0x0005b2b4 bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b2b8 ldr r4, [pc, 0x4d8] | r4 = *(0x5b794);
0x0005b2bc b 0x5b364 | goto label_14;
| label_43:
0x0005b2c0 cmp r4, 0x10c |
| if (r4 < 0x10c) {
0x0005b2c4 bhs 0x5b334 |
0x0005b2c8 ldr r3, [pc, 0x418] | r3 = *(0x5b6e4);
0x0005b2cc cmp r4, r3 |
| if (r4 >= r3) {
0x0005b2d0 bhs 0x5b5b8 | goto label_81;
| }
0x0005b2d4 cmp r4, 0x108 |
| if (r4 == 0x108) {
0x0005b2d8 beq 0x5b578 | goto label_82;
| }
| if (r4 < 0x108) {
0x0005b2dc bls 0x5b528 | goto label_63;
| }
| label_12:
0x0005b2e0 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0005b2e4 ldr r2, [pc, 0x438] | r2 = *(0x5b720);
0x0005b2e8 cmp r3, r2 |
| if (r3 == r2) {
0x0005b2ec beq 0x5b3d0 | goto label_83;
| }
0x0005b2f0 ldr r2, [r6, 0x14] | r2 = *((r6 + 0x14));
0x0005b2f4 ldr r1, [pc, 0x42c] | r1 = *(0x5b724);
0x0005b2f8 ldrb r2, [r2, 0x12] | r2 = *((r2 + 0x12));
0x0005b2fc cmp r3, r1 |
| if (r3 > r1) {
0x0005b300 movls r3, 0 | r3 = 0;
| }
| if (r3 <= r1) {
0x0005b304 movhi r3, 1 | r3 = 1;
| }
0x0005b308 ands r3, r3, r2, lsr 3 | r3 &= (r2 >> 3);
| if (r3 != r3) {
0x0005b30c bne 0x5b3dc | goto label_84;
| }
0x0005b310 ldr r3, [pc, 0x490] | r3 = *(0x5b7a4);
0x0005b314 add r3, pc, r3 | r3 = pc + r3;
| label_13:
0x0005b318 ldr r2, [pc, 0x48c] | r2 = *(0x5b7a8);
0x0005b31c str fp, [sp] | *(sp) = fp;
0x0005b320 add r2, pc, r2 | r2 = pc + r2;
| label_17:
0x0005b324 mov r1, 0x40 | r1 = 0x40;
0x0005b328 mov r0, r8 | r0 = r8;
0x0005b32c bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b330 b 0x5ae70 | goto label_1;
| }
0x0005b334 cmp r4, 0x10c |
| if (r4 == 0x10c) {
0x0005b338 beq 0x5b5f8 | goto label_85;
| }
0x0005b33c ldr r3, [pc, 0x3c0] | r3 = *(0x5b700);
0x0005b340 cmp r4, r3 |
| if (r4 == r3) {
0x0005b344 beq 0x5af88 | goto label_9;
| }
0x0005b348 b 0x5ae14 | goto label_2;
| label_56:
0x0005b34c mov r5, 1 | r5 = 1;
| label_46:
0x0005b350 ldr r1, [pc, 0x458] | r1 = *(0x5b7ac);
0x0005b354 mov r0, r8 | r0 = r8;
0x0005b358 add r1, pc, r1 | r1 = pc + r1;
0x0005b35c bl 0x170d8 | strcpy (r0, r1)
0x0005b360 mov r4, 0 | r4 = 0;
| label_14:
0x0005b364 cmp sb, 0 |
| if (sb != 0) {
0x0005b368 bne 0x5b64c | goto label_50;
| }
0x0005b36c ldr sb, [pc, 0x440] | sb = *(0x0005b7b4);
0x0005b370 add sb, pc, sb | sb = pc + sb;
0x0005b374 mov r3, sb | r3 = sb;
| label_21:
0x0005b378 cmp r5, 0 |
0x0005b37c stm sp, {r3, sb} | *(sp) = r3;
| *((sp + 4)) = sb;
0x0005b380 mov r2, r7 | r2 = r7;
0x0005b384 mov r3, r8 | r3 = r8;
| if (r5 == 0) {
0x0005b388 beq 0x5b688 | goto label_86;
| }
0x0005b38c ldr r1, [pc, 0x424] | r1 = *(0x5b7b4);
0x0005b390 add r1, pc, r1 | r1 = pc + r1;
| label_23:
0x0005b394 mov r0, r6 | r0 = r6;
0x0005b398 blx sl | sl (r0, r1);
0x0005b39c b 0x5aea8 | goto label_10;
| label_49:
0x0005b3a0 ldr r2, [pc, 0x414] | r2 = *(0x5b7b8);
0x0005b3a4 mov r3, r4 | r3 = r4;
0x0005b3a8 add r2, pc, r2 | r2 = pc + r2;
0x0005b3ac b 0x5ae64 | goto label_11;
| label_47:
0x0005b3b0 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0005b3b4 ldrb r3, [r3, 0x12] | r3 = *((r3 + 0x12));
0x0005b3b8 tst r3, 8 |
| if ((r3 & 8) != 0) {
0x0005b3bc bne 0x5b2e0 | goto label_12;
| }
0x0005b3c0 ldr r2, [pc, 0x3f8] | r2 = *(0x5b7bc);
0x0005b3c4 mov r3, r4 | r3 = r4;
0x0005b3c8 add r2, pc, r2 | r2 = pc + r2;
0x0005b3cc b 0x5ae64 | goto label_11;
| label_83:
0x0005b3d0 ldr r3, [pc, 0x3ec] | r3 = *(0x5b7c0);
0x0005b3d4 add r3, pc, r3 | r3 = pc + r3;
0x0005b3d8 b 0x5b318 | goto label_13;
| label_84:
0x0005b3dc ldr r3, [pc, 0x3e4] | r3 = *(0x5b7c4);
0x0005b3e0 add r3, pc, r3 | r3 = pc + r3;
0x0005b3e4 b 0x5b318 | goto label_13;
| label_44:
0x0005b3e8 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0005b3ec cmp r3, r4 |
| if (r3 == r4) {
0x0005b3f0 beq 0x5b428 | goto label_87;
| }
0x0005b3f4 ldr r3, [pc, 0x3d0] | r3 = *(0x5b7c8);
0x0005b3f8 add r3, pc, r3 | r3 = pc + r3;
| do {
| label_15:
0x0005b3fc ldr r2, [pc, 0x3cc] | r2 = *(0x5b7cc);
0x0005b400 mov r1, 0x40 | r1 = 0x40;
0x0005b404 add r2, pc, r2 | r2 = pc + r2;
0x0005b408 mov r0, r8 | r0 = r8;
0x0005b40c bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b410 ldr r4, [pc, 0x2c8] | r4 = *(0x5b6dc);
0x0005b414 b 0x5b364 | goto label_14;
| label_54:
0x0005b418 ldr r3, [pc, 0x3b4] | r3 = *(0x5b7d0);
0x0005b41c mov r5, 1 | r5 = 1;
0x0005b420 add r3, pc, r3 | r3 = pc + r3;
0x0005b424 b 0x5b3fc |
| } while (1);
| label_87:
0x0005b428 ldr r3, [pc, 0x3a8] | r3 = *(0x5b7d4);
0x0005b42c add r3, pc, r3 | r3 = pc + r3;
0x0005b430 b 0x5b3fc | goto label_15;
| label_59:
0x0005b434 ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x0005b438 ldr r3, [pc, 0x39c] | r3 = *(0x5b7d8);
0x0005b43c cmp r2, r3 |
| if (r2 != r3) {
0x0005b440 bne 0x5b474 | goto label_88;
| }
0x0005b444 ldr r3, [pc, 0x394] | r3 = *(0x5b7dc);
0x0005b448 add r3, pc, r3 | r3 = pc + r3;
| do {
0x0005b44c ldr r2, [pc, 0x390] | r2 = *(0x5b7e0);
0x0005b450 mov r1, 0x40 | r1 = 0x40;
0x0005b454 add r2, pc, r2 | r2 = pc + r2;
0x0005b458 str r2, [sp] | *(sp) = r2;
0x0005b45c ldr r2, [pc, 0x384] | r2 = *(0x5b7e4);
0x0005b460 mov r0, r8 | r0 = r8;
0x0005b464 add r2, pc, r2 | r2 = pc + r2;
0x0005b468 bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b46c ldr r4, [pc, 0x368] | r4 = *(0x5b7d8);
0x0005b470 b 0x5b364 | goto label_14;
| label_88:
0x0005b474 ldr r3, [pc, 0x370] | r3 = *(0x5b7e8);
0x0005b478 add r3, pc, r3 | r3 = pc + r3;
0x0005b47c b 0x5b44c |
| } while (1);
| label_58:
0x0005b480 mov r5, 1 | r5 = 1;
| label_79:
0x0005b484 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0005b488 cmp r3, 0x104 |
| if (r3 != 0x104) {
0x0005b48c bne 0x5b4c0 | goto label_89;
| }
0x0005b490 ldr r3, [pc, 0x358] | r3 = *(0x5b7ec);
0x0005b494 add r3, pc, r3 | r3 = pc + r3;
| do {
0x0005b498 ldr r2, [pc, 0x354] | r2 = *(0x5b7f0);
0x0005b49c mov r1, 0x40 | r1 = 0x40;
0x0005b4a0 add r2, pc, r2 | r2 = pc + r2;
0x0005b4a4 str r2, [sp] | *(sp) = r2;
0x0005b4a8 ldr r2, [pc, 0x348] | r2 = *(0x5b7f4);
0x0005b4ac mov r0, r8 | r0 = r8;
0x0005b4b0 add r2, pc, r2 | r2 = pc + r2;
0x0005b4b4 bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b4b8 mov r4, 0x104 | r4 = 0x104;
0x0005b4bc b 0x5b364 | goto label_14;
| label_89:
0x0005b4c0 ldr r3, [pc, 0x334] | r3 = *(0x5b7f8);
0x0005b4c4 add r3, pc, r3 | r3 = pc + r3;
0x0005b4c8 b 0x5b498 |
| } while (1);
| label_80:
0x0005b4cc ldr r3, [pc, 0x32c] | r3 = *(0x5b7fc);
0x0005b4d0 add r3, pc, r3 | r3 = pc + r3;
0x0005b4d4 b 0x5b298 | goto label_16;
| label_52:
0x0005b4d8 mov r5, 1 | r5 = 1;
| label_42:
0x0005b4dc ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x0005b4e0 ldr r3, [pc, 0x208] | r3 = *(0x5b6ec);
0x0005b4e4 cmp r2, r3 |
| if (r2 != r3) {
0x0005b4e8 bne 0x5b51c | goto label_90;
| }
0x0005b4ec ldr r3, [pc, 0x310] | r3 = "append";
0x0005b4f0 add r3, pc, r3 | r3 = pc + r3;
| do {
0x0005b4f4 ldr r2, [pc, 0x30c] | r2 = *(0x5b804);
0x0005b4f8 mov r1, 0x40 | r1 = 0x40;
0x0005b4fc add r2, pc, r2 | r2 = pc + r2;
0x0005b500 str r2, [sp] | *(sp) = r2;
0x0005b504 ldr r2, [pc, 0x300] | r2 = *(0x5b808);
0x0005b508 mov r0, r8 | r0 = r8;
0x0005b50c add r2, pc, r2 | r2 = pc + r2;
0x0005b510 bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b514 ldr r4, [pc, 0x1d4] | r4 = *(0x5b6ec);
0x0005b518 b 0x5b364 | goto label_14;
| label_90:
0x0005b51c ldr r3, [pc, 0x2ec] | r3 = *(0x5b80c);
0x0005b520 add r3, pc, r3 | r3 = pc + r3;
0x0005b524 b 0x5b4f4 |
| } while (1);
| label_63:
0x0005b528 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0005b52c ldr r2, [sp, 0x10] | r2 = var_10h;
0x0005b530 cmp r3, r2 |
| if (r3 != r2) {
0x0005b534 bne 0x5b568 | goto label_91;
| }
0x0005b538 ldr r3, [pc, 0x2d4] | r3 = *(0x5b810);
0x0005b53c add r3, pc, r3 | r3 = pc + r3;
| do {
0x0005b540 ldr r2, [pc, 0x2d0] | r2 = *(0x5b814);
0x0005b544 mov r1, 0x40 | r1 = 0x40;
0x0005b548 add r2, pc, r2 | r2 = pc + r2;
0x0005b54c str r2, [sp] | *(sp) = r2;
0x0005b550 ldr r2, [pc, 0x2c4] | r2 = *(0x5b818);
0x0005b554 mov r0, r8 | r0 = r8;
0x0005b558 add r2, pc, r2 | r2 = pc + r2;
0x0005b55c bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b560 ldr r4, [pc, 0x154] | r4 = *(0x5b6b8);
0x0005b564 b 0x5b364 | goto label_14;
| label_91:
0x0005b568 ldr r3, [pc, 0x2b0] | r3 = *(0x5b81c);
0x0005b56c add r3, pc, r3 | r3 = pc + r3;
0x0005b570 b 0x5b540 |
| } while (1);
| label_62:
0x0005b574 mov r5, 1 | r5 = 1;
| label_82:
0x0005b578 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0005b57c cmp r3, 0x108 |
| if (r3 == 0x108) {
0x0005b580 beq 0x5b5a8 | goto label_92;
| }
0x0005b584 ldr r3, [pc, 0x298] | r3 = *(0x5b820);
0x0005b588 add r3, pc, r3 | r3 = pc + r3;
| do {
0x0005b58c ldr r2, [pc, 0x294] | r2 = "text_new";
0x0005b590 mov r1, 0x40 | r1 = 0x40;
0x0005b594 add r2, pc, r2 | r2 = pc + r2;
0x0005b598 mov r0, r8 | r0 = r8;
0x0005b59c bl 0x16f7c | snprintf (r0, r1, "text_new", r3);
0x0005b5a0 mov r4, 0x108 | r4 = 0x108;
0x0005b5a4 b 0x5b364 | goto label_14;
| label_92:
0x0005b5a8 ldr r3, [pc, 0x27c] | r3 = *(0x5b828);
0x0005b5ac add r3, pc, r3 | r3 = pc + r3;
0x0005b5b0 b 0x5b58c |
| } while (1);
| label_61:
0x0005b5b4 mov r5, 1 | r5 = 1;
| label_81:
0x0005b5b8 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0005b5bc sub r3, r3, 0x108 | r3 -= 0x108;
0x0005b5c0 sub r3, r3, 2 | r3 -= 2;
0x0005b5c4 cmp r3, 1 |
| if (r3 < 1) {
0x0005b5c8 bls 0x5b5e8 | goto label_93;
| }
0x0005b5cc ldr r3, [pc, 0x25c] | r3 = *(0x5b82c);
0x0005b5d0 add r3, pc, r3 | r3 = pc + r3;
| do {
0x0005b5d4 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0005b5d8 str r2, [sp] | *(sp) = r2;
0x0005b5dc ldr r2, [pc, 0x250] | r2 = *(0x5b830);
0x0005b5e0 add r2, pc, r2 | r2 = pc + r2;
0x0005b5e4 b 0x5b324 | goto label_17;
| label_93:
0x0005b5e8 ldr r3, [pc, 0x248] | r3 = *(0x5b834);
0x0005b5ec add r3, pc, r3 | r3 = pc + r3;
0x0005b5f0 b 0x5b5d4 |
| } while (1);
| label_64:
0x0005b5f4 mov r5, 1 | r5 = 1;
| label_85:
0x0005b5f8 ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x0005b5fc cmp r3, 0x10c |
| if (r3 != 0x10c) {
0x0005b600 bne 0x5b634 | goto label_94;
| }
0x0005b604 ldr r3, [pc, 0x230] | r3 = *(0x5b838);
0x0005b608 add r3, pc, r3 | r3 = pc + r3;
| do {
0x0005b60c ldr r2, [pc, 0x22c] | r2 = *(0x5b83c);
0x0005b610 mov r1, 0x40 | r1 = 0x40;
0x0005b614 add r2, pc, r2 | r2 = pc + r2;
0x0005b618 str r2, [sp] | *(sp) = r2;
0x0005b61c ldr r2, [pc, 0x220] | r2 = *(0x5b840);
0x0005b620 mov r0, r8 | r0 = r8;
0x0005b624 add r2, pc, r2 | r2 = pc + r2;
0x0005b628 bl 0x16f7c | snprintf (r0, r1, r2, r3);
0x0005b62c mov r4, 0x10c | r4 = 0x10c;
0x0005b630 b 0x5b364 | goto label_14;
| label_94:
0x0005b634 ldr r3, [pc, 0x20c] | r3 = *(0x5b844);
0x0005b638 add r3, pc, r3 | r3 = pc + r3;
0x0005b63c b 0x5b60c |
| } while (1);
| label_65:
0x0005b640 ldr r3, [pc, 0x204] | r3 = "r_array_remove_index";
0x0005b644 add r3, pc, r3 | r3 = pc + r3;
0x0005b648 b 0x5afa0 | goto label_18;
| label_50:
0x0005b64c ldrb r3, [sb] | r3 = *(sb);
0x0005b650 cmp r3, 0 |
| if (r3 == 0) {
0x0005b654 beq 0x5ae78 | goto label_19;
| }
0x0005b658 ldr r3, [pc, 0x1f0] | r3 = *(0x5b84c);
0x0005b65c add r3, pc, r3 | r3 = pc + r3;
0x0005b660 b 0x5ae84 | goto label_20;
| label_51:
0x0005b664 cmp r4, 0x100 |
| if (r4 != 0x100) {
0x0005b668 bne 0x5b378 | goto label_21;
| }
0x0005b66c cmp r5, 0 |
| if (r5 == 0) {
0x0005b670 beq 0x5b0dc | goto label_22;
| }
0x0005b674 ldr r1, [pc, 0x1d8] | r1 = *(0x5b850);
0x0005b678 str sb, [sp] | *(sp) = sb;
0x0005b67c mov r2, r7 | r2 = r7;
0x0005b680 add r1, pc, r1 | r1 = pc + r1;
0x0005b684 b 0x5aea0 | goto label_5;
| label_86:
0x0005b688 ldr r1, [pc, 0x1c8] | r1 = *(0x5b854);
0x0005b68c add r1, pc, r1 | r1 = pc + r1;
0x0005b690 b 0x5b394 | goto label_23;
| label_67:
0x0005b694 cmp r2, 0 |
0x0005b698 mov r5, 1 | r5 = 1;
| if (r2 != 0) {
0x0005b69c bne 0x5b074 | goto label_24;
| }
0x0005b6a0 ldr r3, [pc, 0x1b4] | r3 = *(0x5b858);
0x0005b6a4 add r3, pc, r3 | r3 = pc + r3;
0x0005b6a8 b 0x5b02c | goto label_25;
| }
[*] Function strcpy used 17 times libglib-2.0.so.0.5600.4