[*] Binary protection state of libstdc++.so.6.0.24
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of libstdc++.so.6.0.24
; 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/libstdc++.so.6.0.24 @ 0x9444c */
| #include <stdint.h>
|
; (fcn) fcn.0009444c () | void fcn_0009444c (int32_t arg1, int32_t arg2) {
| char * s;
| int32_t var_44h;
| r0 = arg1;
| r1 = arg2;
0x0009444c push {r4, r5, r6, r7, lr} |
0x00094450 sub sp, sp, 0x44 |
0x00094454 mov r5, r0 | r5 = r0;
0x00094458 mov r7, r1 | r7 = r1;
0x0009445c mov r6, r2 | r6 = r2;
0x00094460 bl 0x9439c | r0 = fcn_0009439c (r0, r1);
0x00094464 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 == r0) {
0x00094468 bne 0x944b0 |
0x0009446c ldr r1, [pc, 0x48] | r1 = *(0x944b8);
0x00094470 mov r0, r7 | r0 = r7;
0x00094474 add r1, pc, r1 | r1 = pc + r1;
0x00094478 bl 0x7804c | r0 = strcmp (r0, r1);
0x0009447c cmp r0, 0 |
| if (r0 != 0) {
0x00094480 bne 0x944b0 | goto label_0;
| }
0x00094484 ldr r1, [pc, 0x34] | r1 = "treambufIcS1_E";
0x00094488 mov r4, sp | r4 = sp;
0x0009448c ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00094490 add r1, pc, r1 | r1 = pc + r1;
0x00094494 mov r0, r4 | r0 = r4;
0x00094498 bl 0x77698 | sprintf (r0, r1, r2)
0x0009449c mov r1, r4 | r1 = r4;
0x000944a0 mov r4, 1 | r4 = 1;
0x000944a4 mov r2, r0 | r2 = r0;
0x000944a8 mov r0, r5 | r0 = r5;
0x000944ac bl 0x94194 | fcn_00094194 (r0, r1);
| }
| label_0:
0x000944b0 mov r0, r4 | r0 = r4;
0x000944b4 add sp, sp, 0x44 |
0x000944b8 pop {r4, r5, r6, r7, 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/libstdc++.so.6.0.24 @ 0x944c4 */
| #include <stdint.h>
|
; (fcn) fcn.000944c4 () | void fcn_000944c4 (int32_t arg1, int32_t arg2) {
| char * s;
| int32_t var_40h;
| r0 = arg1;
| r1 = arg2;
0x000944c4 ldr r3, [r1] | r3 = *(r1);
0x000944c8 push {r4, r5, r6, lr} |
0x000944cc cmp r3, 0 |
0x000944d0 sub sp, sp, 0x40 |
| if (r3 == 0) {
0x000944d4 bne 0x944f8 |
0x000944d8 ldr r3, [pc, 0x360] | r3 = *(0x9483c);
0x000944dc ldr r1, [pc, 0x360] | r1 = *(0x94840);
0x000944e0 ldr r0, [pc, 0x360] | r0 = "RKSt6locale";
0x000944e4 ldr r2, [pc, 0x360] | r2 = *(0x94848);
0x000944e8 add r3, pc, r3 | r3 = pc + r3;
0x000944ec add r1, pc, r1 | r1 = pc + r1;
0x000944f0 add r0, pc, r0 | r0 = pc + r0;
| label_0:
0x000944f4 bl 0x7552c | assert ();
| }
0x000944f8 sub r3, r3, 1 | r3--;
0x000944fc mov r4, r0 | r4 = r0;
0x00094500 mov r5, r1 | r5 = r1;
0x00094504 mov r6, r2 | r6 = r2;
0x00094508 cmp r3, 5 |
| if (r3 > 5) {
| /* switch table (6 cases) at 0x94514 */
0x0009450c addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x00094510 b 0x94820 | goto label_3;
0x00094514 b 0x9452c | goto label_4;
0x00094518 b 0x946b4 | goto label_5;
0x0009451c b 0x946e8 | goto label_6;
0x00094520 b 0x9474c | goto label_7;
0x00094524 b 0x947b8 | goto label_8;
0x00094528 b 0x947ec | goto label_9;
| label_4:
0x0009452c add r2, r1, 4 | r2 = r1 + 4;
0x00094530 mov r1, r6 | r1 = r6;
0x00094534 bl 0x9444c | r0 = fcn_0009444c (r0, r1);
0x00094538 cmp r0, 0 |
| if (r0 != 0) {
0x0009453c bne 0x94574 | goto label_2;
| }
0x00094540 ldr r1, [pc, 0x308] | r1 = *(0x9484c);
0x00094544 mov r0, r6 | r0 = r6;
0x00094548 add r1, pc, r1 | r1 = pc + r1;
0x0009454c bl 0x7804c | r0 = strcmp (r0, r1);
0x00094550 cmp r0, 0 |
| if (r0 != 0) {
0x00094554 bne 0x9457c | goto label_10;
| }
0x00094558 ldr r3, [pc, 0x2f4] | r3 = *(0x94850);
0x0009455c ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x00094560 mvn r2, 0 | r2 = ~0;
0x00094564 add r3, pc, r3 | r3 = pc + r3;
| do {
0x00094568 ldr r1, [r3, r1, lsl 2] | offset_0 = r1 << 2;
| r1 = *((r3 + offset_0));
| label_1:
0x0009456c mov r0, r4 | r0 = r4;
0x00094570 bl 0x94194 | fcn_00094194 (r0, r1);
| label_2:
0x00094574 add sp, sp, 0x40 |
0x00094578 pop {r4, r5, r6, pc} |
| label_10:
0x0009457c ldr r1, [pc, 0x2d4] | r1 = *(0x94854);
0x00094580 mov r0, r6 | r0 = r6;
0x00094584 add r1, pc, r1 | r1 = pc + r1;
0x00094588 bl 0x7804c | r0 = strcmp (r0, r1);
0x0009458c cmp r0, 0 |
| if (r0 != 0) {
0x00094590 ldreq r3, [pc, 0x2c4] | r3 = *((pc + 0x2c4));
| }
| if (r0 != 0) {
0x00094594 ldreq r1, [r5, 0x14] | r1 = *((r5 + 0x14));
| }
| if (r0 != 0) {
0x00094598 mvneq r2, 0 | r2 = ~0;
| }
| if (r0 != 0) {
0x0009459c addeq r3, pc, r3 | r3 = pc + r3;
| }
0x000945a0 beq 0x94568 |
| } while (r0 == 0);
0x000945a4 ldr r1, [pc, 0x2b4] | r1 = *(0x9485c);
0x000945a8 mov r0, r6 | r0 = r6;
0x000945ac add r1, pc, r1 | r1 = pc + r1;
0x000945b0 bl 0x7804c | r0 = strcmp (r0, r1);
0x000945b4 cmp r0, 0 |
| if (r0 == 0) {
0x000945b8 bne 0x94608 |
0x000945bc ldr r2, [r5, 0x18] | r2 = *((r5 + 0x18));
0x000945c0 cmp r2, 0 |
| if (r2 == 0) {
0x000945c4 bne 0x945e8 |
0x000945c8 ldr r3, [pc, 0x294] | r3 = *(0x94860);
0x000945cc ldr r1, [pc, 0x294] | r1 = *(0x94864);
0x000945d0 ldr r0, [pc, 0x294] | r0 = "etISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale";
0x000945d4 add r3, pc, r3 | r3 = pc + r3;
0x000945d8 ldr r2, [pc, 0x290] | r2 = *(0x9486c);
0x000945dc add r1, pc, r1 | r1 = pc + r1;
0x000945e0 add r0, pc, r0 | r0 = pc + r0;
0x000945e4 b 0x944f4 | goto label_0;
| }
0x000945e8 ldr r1, [pc, 0x284] | r1 = *(0x94870);
0x000945ec mov r5, sp | r5 = sp;
0x000945f0 add r1, pc, r1 | r1 = pc + r1;
0x000945f4 mov r0, r5 | r0 = r5;
0x000945f8 bl 0x77698 | sprintf (r0, r1, r2)
0x000945fc mov r1, r5 | r1 = r5;
0x00094600 mov r2, r0 | r2 = r0;
0x00094604 b 0x9456c | goto label_1;
| }
0x00094608 ldr r1, [pc, 0x268] | r1 = "_traitsIcEEEERKT_RKSt6locale";
0x0009460c mov r0, r6 | r0 = r6;
0x00094610 add r1, pc, r1 | r1 = pc + r1;
0x00094614 bl 0x7804c | r0 = strcmp (r0, r1);
0x00094618 cmp r0, 0 |
| if (r0 != 0) {
0x0009461c bne 0x94694 | goto label_11;
| }
0x00094620 ldr r5, [r5, 0x1c] | r5 = *((r5 + 0x1c));
0x00094624 cmp r5, 0 |
| if (r5 != 0) {
0x00094628 ldreq r1, [pc, 0x24c] | r1 = *((pc + 0x24c));
| }
| if (r5 != 0) {
0x0009462c moveq r2, 0x12 | r2 = 0x12;
| }
| if (r5 == 0) {
0x00094630 addeq r1, pc, r1 | r1 = pc + r1;
| goto label_12;
| }
| if (r5 == 0) {
| label_12:
0x00094634 beq 0x9456c | goto label_1;
| }
0x00094638 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0009463c mov r2, 0 | r2 = 0;
0x00094640 ldrb r3, [r0] | r3 = *(r0);
0x00094644 mov r1, r2 | r1 = r2;
0x00094648 cmp r3, 0x2a |
| if (r3 != 0x2a) {
0x0009464c addeq r0, r0, 1 | r0++;
| }
0x00094650 mov r3, sp | r3 = sp;
0x00094654 bl 0x77a4c | fcn_00077a4c ();
0x00094658 ldr r3, [sp] | r3 = *(sp);
0x0009465c cmp r3, 0 |
0x00094660 mov r6, r0 | r6 = r0;
| if (r3 != 0) {
0x00094664 moveq r1, r0 | r1 = r0;
| }
| if (r3 != 0) {
0x00094668 beq 0x9467c |
0x0009466c ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00094670 ldrb r3, [r1] | r3 = *(r1);
0x00094674 cmp r3, 0x2a |
| if (r3 == 0x2a) {
0x00094678 addeq r1, r1, 1 | r1++;
| goto label_13;
| }
| }
| label_13:
0x0009467c mov r0, r4 | r0 = r4;
0x00094680 mvn r2, 0 | r2 = ~0;
0x00094684 bl 0x94194 | fcn_00094194 (r0, r1);
0x00094688 mov r0, r6 | r0 = r6;
0x0009468c bl 0x74380 | free (r0);
0x00094690 b 0x94574 | goto label_2;
| label_11:
0x00094694 ldr r3, [pc, 0x1e4] | r3 = *(0x9487c);
0x00094698 ldr r1, [pc, 0x1e4] | r1 = *(0x94880);
0x0009469c ldr r0, [pc, 0x1e4] | r0 = "_ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale";
0x000946a0 add r3, pc, r3 | r3 = pc + r3;
0x000946a4 mov r2, 0x2dc | r2 = 0x2dc;
0x000946a8 add r1, pc, r1 | r1 = pc + r1;
0x000946ac add r0, pc, r0 | r0 = pc + r0;
0x000946b0 b 0x944f4 | goto label_0;
| label_5:
0x000946b4 add r2, r1, 4 | r2 = r1 + 4;
0x000946b8 mov r1, r6 | r1 = r6;
0x000946bc bl 0x9444c | r0 = fcn_0009444c (r0, r1);
0x000946c0 cmp r0, 0 |
| if (r0 != 0) {
0x000946c4 bne 0x94574 | goto label_2;
| }
0x000946c8 ldr r3, [pc, 0x1bc] | r3 = *(0x94888);
0x000946cc ldr r1, [pc, 0x1bc] | r1 = *(0x9488c);
0x000946d0 ldr r0, [pc, 0x1bc] | r0 = "har_traitsIcEE9set_rdbufEPSt15basic_streambufIcS1_E";
0x000946d4 add r3, pc, r3 | r3 = pc + r3;
0x000946d8 ldr r2, [pc, 0x1b8] | r2 = *(0x94894);
0x000946dc add r1, pc, r1 | r1 = pc + r1;
0x000946e0 add r0, pc, r0 | r0 = pc + r0;
0x000946e4 b 0x944f4 | goto label_0;
| label_6:
0x000946e8 ldr r1, [pc, 0x1ac] | r1 = *(0x94898);
0x000946ec mov r0, r2 | r0 = r2;
0x000946f0 add r1, pc, r1 | r1 = pc + r1;
0x000946f4 bl 0x7804c | r0 = strcmp (r0, r1);
0x000946f8 cmp r0, 0 |
| if (r0 == 0) {
0x000946fc bne 0x9472c |
0x00094700 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00094704 cmp r1, 0 |
| if (r1 != 0) {
0x00094708 bne 0x94790 | goto label_14;
| }
0x0009470c ldr r3, [pc, 0x18c] | r3 = *(0x9489c);
0x00094710 ldr r1, [pc, 0x18c] | r1 = *(0x948a0);
0x00094714 ldr r0, [pc, 0x18c] | r0 = "llEc";
0x00094718 add r3, pc, r3 | r3 = pc + r3;
0x0009471c mov r2, 0x2e8 | r2 = 0x2e8;
0x00094720 add r1, pc, r1 | r1 = pc + r1;
0x00094724 add r0, pc, r0 | r0 = pc + r0;
0x00094728 b 0x944f4 | goto label_0;
| }
0x0009472c ldr r3, [pc, 0x178] | r3 = "aleERKSt6locale";
0x00094730 ldr r1, [pc, 0x178] | r1 = *(0x948ac);
0x00094734 ldr r0, [pc, 0x178] | r0 = "asic_iosIcSt11char_traitsIcEE4fillEc";
0x00094738 add r3, pc, r3 | r3 = pc + r3;
0x0009473c mov r2, 0x2ec | r2 = 0x2ec;
0x00094740 add r1, pc, r1 | r1 = pc + r1;
0x00094744 add r0, pc, r0 | r0 = pc + r0;
0x00094748 b 0x944f4 | goto label_0;
| label_7:
0x0009474c ldr r1, [pc, 0x164] | r1 = *(0x948b4);
0x00094750 mov r0, r2 | r0 = r2;
0x00094754 add r1, pc, r1 | r1 = pc + r1;
0x00094758 bl 0x7804c | r0 = strcmp (r0, r1);
0x0009475c cmp r0, 0 |
| if (r0 == 0) {
0x00094760 bne 0x94798 |
0x00094764 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00094768 cmp r1, 0 |
| if (r1 == 0) {
0x0009476c bne 0x94790 |
0x00094770 ldr r3, [pc, 0x144] | r3 = *(0x948b8);
0x00094774 ldr r1, [pc, 0x144] | r1 = *(0x948bc);
0x00094778 ldr r0, [pc, 0x144] | r0 = "itsIcEE5widenEc";
0x0009477c add r3, pc, r3 | r3 = pc + r3;
0x00094780 ldr r2, [pc, 0x140] | r2 = *(0x948c4);
0x00094784 add r1, pc, r1 | r1 = pc + r1;
0x00094788 add r0, pc, r0 | r0 = pc + r0;
0x0009478c b 0x944f4 | goto label_0;
| }
| label_14:
0x00094790 mvn r2, 0 | r2 = ~0;
0x00094794 b 0x9456c | goto label_1;
| }
0x00094798 ldr r3, [pc, 0x12c] | r3 = *(0x948c8);
0x0009479c ldr r1, [pc, 0x12c] | r1 = *(0x948cc);
0x000947a0 ldr r0, [pc, 0x12c] | r0 = "narrowEcc";
0x000947a4 add r3, pc, r3 | r3 = pc + r3;
0x000947a8 ldr r2, [pc, 0x128] | r2 = *(0x948d4);
0x000947ac add r1, pc, r1 | r1 = pc + r1;
0x000947b0 add r0, pc, r0 | r0 = pc + r0;
0x000947b4 b 0x944f4 | goto label_0;
| label_8:
0x000947b8 add r2, r1, 4 | r2 = r1 + 4;
0x000947bc mov r1, r6 | r1 = r6;
0x000947c0 bl 0x9444c | r0 = fcn_0009444c (r0, r1);
0x000947c4 cmp r0, 0 |
| if (r0 != 0) {
0x000947c8 bne 0x94574 | goto label_2;
| }
0x000947cc ldr r3, [pc, 0x108] | r3 = *(0x948d8);
0x000947d0 ldr r1, [pc, 0x108] | r1 = *(0x948dc);
0x000947d4 ldr r0, [pc, 0x108] | r0 = "sIcEE5rdbufEv";
0x000947d8 add r3, pc, r3 | r3 = pc + r3;
0x000947dc ldr r2, [pc, 0x104] | r2 = *(0x948e4);
0x000947e0 add r1, pc, r1 | r1 = pc + r1;
0x000947e4 add r0, pc, r0 | r0 = pc + r0;
0x000947e8 b 0x944f4 | goto label_0;
| label_9:
0x000947ec add r2, r1, 4 | r2 = r1 + 4;
0x000947f0 mov r1, r6 | r1 = r6;
0x000947f4 bl 0x9439c | r0 = fcn_0009439c (r0, r1);
0x000947f8 cmp r0, 0 |
| if (r0 != 0) {
0x000947fc bne 0x94574 | goto label_2;
| }
0x00094800 ldr r3, [pc, 0xe4] | r3 = *(0x948e8);
0x00094804 ldr r1, [pc, 0xe4] | r1 = *(0x948ec);
0x00094808 ldr r0, [pc, 0xe4] | r0 = "_traitsIcEE3tieEPSo";
0x0009480c add r3, pc, r3 | r3 = pc + r3;
0x00094810 mov r2, 0x300 | r2 = 0x300;
0x00094814 add r1, pc, r1 | r1 = pc + r1;
0x00094818 add r0, pc, r0 | r0 = pc + r0;
0x0009481c b 0x944f4 | goto label_0;
| label_3:
0x00094820 ldr r3, [pc, 0xd0] | r3 = *(0x948f4);
0x00094824 ldr r1, [pc, 0xd0] | r1 = *(0x948f8);
0x00094828 ldr r0, [pc, 0xd0] | r0 = "_tieEv";
0x0009482c add r3, pc, r3 | r3 = pc + r3;
0x00094830 mov r2, 0x304 | r2 = 0x304;
0x00094834 add r1, pc, r1 | r1 = pc + r1;
0x00094838 add r0, pc, r0 | r0 = pc + r0;
0x0009483c b 0x944f4 | 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/libstdc++.so.6.0.24 @ 0x94904 */
| #include <stdint.h>
|
; (fcn) fcn.00094904 () | void fcn_00094904 (int32_t arg1, int32_t arg2) {
| int32_t var_4h;
| int32_t var_8h;
| char * s;
| int8_t var_80h;
| int32_t var_98h;
| int32_t var_0h;
| int32_t var_9ch;
| r0 = arg1;
| r1 = arg2;
0x00094904 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00094908 ldr fp, [pc, 0x270] | fp = *(0x94b7c);
0x0009490c mov r4, 0 | r4 = 0;
0x00094910 sub sp, sp, 0x9c |
0x00094914 mov r6, r0 | r6 = r0;
0x00094918 mov r5, r1 | r5 = r1;
0x0009491c mov r8, r2 | r8 = r2;
0x00094920 mov sl, r3 | sl = r3;
0x00094924 mov sb, r4 | sb = r4;
0x00094928 add fp, pc, fp |
| do {
0x0009492c ldrb r3, [r5] | r3 = *(r5);
0x00094930 cmp r3, 0 |
| if (r3 == 0) {
0x00094934 beq 0x94b54 | goto label_2;
| }
0x00094938 mov r0, r3 | r0 = r3;
0x0009493c str r3, [sp, 4] | var_4h = r3;
0x00094940 bl 0x74f74 | isspace (r0);
0x00094944 ldr r3, [sp, 4] | r3 = var_4h;
0x00094948 subs r7, r0, 0 | r7 = r0 - 0;
| if (r7 == r0) {
0x0009494c beq 0x94984 | goto label_3;
| }
0x00094950 add r1, sp, 0x98 | r1 += var_98h;
0x00094954 add r2, r4, 1 | r2 = r4 + 1;
0x00094958 add r4, r1, r4 | r4 = r1 + r4;
0x0009495c strb r3, [r4, -0x80] | s = r3;
0x00094960 mov r0, r6 | r0 = r6;
0x00094964 add r3, r1, r2 | r3 = r1 + r2;
0x00094968 add r1, sp, 0x18 | r1 += s;
0x0009496c strb sb, [r3, -0x80] | var_80h = sb;
0x00094970 bl 0x94194 | fcn_00094194 (r0, r1);
0x00094974 add r5, r5, 1 | r5++;
0x00094978 mov r7, 0 | r7 = 0;
| label_0:
0x0009497c mov r4, r7 | r4 = r7;
0x00094980 b 0x9492c |
| } while (1);
| label_3:
0x00094984 cmp r3, 0x25 |
| if (r3 == 0x25) {
0x00094988 addne r5, r5, 1 | r5++;
| }
| if (r3 == 0x25) {
0x0009498c bne 0x949a0 |
0x00094990 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x00094994 cmp r3, 0x25 |
| if (r3 != 0x25) {
0x00094998 bne 0x949b4 | goto label_4;
| }
0x0009499c add r5, r5, 2 | r5 += 2;
| }
0x000949a0 add r2, sp, 0x98 | r2 += var_98h;
0x000949a4 add r7, r4, 1 | r7 = r4 + 1;
0x000949a8 add r4, r2, r4 | r4 = r2 + r4;
0x000949ac strb r3, [r4, -0x80] | s = r3;
0x000949b0 b 0x9497c | goto label_0;
| label_4:
0x000949b4 cmp r4, 0 |
| if (r4 != 0) {
0x000949b8 beq 0x949d8 |
0x000949bc add r3, sp, 0x98 | r3 += var_98h;
0x000949c0 add r3, r3, r4 | r3 += r4;
0x000949c4 mov r2, r4 | r2 = r4;
0x000949c8 add r1, sp, 0x18 | r1 += s;
0x000949cc mov r0, r6 | r0 = r6;
0x000949d0 strb r7, [r3, -0x80] | s = r7;
0x000949d4 bl 0x94194 | fcn_00094194 (r0, r1);
| }
0x000949d8 ldrb r3, [r5, 1] | r3 = *((r5 + 1));
0x000949dc sub r3, r3, 0x31 | r3 -= 0x31;
0x000949e0 and r2, r3, 0xff | r2 = r3 & 0xff;
0x000949e4 cmp r2, 8 |
| if (r2 < 8) {
0x000949e8 bls 0x94a0c | goto label_5;
| }
0x000949ec ldr r3, [pc, 0x190] | r3 = *(0x94b80);
0x000949f0 ldr r1, [pc, 0x190] | r1 = *(0x94b84);
0x000949f4 ldr r0, [pc, 0x190] | r0 = "_basic_iosIcSt11char_traitsIcEEcvbEv";
0x000949f8 ldr r2, [pc, 0x190] | r2 = *(0x94b8c);
0x000949fc add r3, pc, r3 | r3 = pc + r3;
0x00094a00 add r1, pc, r1 | r1 = pc + r1;
0x00094a04 add r0, pc, r0 | r0 = pc + r0;
| do {
| label_1:
0x00094a08 bl 0x7552c | assert ();
| label_5:
0x00094a0c cmp r3, sl |
| if (r3 <= sl) {
0x00094a10 blo 0x94a34 | goto label_6;
| }
0x00094a14 ldr r3, [pc, 0x178] | r3 = *(0x94b90);
0x00094a18 ldr r1, [pc, 0x178] | r1 = *(0x94b94);
0x00094a1c ldr r0, [pc, 0x178] | r0 = "asic_iosIwSt11char_traitsIwEED0Ev";
0x00094a20 add r3, pc, r3 | r3 = pc + r3;
0x00094a24 mov r2, 0x3b8 | r2 = 0x3b8;
0x00094a28 add r1, pc, r1 | r1 = pc + r1;
0x00094a2c add r0, pc, r0 | r0 = pc + r0;
0x00094a30 b 0x94a08 |
| } while (1);
| label_6:
0x00094a34 ldrb r2, [r5, 2] | r2 = *((r5 + 2));
0x00094a38 add r1, r8, r3, lsl 5 | r1 = r8 + (r3 << 5);
0x00094a3c cmp r2, 0x2e |
0x00094a40 add r5, r5, 3 | r5 += 3;
| if (r2 == 0x2e) {
0x00094a44 beq 0x94ac4 | goto label_7;
| }
0x00094a48 cmp r2, 0x3b |
| if (r2 != 0x3b) {
0x00094a4c beq 0x94a70 |
0x00094a50 ldr r3, [pc, 0x148] | r3 = *(0x94b9c);
0x00094a54 ldr r1, [pc, 0x148] | r1 = *(0x94ba0);
0x00094a58 ldr r0, [pc, 0x148] | r0 = "itsIwEED1Ev";
0x00094a5c add r3, pc, r3 | r3 = pc + r3;
0x00094a60 mov r2, 0x3c0 | r2 = 0x3c0;
0x00094a64 add r1, pc, r1 | r1 = pc + r1;
0x00094a68 add r0, pc, r0 | r0 = pc + r0;
0x00094a6c b 0x94a08 | goto label_1;
| }
0x00094a70 ldr r3, [r8, r3, lsl 5] | offset_0 = r3 << 5;
| r3 = *((r8 + offset_0));
0x00094a74 cmp r3, 3 |
| if (r3 == 3) {
0x00094a78 bne 0x94aa4 |
0x00094a7c add r4, sp, 0x18 | r4 += s;
0x00094a80 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x00094a84 mov r0, r4 | r0 = r4;
0x00094a88 mov r1, fp | r1 = fp;
0x00094a8c bl 0x77698 | sprintf (r0, r1, r2)
0x00094a90 mov r1, r4 | r1 = r4;
0x00094a94 mov r2, r0 | r2 = r0;
0x00094a98 mov r0, r6 | r0 = r6;
0x00094a9c bl 0x94194 | fcn_00094194 (r0, r1);
0x00094aa0 b 0x9497c | goto label_0;
| }
0x00094aa4 cmp r3, 4 |
| if (r3 != 4) {
0x00094aa8 bne 0x9497c | goto label_0;
| }
0x00094aac mov r3, sl | r3 = sl;
0x00094ab0 mov r2, r8 | r2 = r8;
0x00094ab4 ldr r1, [r1, 8] | r1 = *((r1 + 8));
0x00094ab8 mov r0, r6 | r0 = r6;
0x00094abc bl 0x94904 | fcn_00094904 (r0, r1);
0x00094ac0 b 0x9497c | goto label_0;
| label_7:
0x00094ac4 mov r3, 0 | r3 = 0;
0x00094ac8 add r2, sp, 8 | r2 += var_8h;
| do {
0x00094acc mov ip, r5 |
0x00094ad0 ldrb r0, [r5], 1 | r0 = *(r5);
| r5++;
0x00094ad4 cmp r0, 0x3b |
| if (r0 == 0x3b) {
0x00094ad8 beq 0x94b38 | goto label_8;
| }
0x00094adc cmp r0, 0 |
| if (r0 == 0) {
0x00094ae0 bne 0x94b04 |
0x00094ae4 ldr r3, [pc, 0xc0] | r3 = *(0x94ba8);
0x00094ae8 ldr r1, [pc, 0xc0] | r1 = *(0x94bac);
0x00094aec ldr r0, [pc, 0xc0] | r0 = *(0x94bb0);
0x00094af0 add r3, pc, r3 | r3 = pc + r3;
0x00094af4 ldr r2, [pc, 0xbc] | r2 = *(0x94bb4);
0x00094af8 add r1, pc, r1 | r1 = pc + r1;
0x00094afc add r0, pc, r0 | r0 = pc + r0;
0x00094b00 b 0x94a08 | goto label_1;
| }
0x00094b04 cmp r3, 0xf |
| if (r3 == 0xf) {
0x00094b08 bne 0x94b2c |
0x00094b0c ldr r3, [pc, 0xa8] | r3 = *(0x94bb8);
0x00094b10 ldr r1, [pc, 0xa8] | r1 = *(0x94bbc);
0x00094b14 ldr r0, [pc, 0xa8] | r0 = "ZTISt13basic_fstreamIwSt11char_traitsIwEE";
0x00094b18 add r3, pc, r3 | r3 = pc + r3;
0x00094b1c ldr r2, [pc, 0xa4] | r2 = "_traitsIcEEcvbEv";
0x00094b20 add r1, pc, r1 | r1 = pc + r1;
0x00094b24 add r0, pc, r0 | r0 = pc + r0;
0x00094b28 b 0x94a08 | goto label_1;
| }
0x00094b2c strb r0, [r2, r3] | *((r2 + r3)) = r0;
0x00094b30 add r3, r3, 1 | r3++;
0x00094b34 b 0x94acc |
| } while (1);
| label_8:
0x00094b38 add r0, sp, 0x98 | r0 += var_98h;
0x00094b3c add r3, r0, r3 | r3 = r0 + r3;
0x00094b40 mov r0, r6 | r0 = r6;
0x00094b44 add r5, ip, 1 | r5 = ip + 1;
0x00094b48 strb sb, [r3, -0x90] | var_8h = sb;
0x00094b4c bl 0x944c4 | fcn_000944c4 (r0, r1);
0x00094b50 b 0x9497c | goto label_0;
| label_2:
0x00094b54 cmp r4, 0 |
| if (r4 != 0) {
0x00094b58 beq 0x94b78 |
0x00094b5c add r2, sp, 0x98 | r2 += var_98h;
0x00094b60 add r2, r2, r4 | r2 += r4;
0x00094b64 strb r3, [r2, -0x80] | s = r3;
0x00094b68 add r1, sp, 0x18 | r1 += s;
0x00094b6c mov r2, r4 | r2 = r4;
0x00094b70 mov r0, r6 | r0 = r6;
0x00094b74 bl 0x94194 | fcn_00094194 (r0, r1);
| }
0x00094b78 add sp, sp, 0x9c |
0x00094b7c 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/libstdc++.so.6.0.24 @ 0x94bcc */
| #include <stdint.h>
|
; (fcn) fcn.00094bcc () | void fcn_00094bcc (int32_t arg1, int32_t arg2) {
| char * s;
| int32_t var_40h;
| r0 = arg1;
| r1 = arg2;
0x00094bcc ldr r3, [r1] | r3 = *(r1);
0x00094bd0 push {r4, r5, r6, lr} |
0x00094bd4 cmp r3, 0 |
0x00094bd8 sub sp, sp, 0x40 |
0x00094bdc mov r4, r0 | r4 = r0;
0x00094be0 mov r5, r1 | r5 = r1;
| if (r3 != 0) {
0x00094be4 beq 0x94c18 |
0x00094be8 ldr r1, [pc, 0x84] | r1 = *(0x94c70);
0x00094bec mov r2, 1 | r2 = 1;
0x00094bf0 add r1, pc, r1 | r1 = pc + r1;
0x00094bf4 bl 0x94194 | fcn_00094194 (r0, r1);
0x00094bf8 ldr r1, [r5] | r1 = *(r5);
0x00094bfc mov r0, r4 | r0 = r4;
0x00094c00 mvn r2, 0 | r2 = ~0;
0x00094c04 bl 0x94194 | fcn_00094194 (r0, r1);
0x00094c08 ldr r1, [pc, 0x68] | r1 = "Sd4swapERSd";
0x00094c0c mov r0, r4 | r0 = r4;
0x00094c10 add r1, pc, r1 | r1 = pc + r1;
0x00094c14 bl 0x9430c | fcn_0009430c (r0, r1);
| }
0x00094c18 ldr r1, [pc, 0x5c] | r1 = *(0x94c78);
0x00094c1c mov r6, sp | r6 = sp;
0x00094c20 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00094c24 add r1, pc, r1 | r1 = pc + r1;
0x00094c28 mov r0, r6 | r0 = r6;
0x00094c2c bl 0x77698 | sprintf (r0, r1, r2)
0x00094c30 mov r1, r6 | r1 = r6;
0x00094c34 mov r2, r0 | r2 = r0;
0x00094c38 mov r0, r4 | r0 = r4;
0x00094c3c bl 0x94194 | fcn_00094194 (r0, r1);
0x00094c40 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00094c44 cmp r3, 0 |
| if (r3 != 0) {
0x00094c48 beq 0x94c6c |
0x00094c4c ldr r1, [pc, 0x2c] | r1 = "NSt9basic_iosIcSt11char_traitsIcEED1Ev";
0x00094c50 mov r0, r4 | r0 = r4;
0x00094c54 add r1, pc, r1 | r1 = pc + r1;
0x00094c58 mov r2, 9 | r2 = 9;
0x00094c5c bl 0x94194 | fcn_00094194 (r0, r1);
0x00094c60 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00094c64 mov r0, r4 | r0 = r4;
0x00094c68 bl 0x94314 | fcn_00094314 (r0, r1);
| }
0x00094c6c add sp, sp, 0x40 |
0x00094c70 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/libstdc++.so.6.0.24 @ 0x9533c */
| #include <stdint.h>
|
; (fcn) method.__gnu_debug::_Error_formatter._M_error___const () | void method_gnu_debug::_Error_formatter_M_error_const (int32_t arg1) {
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_dh;
| char * * endptr;
| r0 = arg1;
| /* __gnu_debug::_Error_formatter::_M_error() const */
0x0009533c push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00095340 mov r7, r0 | r7 = r0;
0x00095344 ldr r0, [pc, 0x448] | r0 = *(0x95790);
0x00095348 sub sp, sp, 0x94 |
0x0009534c mov r3, 0x4e | r3 = 0x4e;
0x00095350 str r3, [sp, 4] | var_4h = r3;
0x00095354 mov r4, 0 | r4 = 0;
0x00095358 mov r3, 1 | r3 = 1;
0x0009535c add r0, pc, r0 | r0 = pc + r0;
0x00095360 str r3, [sp, 8] | var_8h = r3;
0x00095364 strb r3, [sp, 0xc] | var_ch = r3;
0x00095368 strb r4, [sp, 0xd] | var_dh = r4;
0x0009536c bl 0x753f4 | r0 = getenv (r0);
0x00095370 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00095374 beq 0x953a0 |
0x00095378 mov r2, r4 | r2 = r4;
0x0009537c add r1, sp, 0x10 | r1 += endptr;
0x00095380 bl 0x7756c | strtoul (r0, r1, r2);
0x00095384 ldrb r3, [r5] | r3 = *(r5);
0x00095388 cmp r3, r4 |
| if (r3 == r4) {
0x0009538c beq 0x953a0 | goto label_3;
| }
0x00095390 ldr r3, [sp, 0x10] | r3 = endptr;
0x00095394 ldrb r3, [r3] | r3 = *(r3);
0x00095398 cmp r3, r4 |
| if (r3 == r4) {
0x0009539c streq r0, [sp, 4] | var_4h = r0;
| goto label_3;
| }
| }
| label_3:
0x000953a0 ldr r1, [r7] | r1 = *(r7);
0x000953a4 add r4, sp, 4 | r4 += var_4h;
0x000953a8 cmp r1, 0 |
| if (r1 != 0) {
0x000953ac beq 0x953d4 |
0x000953b0 mvn r2, 0 | r2 = ~0;
0x000953b4 mov r0, r4 | r0 = r4;
0x000953b8 bl 0x94194 | fcn_00094194 (r0, r1);
0x000953bc ldr r1, [pc, 0x3d4] | r1 = "__IcESaIcEEESt13_Ios_Openmode";
0x000953c0 mov r2, 1 | r2 = 1;
0x000953c4 add r1, pc, r1 | r1 = pc + r1;
0x000953c8 mov r0, r4 | r0 = r4;
0x000953cc bl 0x94194 | fcn_00094194 (r0, r1);
0x000953d0 mov r1, 1 | r1 = 1;
| }
0x000953d4 ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x000953d8 cmp r2, 0 |
| if (r2 == 0) {
0x000953dc beq 0x9541c | goto label_4;
| }
0x000953e0 ldr r1, [pc, 0x3b4] | r1 = *(0x95798);
0x000953e4 add r5, sp, 0x10 | r5 += endptr;
0x000953e8 add r1, pc, r1 | r1 = pc + r1;
0x000953ec mov r0, r5 | r0 = r5;
0x000953f0 bl 0x77698 | sprintf (r0, r1, r2)
0x000953f4 mov r1, r5 | r1 = r5;
0x000953f8 mov r2, r0 | r2 = r0;
0x000953fc mov r0, r4 | r0 = r4;
0x00095400 bl 0x94194 | fcn_00094194 (r0, r1);
| do {
0x00095404 ldr r1, [pc, 0x394] | r1 = *(0x9579c);
0x00095408 mov r2, 1 | r2 = 1;
0x0009540c add r1, pc, r1 | r1 = pc + r1;
0x00095410 mov r0, r4 | r0 = r4;
0x00095414 bl 0x94194 | fcn_00094194 (r0, r1);
0x00095418 b 0x95424 | goto label_5;
| label_4:
0x0009541c cmp r1, 0 |
0x00095420 bne 0x95404 |
| } while (r1 != 0);
| label_5:
0x00095424 ldr r3, [sp, 4] | r3 = var_4h;
0x00095428 ldr r1, [pc, 0x374] | r1 = *(0x957a0);
0x0009542c cmp r3, 0 |
| if (r3 == 0) {
0x00095430 movne r3, 1 | r3 = 1;
| }
0x00095434 add r1, pc, r1 | r1 = pc + r1;
0x00095438 mov r2, 7 | r2 = 7;
0x0009543c mov r0, r4 | r0 = r4;
| if (r3 == 0) {
0x00095440 strbne r3, [sp, 0xd] | var_dh = r3;
| }
0x00095444 bl 0x94194 | fcn_00094194 (r0, r1);
0x00095448 ldr r1, [r7, 0x12c] | r1 = *((r7 + 0x12c));
0x0009544c cmp r1, 0 |
| if (r1 == 0) {
0x00095450 bne 0x95474 |
0x00095454 ldr r3, [pc, 0x34c] | r3 = *(0x957a4);
0x00095458 ldr r1, [pc, 0x34c] | r1 = *(0x957a8);
0x0009545c ldr r0, [pc, 0x34c] | r0 = "aIcEEESt13_Ios_Openmode";
0x00095460 add r3, pc, r3 | r3 = pc + r3;
0x00095464 mov r2, 0x410 | r2 = 0x410;
0x00095468 add r1, pc, r1 | r1 = pc + r1;
0x0009546c add r0, pc, r0 | r0 = pc + r0;
0x00095470 bl 0x7552c | assert ();
| }
0x00095474 ldr r3, [r7, 0x128] | r3 = *((r7 + 0x128));
0x00095478 add r2, r7, 8 | r2 = r7 + 8;
0x0009547c mov r0, r4 | r0 = r4;
0x00095480 bl 0x94904 | fcn_00094904 (r0, r1);
0x00095484 ldr r1, [pc, 0x328] | r1 = *(0x957b0);
0x00095488 ldr sb, [pc, 0x328] | sb = *(0x957b4);
0x0009548c ldr sl, [pc, 0x328] | sl = "itsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode";
0x00095490 ldr fp, [pc, 0x328] | fp = "itsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode";
0x00095494 mov r6, 0 | r6 = 0;
0x00095498 add r1, pc, r1 | r1 = pc + r1;
0x0009549c mov r0, r4 | r0 = r4;
0x000954a0 bl 0x9430c | fcn_0009430c (r0, r1);
0x000954a4 add r5, r7, 0xc | r5 = r7 + 0xc;
0x000954a8 mov r3, 1 | r3 = 1;
0x000954ac mov r2, r6 | r2 = r6;
0x000954b0 add sb, pc, sb | sb = pc + sb;
0x000954b4 add sl, pc, sl | sl = pc + sl;
0x000954b8 add fp, pc, fp |
0x000954bc strb r3, [sp, 0xc] | var_ch = r3;
0x000954c0 strb r6, [sp, 0xd] | var_dh = r6;
| do {
0x000954c4 ldr r3, [r7, 0x128] | r3 = *((r7 + 0x128));
0x000954c8 cmp r3, r6 |
| if (r3 < r6) {
0x000954cc bls 0x95790 | goto label_6;
| }
0x000954d0 ldr r1, [r5, -4] | r1 = *((r5 - 4));
0x000954d4 cmp r1, 6 |
| if (r1 <= 6) {
0x000954d8 bhi 0x9569c |
0x000954dc mov r3, 1 | r3 = 1;
0x000954e0 lsl r3, r3, r1 | r3 <<= r1;
0x000954e4 tst r3, 0x66 |
| if ((r3 & 0x66) == 0) {
0x000954e8 beq 0x9569c | goto label_7;
| }
0x000954ec cmp r2, 0 |
| if (r2 == 0) {
0x000954f0 bne 0x95508 |
0x000954f4 ldr r1, [pc, 0x2c8] | r1 = "itsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode";
0x000954f8 mov r2, 0x24 | r2 = 0x24;
0x000954fc add r1, pc, r1 | r1 = pc + r1;
0x00095500 mov r0, r4 | r0 = r4;
0x00095504 bl 0x94194 | fcn_00094194 (r0, r1);
| }
0x00095508 ldr r3, [r5, -4] | r3 = *((r5 - 4));
0x0009550c sub r8, r5, 4 | r8 = r5 - 4;
0x00095510 sub r3, r3, 1 | r3--;
0x00095514 cmp r3, 5 |
| if (r3 > 5) {
| /* switch table (6 cases) at 0x95520 */
0x00095518 addls pc, pc, r3, lsl 2 | pc += (r3 << 2);
| }
0x0009551c b 0x95698 | goto label_8;
0x00095520 b 0x95538 | goto label_9;
0x00095524 b 0x956a8 | goto label_10;
0x00095528 b 0x95698 | goto label_8;
0x0009552c b 0x95698 | goto label_8;
0x00095530 b 0x956e8 | goto label_11;
0x00095534 b 0x956f8 | goto label_12;
| label_9:
0x00095538 ldr r1, [pc, 0x288] | r1 = "ar_traitsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode";
0x0009553c mov r2, 9 | r2 = 9;
0x00095540 add r1, pc, r1 | r1 = pc + r1;
0x00095544 mov r0, r4 | r0 = r4;
0x00095548 bl 0x94194 | fcn_00094194 (r0, r1);
0x0009554c mov r1, r5 | r1 = r5;
0x00095550 mov r0, r4 | r0 = r4;
0x00095554 bl 0x94bcc | fcn_00094bcc (r0, r1);
0x00095558 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x0009555c cmp r3, 0 |
| if (r3 != 0) {
0x00095560 beq 0x955b8 |
0x00095564 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00095568 cmp r3, 0 |
| if (r3 != 0) {
0x0009556c beq 0x955a8 |
0x00095570 ldr r1, [pc, 0x254] | r1 = *(0x957c8);
0x00095574 mov r0, r4 | r0 = r4;
0x00095578 add r1, pc, r1 | r1 = pc + r1;
0x0009557c bl 0x9430c | fcn_0009430c (r0, r1);
0x00095580 ldr r2, [pc, 0x248] | r2 = *(0x957cc);
0x00095584 mov r1, r8 | r1 = r8;
0x00095588 add r2, pc, r2 | r2 = pc + r2;
0x0009558c mov r0, r4 | r0 = r4;
0x00095590 bl 0x944c4 | fcn_000944c4 (r0, r1);
0x00095594 ldr r1, [pc, 0x238] | r1 = *(0x957d0);
0x00095598 mov r2, 0xa | r2 = 0xa;
0x0009559c add r1, pc, r1 | r1 = pc + r1;
0x000955a0 mov r0, r4 | r0 = r4;
0x000955a4 bl 0x94194 | fcn_00094194 (r0, r1);
| }
0x000955a8 ldr r1, [pc, 0x228] | r1 = *(0x957d4);
0x000955ac mov r0, r4 | r0 = r4;
0x000955b0 add r1, pc, r1 | r1 = pc + r1;
0x000955b4 bl 0x9430c | fcn_0009430c (r0, r1);
| }
0x000955b8 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000955bc cmp r3, 0 |
| if (r3 != 0) {
0x000955c0 beq 0x955fc |
0x000955c4 ldr r1, [pc, 0x210] | r1 = "_ifstreamIwSt11char_traitsIwEEC1ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode";
0x000955c8 mov r2, 0xa | r2 = 0xa;
0x000955cc add r1, pc, r1 | r1 = pc + r1;
0x000955d0 mov r0, r4 | r0 = r4;
0x000955d4 bl 0x94194 | fcn_00094194 (r0, r1);
0x000955d8 ldr r2, [pc, 0x200] | r2 = *(0x957dc);
0x000955dc mov r1, r8 | r1 = r8;
0x000955e0 mov r0, r4 | r0 = r4;
0x000955e4 add r2, pc, r2 | r2 = pc + r2;
0x000955e8 bl 0x944c4 | fcn_000944c4 (r0, r1);
0x000955ec ldr r1, [pc, 0x1f0] | r1 = *(0x957e0);
0x000955f0 mov r0, r4 | r0 = r4;
0x000955f4 add r1, pc, r1 | r1 = pc + r1;
0x000955f8 bl 0x9430c | fcn_0009430c (r0, r1);
| }
0x000955fc ldr r3, [r5, 0x14] | r3 = *((r5 + 0x14));
0x00095600 cmp r3, 0 |
| if (r3 != 0) {
0x00095604 beq 0x95688 |
0x00095608 ldr r1, [pc, 0x1d8] | r1 = "t7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode";
0x0009560c mov r2, 0x16 | r2 = 0x16;
0x00095610 add r1, pc, r1 | r1 = pc + r1;
0x00095614 mov r0, r4 | r0 = r4;
0x00095618 bl 0x94194 | fcn_00094194 (r0, r1);
0x0009561c ldr r3, [r5, 0x18] | r3 = *((r5 + 0x18));
0x00095620 cmp r3, 0 |
| if (r3 != 0) {
0x00095624 beq 0x95660 |
0x00095628 ldr r1, [pc, 0x1bc] | r1 = "IwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode";
0x0009562c mov r2, 0xb | r2 = 0xb;
0x00095630 add r1, pc, r1 | r1 = pc + r1;
0x00095634 mov r0, r4 | r0 = r4;
0x00095638 bl 0x94194 | fcn_00094194 (r0, r1);
0x0009563c ldr r2, [pc, 0x1ac] | r2 = *(0x957ec);
0x00095640 mov r1, r8 | r1 = r8;
0x00095644 mov r0, r4 | r0 = r4;
0x00095648 add r2, pc, r2 | r2 = pc + r2;
0x0009564c bl 0x944c4 | fcn_000944c4 (r0, r1);
0x00095650 ldr r1, [pc, 0x19c] | r1 = "EC2Ev";
0x00095654 mov r0, r4 | r0 = r4;
0x00095658 add r1, pc, r1 | r1 = pc + r1;
0x0009565c bl 0x9430c | fcn_0009430c (r0, r1);
| }
0x00095660 ldr r1, [pc, 0x190] | r1 = *(0x957f4);
0x00095664 add r8, sp, 0x10 | r8 += endptr;
0x00095668 ldr r2, [r5, 0x14] | r2 = *((r5 + 0x14));
0x0009566c add r1, pc, r1 | r1 = pc + r1;
0x00095670 mov r0, r8 | r0 = r8;
0x00095674 bl 0x77698 | sprintf (r0, r1, r2)
0x00095678 mov r1, r8 | r1 = r8;
0x0009567c mov r2, r0 | r2 = r0;
0x00095680 mov r0, r4 | r0 = r4;
0x00095684 bl 0x94194 | fcn_00094194 (r0, r1);
| }
| label_0:
0x00095688 ldr r1, [pc, 0x16c] | r1 = "_3_Ios_Openmode";
0x0009568c mov r0, r4 | r0 = r4;
0x00095690 add r1, pc, r1 | r1 = pc + r1;
0x00095694 bl 0x9430c | fcn_0009430c (r0, r1);
| label_8:
0x00095698 mov r2, 1 | r2 = 1;
| }
| label_7:
0x0009569c add r6, r6, 1 | r6++;
0x000956a0 add r5, r5, 0x20 | r5 += 0x20;
0x000956a4 b 0x954c4 |
| } while (1);
| label_10:
0x000956a8 ldr r1, [pc, 0x150] | r1 = "asic_stringIcS0_IcESaIcEEESt13_Ios_Openmode";
0x000956ac mov r2, 9 | r2 = 9;
0x000956b0 add r1, pc, r1 | r1 = pc + r1;
| label_1:
0x000956b4 mov r0, r4 | r0 = r4;
0x000956b8 bl 0x94194 | fcn_00094194 (r0, r1);
0x000956bc mov r1, r5 | r1 = r5;
0x000956c0 mov r0, r4 | r0 = r4;
0x000956c4 bl 0x94bcc | fcn_00094bcc (r0, r1);
0x000956c8 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000956cc cmp r3, 0 |
| if (r3 == 0) {
0x000956d0 beq 0x95688 | goto label_0;
| }
0x000956d4 ldr r1, [pc, 0x128] | r1 = *(0x95800);
0x000956d8 add r1, pc, r1 | r1 = pc + r1;
| label_2:
0x000956dc mov r0, r4 | r0 = r4;
0x000956e0 bl 0x9430c | fcn_0009430c (r0, r1);
0x000956e4 b 0x95688 | goto label_0;
| label_11:
0x000956e8 ldr r1, [pc, 0x118] | r1 = "_traitsIwEEaSEOS2_";
0x000956ec mov r2, 9 | r2 = 9;
0x000956f0 add r1, pc, r1 | r1 = pc + r1;
0x000956f4 b 0x956b4 | goto label_1;
| label_12:
0x000956f8 mov r2, 0x15 | r2 = 0x15;
0x000956fc mov r1, sb | r1 = sb;
0x00095700 mov r0, r4 | r0 = r4;
0x00095704 bl 0x94194 | fcn_00094194 (r0, r1);
0x00095708 ldr r3, [r5] | r3 = *(r5);
0x0009570c cmp r3, 0 |
| if (r3 != 0) {
0x00095710 beq 0x9574c |
0x00095714 ldr r8, [pc, 0xf0] | r8 = *(0x95808);
0x00095718 mov r2, 1 | r2 = 1;
0x0009571c add r8, pc, r8 | r8 = pc + r8;
0x00095720 mov r1, r8 | r1 = r8;
0x00095724 mov r0, r4 | r0 = r4;
0x00095728 bl 0x94194 | fcn_00094194 (r0, r1);
0x0009572c mvn r2, 0 | r2 = ~0;
0x00095730 ldr r1, [r5] | r1 = *(r5);
0x00095734 mov r0, r4 | r0 = r4;
0x00095738 bl 0x94194 | fcn_00094194 (r0, r1);
0x0009573c mov r2, 1 | r2 = 1;
0x00095740 mov r1, r8 | r1 = r8;
0x00095744 mov r0, r4 | r0 = r4;
0x00095748 bl 0x94194 | fcn_00094194 (r0, r1);
| }
0x0009574c mov r2, 3 | r2 = 3;
0x00095750 mov r1, sl | r1 = sl;
0x00095754 mov r0, r4 | r0 = r4;
0x00095758 bl 0x94194 | fcn_00094194 (r0, r1);
0x0009575c ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00095760 cmp r3, 0 |
| if (r3 == 0) {
0x00095764 beq 0x95688 | goto label_0;
| }
0x00095768 mov r2, 9 | r2 = 9;
0x0009576c mov r1, fp | r1 = fp;
0x00095770 mov r0, r4 | r0 = r4;
0x00095774 bl 0x94194 | fcn_00094194 (r0, r1);
0x00095778 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x0009577c mov r0, r4 | r0 = r4;
0x00095780 bl 0x94314 | fcn_00094314 (r0, r1);
0x00095784 ldr r1, [pc, 0x84] | r1 = "_Ev";
0x00095788 add r1, pc, r1 | r1 = pc + r1;
0x0009578c b 0x956dc | goto label_2;
| label_6:
0x00095790 bl 0x74704 | abort ();
0x00095794 strheq lr, [r4], -r8 | __asm ("strheq lr, [r4], -r8");
| if (r3 != 0) {
0x00095798 andeq sp, r4, r3, lsl 8 |
| }
| if (r3 != 0) {
0x0009579c andeq lr, r4, sb, asr 20 | lr = r4 & (sb >> 20);
| }
| if (r3 != 0) {
0x000957a0 andeq sp, r4, r1, lsl r3 |
| }
| if (r3 != 0) {
0x000957a4 andeq lr, r4, r1, lsl 20 | lr = r4 & (r1 << 20);
| }
| if (r3 != 0) {
0x000957a8 andeq lr, r4, r3, asr 23 | lr = r4 & (r3 >> 23);
| }
| if (r3 != 0) {
0x000957ac andeq lr, r4, r2, asr 16 | lr = r4 & (r2 >> 16);
| }
0x000957b0 ldrdeq lr, pc, [r4], -r1 | __asm ("ldrdeq lr, pc, [r4], -r1");
| if (r3 != 0) {
0x000957b4 andeq lr, r4, sp, lsr 19 | lr = r4 & (sp >> 19);
| }
| if (r3 != 0) {
0x000957b8 andeq lr, r4, fp, lsl sl | lr = r4 & (fp << sl);
| }
| if (r3 != 0) {
0x000957bc andeq lr, r4, r2, asr sb | lr = r4 & (r2 >> sb);
| }
| if (r3 != 0) {
0x000957c0 andeq lr, r4, r2, asr sb | lr = r4 & (r2 >> sb);
| }
| if (r3 != 0) {
0x000957c4 andeq lr, r4, ip, asr 18 | lr = r4 & (ip >> 18);
| }
| if (r3 != 0) {
0x000957c8 andeq lr, r4, sp, lsr 18 | lr = r4 & (sp >> 18);
| }
| if (r3 != 0) {
0x000957cc andeq sp, r4, r5, ror 7 |
| }
| if (r3 != 0) {
0x000957d0 muleq r4, r5, r7 | r4 = r5 * r7;
| }
0x000957d4 ldrdeq lr, pc, [r4], -fp | __asm ("ldrdeq lr, pc, [r4], -fp");
0x000957d8 ldrdeq lr, pc, [r4], -r2 | __asm ("ldrdeq lr, pc, [r4], -r2");
0x000957dc strheq lr, [r4], -sb | __asm ("strheq lr, [r4], -sb");
| if (r3 != 0) {
0x000957e0 andeq pc, r4, r7, asr 18 | pc = r4 & (r7 >> 18);
| }
| if (r3 != 0) {
0x000957e4 andeq lr, r4, lr, lsl 17 | lr = r4 & (lr << 17);
| }
| if (r3 != 0) {
0x000957e8 andeq lr, r4, r0, lsl 17 | lr = r4 & (r0 << 17);
| }
| if (r3 != 0) {
0x000957ec andeq lr, r4, r7, ror r8 | lr = r4 & (r7 >>> r8);
| }
0x000957f0 strdeq lr, pc, [r4], -r4 | __asm ("strdeq lr, pc, [r4], -r4");
| if (r3 != 0) {
0x000957f4 andeq lr, r4, fp, asr r8 | lr = r4 & (fp >> r8);
| }
| if (r3 != 0) {
0x000957f8 andeq lr, r4, sl, asr 16 | lr = r4 & (sl >> 16);
| }
| if (r3 != 0) {
0x000957fc andeq lr, r4, lr, lsr 16 | lr = r4 & (lr >> 16);
| }
| if (r3 != 0) {
0x00095800 andeq lr, r4, sp, ror 15 | lr = r4 & (sp >>> 15);
| }
| if (r3 != 0) {
0x00095804 andeq lr, r4, sl, lsr 15 | lr = r4 & (sl >> 15);
| }
0x00095808 ldrdeq lr, pc, [r4], -r1 | __asm ("ldrdeq lr, pc, [r4], -r1");
0x0009580c strheq pc, [r4], -r4 | __asm ("strheq pc, [r4], -r4");
0x00095810 strdeq lr, pc, [r4], -sl | __asm ("strdeq lr, pc, [r4], -sl");
| }
[*] Function sprintf used 7 times libstdc++.so.6.0.24