[*] Binary protection state of libpaho-mqttpp3.so.1.2.0
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function system tear down of libpaho-mqttpp3.so.1.2.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/libpaho-mqttpp3.so.1.2.0 @ 0x21498 */
| #include <stdint.h>
|
; (fcn) method.bool_mqtt::token::wait_for_long_long__std.ratio_1ll__1000ll____std::chrono::duration_long_long__std::ratio_1ll__1000ll____const_ () | void method_bool_mqtt::token::wait_for_long_long_std_ratio_1ll_1000ll_std::chrono::duration_long_long_std::ratio_1ll_1000ll_const_ (int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_0h_2;
| int32_t var_8h;
| int32_t var_8h_2;
| int32_t var_10h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_24h;
| r0 = arg1;
| r1 = arg2;
| /* bool mqtt::token::wait_for<long long, std::ratio<1ll, 1000ll> >(std::chrono::duration<long long, std::ratio<1ll, 1000ll> > const&) */
0x00021498 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0002149c sub sp, sp, 0x24 |
0x000214a0 add r5, sp, 0x10 | r5 += var_10h;
0x000214a4 mov r6, r1 | r6 = r1;
0x000214a8 mov r4, r0 | r4 = r0;
0x000214ac add r1, r0, 4 | r1 = r0 + 4;
0x000214b0 mov r0, r5 | r0 = r5;
0x000214b4 bl 0x1b1c0 | fcn_0001b1c0 ();
0x000214b8 ldr r3, [pc, 0xd8] | r3 = imp._ZTINSt6thread6_StateE;
0x000214bc ldr r1, [r6] | r1 = *(r6);
0x000214c0 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x000214c4 umull r6, r7, r1, r3 | r6:r7 = r1 * r3;
0x000214c8 add r8, sp, 8 | r8 += var_8h;
0x000214cc mov r0, r8 | r0 = r8;
0x000214d0 mla r7, r3, r2, r7 | __asm ("mla r7, r3, r2, r7");
0x000214d4 bl 0x1ac44 | sym ();
0x000214d8 ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x000214dc add fp, r4, 0x20 |
0x000214e0 adds r0, r6, r2 | r0 = r6 + r2;
0x000214e4 adc r1, r7, r3 | __asm ("adc r1, r7, r3");
0x000214e8 add r3, pc, 0xa0 | r3 = pc + 0xa0;
0x000214ec ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x000214f0 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x000214f4 bl 0x1b514 | aeabi_ldivmod ();
0x000214f8 add r3, pc, 0x90 | r3 = pc + 0x90;
0x000214fc ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x00021500 mov sb, r0 | sb = r0;
0x00021504 ldrd r0, r1, [sp] | __asm ("ldrd r0, r1, [sp]");
0x00021508 bl 0x1b514 | aeabi_ldivmod ();
0x0002150c add r3, sp, 0x18 | r3 += var_18h;
0x00021510 mov r6, r3 | r6 = r3;
0x00021514 mov sl, r2 | sl = r2;
| do {
0x00021518 ldrb r3, [r4, 0x90] | r3 = *((r4 + 0x90));
0x0002151c cmp r3, 0 |
| if (r3 != 0) {
0x00021520 bne 0x21564 | goto label_0;
| }
0x00021524 mov r2, r6 | r2 = r6;
0x00021528 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0002152c mov r0, fp | r0 = fp;
0x00021530 str sb, [sp, 0x18] | var_18h = sb;
0x00021534 str sl, [sp, 0x1c] | var_1ch = sl;
0x00021538 bl 0x1b814 | pthread_cond_timedwait ();
0x0002153c mov r0, r8 | r0 = r8;
0x00021540 bl 0x1ac44 | sym ();
0x00021544 ldrd r2, r3, [sp, 8] | __asm ("ldrd r2, r3, [var_8h]");
0x00021548 ldrd r0, r1, [sp] | __asm ("ldrd r0, r1, [sp]");
0x0002154c cmp r2, r0 |
0x00021550 sbcs r3, r3, r1 | __asm ("sbcs r3, r3, r1");
0x00021554 blt 0x21518 |
| } while (r2 < r0);
0x00021558 ldrb r6, [r4, 0x90] | r6 = *((r4 + 0x90));
0x0002155c cmp r6, 0 |
| if (r6 != 0) {
0x00021560 beq 0x21570 |
| label_0:
0x00021564 mov r0, r4 | r0 = r4;
0x00021568 bl 0x1b364 | fcn_0001b364 ();
0x0002156c mov r6, 1 | r6 = 1;
| }
0x00021570 mov r0, r5 | r0 = r5;
0x00021574 bl 0x1af38 | fcn_0001af38 ();
0x00021578 mov r0, r6 | r0 = r6;
0x0002157c add sp, sp, 0x24 |
0x00021580 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
[*] Function system used 1 times libpaho-mqttpp3.so.1.2.0