; assembly | /* r2dec pseudo code output */ | /* bdlde_charconvertutf16.t/assume @ 0x42b700 */ | #include | ; (fcn) method.BloombergLP::bdlde::CharConvertUtf16.utf8ToUtf16_bsl::vector_unsigned_short__bsl::allocator_unsigned_short_____std::__1::basic_string_view_char__std::__1::char_traits_char____const__unsigned_long__unsigned_short__BloombergLP::bdlde::ByteOrder:: () | uint64_t method_BloombergLP::bdlde::CharConvertUtf16_utf8ToUtf16_bsl::vector_unsigned_short_bsl::allocator_unsigned_short_std::_1::basic_string_view_char_std::_1::char_traits_char_const_unsigned_long_unsigned_short_BloombergLP::bdlde::ByteOrder:: (int64_t arg5, int64_t arg4, uint32_t arg3, char * arg2, uint32_t arg1) { | uint32_t var_8h; | int64_t var_10h; | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlde::CharConvertUtf16::utf8ToUtf16(bsl::vector >*, std::__1::basic_string_view > const&, unsigned long*, unsigned short, BloombergLP::bdlde::ByteOrder::Enum) */ 0x0042b700 push rbp | 0x0042b701 push r15 | 0x0042b703 push r14 | 0x0042b705 push r13 | 0x0042b707 push r12 | 0x0042b709 push rbx | 0x0042b70a sub rsp, 0x18 | 0x0042b70e mov ebp, r8d | 0x0042b711 mov r13d, ecx | r13d = ecx; 0x0042b714 mov qword [rsp + 8], rdx | *((rsp + 8)) = rdx; 0x0042b719 mov r15, rsi | r15 = rsi; 0x0042b71c mov r12, rdi | r12 = rdi; 0x0042b71f mov rdi, qword [rsi] | rdi = *(rsi); 0x0042b722 mov rbx, qword [rsi + 8] | rbx = *((rsi + 8)); 0x0042b726 add rbx, rdi | rbx += rdi; 0x0042b729 mov rsi, rbx | rsi = rbx; 0x0042b72c call 0x430bc0 | rax = unsigned long(anonymousnamespace)::utf16BufferLength<(anonymousnamespace)::Utf8::PtrBasedEnd>(char const*,(anonymousnamespace)::Utf8::PtrBasedEnd) (); 0x0042b731 mov r14, rax | r14 = rax; 0x0042b734 mov rdi, qword [r12] | rdi = *(r12); 0x0042b738 mov rax, qword [r12 + 8] | rax = *((r12 + 8)); 0x0042b73d sub rax, rdi | rax -= rdi; 0x0042b740 sar rax, 1 | rax >>= 1; 0x0042b743 cmp r14, rax | | if (r14 > rax) { 0x0042b746 jbe 0x42b757 | 0x0042b748 mov rdi, r12 | 0x0042b74b mov rsi, r14 | 0x0042b74e call 0x447ab0 | bsl::vector>::resize(unsigned long) (r12, r14); 0x0042b753 mov rdi, qword [r12] | rdi = *(r12); | } 0x0042b757 mov rsi, qword [r15] | rsi = *(r15); 0x0042b75a movzx r9d, r13w | r9d = (int32_t) r13w; 0x0042b75e lea r8, [rsp + 0x10] | r8 = rsp + 0x10; 0x0042b763 mov rdx, rbx | rdx = rbx; 0x0042b766 test ebp, ebp | | if (ebp != 0) { 0x0042b768 je 0x42b776 | 0x0042b76a mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); 0x0042b76f call 0x432240 | int(anonymousnamespace)::localUtf8ToUtf16>(unsignedshort*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::PtrBasedEnd,(anonymousnamespace)::Swapper,unsigned long*,unsigned long*,unsignedshort) (); 0x0042b774 jmp 0x42b780 | | } else { 0x0042b776 mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); 0x0042b77b call 0x431e70 | eax = int(anonymousnamespace)::localUtf8ToUtf16>(unsignedshort*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::PtrBasedEnd,(anonymousnamespace)::NoOpSwapper,unsigned long*,unsigned long*,unsignedshort) (); | } 0x0042b780 mov ebx, eax | ebx = eax; 0x0042b782 mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x0042b787 cmp rsi, r14 | 0x0042b78a mov rax, qword [r12 + 8] | rax = *((r12 + 8)); 0x0042b78f sub rax, qword [r12] | rax -= *(r12); 0x0042b793 sar rax, 1 | rax >>= 1; 0x0042b796 cmp rax, rsi | | if (rax != rsi) { 0x0042b799 je 0x42b7a3 | 0x0042b79b mov rdi, r12 | 0x0042b79e call 0x447ab0 | bsl::vector>::resize(unsigned long) (r12, rsi); | } 0x0042b7a3 mov eax, ebx | eax = ebx; 0x0042b7a5 add rsp, 0x18 | 0x0042b7a9 pop rbx | 0x0042b7aa pop r12 | 0x0042b7ac pop r13 | 0x0042b7ae pop r14 | 0x0042b7b0 pop r15 | 0x0042b7b2 pop rbp | 0x0042b7b3 ret | return rax; | }