; assembly | /* r2dec pseudo code output */ | /* bdlde_charconvertutf16.t/none @ 0x42b6c0 */ | #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) { | 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) */ 0x0042b6c0 push rbp | 0x0042b6c1 push r15 | 0x0042b6c3 push r14 | 0x0042b6c5 push r13 | 0x0042b6c7 push r12 | 0x0042b6c9 push rbx | 0x0042b6ca push rax | 0x0042b6cb mov r13d, r8d | r13d = r8d; 0x0042b6ce mov r12d, ecx | r12d = ecx; 0x0042b6d1 mov r14, rdx | r14 = rdx; 0x0042b6d4 mov rbp, rsi | 0x0042b6d7 mov r15, rdi | r15 = rdi; 0x0042b6da mov rdi, qword [rsi] | rdi = *(rsi); 0x0042b6dd mov rbx, qword [rsi + 8] | rbx = *((rsi + 8)); 0x0042b6e1 add rbx, rdi | rbx += rdi; 0x0042b6e4 mov rsi, rbx | rsi = rbx; 0x0042b6e7 call 0x4309a0 | rax = unsigned long(anonymousnamespace)::utf16BufferLength<(anonymousnamespace)::Utf8::PtrBasedEnd>(char const*,(anonymousnamespace)::Utf8::PtrBasedEnd) (); 0x0042b6ec mov rdi, qword [r15] | rdi = *(r15); 0x0042b6ef mov rcx, qword [r15 + 8] | rcx = *((r15 + 8)); 0x0042b6f3 sub rcx, rdi | rcx -= rdi; 0x0042b6f6 sar rcx, 1 | rcx >>= 1; 0x0042b6f9 cmp rax, rcx | | if (rax > rcx) { 0x0042b6fc jbe 0x42b70c | 0x0042b6fe mov rdi, r15 | 0x0042b701 mov rsi, rax | 0x0042b704 call 0x447890 | bsl::vector>::resize(unsigned long) (r15, rax); 0x0042b709 mov rdi, qword [r15] | rdi = *(r15); | } 0x0042b70c mov rsi, qword [rbp] | rsi = *(rbp); 0x0042b710 movzx r9d, r12w | r9d = (int32_t) r12w; 0x0042b714 mov r8, rsp | r8 = rsp; 0x0042b717 mov rdx, rbx | rdx = rbx; 0x0042b71a mov rcx, r14 | rcx = r14; 0x0042b71d test r13d, r13d | | if (r13d != 0) { 0x0042b720 je 0x42b729 | 0x0042b722 call 0x432020 | int(anonymousnamespace)::localUtf8ToUtf16>(unsignedshort*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::PtrBasedEnd,(anonymousnamespace)::Swapper,unsigned long*,unsigned long*,unsignedshort) (); 0x0042b727 jmp 0x42b72e | | } else { 0x0042b729 call 0x431c50 | eax = int(anonymousnamespace)::localUtf8ToUtf16>(unsignedshort*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::PtrBasedEnd,(anonymousnamespace)::NoOpSwapper,unsigned long*,unsigned long*,unsignedshort) (); | } 0x0042b72e mov ebx, eax | ebx = eax; 0x0042b730 mov rsi, qword [rsp] | rsi = *(rsp); 0x0042b734 mov rax, qword [r15 + 8] | rax = *((r15 + 8)); 0x0042b738 sub rax, qword [r15] | rax -= *(r15); 0x0042b73b sar rax, 1 | rax >>= 1; 0x0042b73e cmp rax, rsi | | if (rax != rsi) { 0x0042b741 je 0x42b74b | 0x0042b743 mov rdi, r15 | 0x0042b746 call 0x447890 | bsl::vector>::resize(unsigned long) (r15, rsi); | } 0x0042b74b mov eax, ebx | eax = ebx; 0x0042b74d add rsp, 8 | 0x0042b751 pop rbx | 0x0042b752 pop r12 | 0x0042b754 pop r13 | 0x0042b756 pop r14 | 0x0042b758 pop r15 | 0x0042b75a pop rbp | 0x0042b75b ret | return rax; | }