; assembly | /* r2dec pseudo code output */ | /* bdlde_charconvertutf16.t/assume @ 0x42b590 */ | #include | ; (fcn) method.BloombergLP::bdlde::CharConvertUtf16.utf8ToUtf16_bsl::basic_string_wchar_t__std::__1::char_traits_wchar_t___bsl::allocator_wchar_t_____char_const__unsigned_long__wchar_t__BloombergLP::bdlde::ByteOrder::Enum_ () | uint64_t method_BloombergLP::bdlde::CharConvertUtf16_utf8ToUtf16_bsl::basic_string_wchar_t_std::_1::char_traits_wchar_t_bsl::allocator_wchar_t_char_const_unsigned_long_wchar_t_BloombergLP::bdlde::ByteOrder::Enum_ (int64_t arg5, int64_t arg4, uint32_t arg3, uint32_t arg2, char * arg1) { | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlde::CharConvertUtf16::utf8ToUtf16(bsl::basic_string, bsl::allocator >*, char const*, unsigned long*, wchar_t, BloombergLP::bdlde::ByteOrder::Enum) */ 0x0042b590 push rbp | 0x0042b591 push r15 | 0x0042b593 push r14 | 0x0042b595 push r13 | 0x0042b597 push r12 | 0x0042b599 push rbx | 0x0042b59a push rax | 0x0042b59b mov r13d, r8d | r13d = r8d; 0x0042b59e mov r15d, ecx | r15d = ecx; 0x0042b5a1 mov r12, rdx | r12 = rdx; 0x0042b5a4 mov rbp, rsi | 0x0042b5a7 mov rbx, rdi | rbx = rdi; 0x0042b5aa mov rdi, rsi | rdi = rsi; 0x0042b5ad call 0x431590 | rax = unsigned long(anonymousnamespace)::utf16BufferLength<(anonymousnamespace)::Utf8::ZeroBasedEnd>(char const*,(anonymousnamespace)::Utf8::ZeroBasedEnd) (); 0x0042b5b2 mov r14, rax | r14 = rax; 0x0042b5b5 cmp rax, qword [rbx + 0x18] | | if (rax > *((rbx + 0x18))) { 0x0042b5b9 jbe 0x42b5d7 | 0x0042b5bb movabs rax, 0x3ffffffffffffffe | rax = 0x3ffffffffffffffe; 0x0042b5c5 cmp r14, rax | | if (r14 > rax) { 0x0042b5c8 ja 0x42b639 | goto label_0; | } 0x0042b5ca mov rdi, rbx | 0x0042b5cd mov rsi, r14 | 0x0042b5d0 xor edx, edx | 0x0042b5d2 call 0x43be10 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,wchar_t) (rbx, r14, 0); | } 0x0042b5d7 cmp qword [rbx + 0x20], 5 | | if (*((rbx + 0x20)) == 5) { 0x0042b5dc jne 0x42b5e3 | 0x0042b5de mov rdi, rbx | rdi = rbx; 0x0042b5e1 jmp 0x42b5e6 | | } else { 0x0042b5e3 mov rdi, qword [rbx] | rdi = *(rbx); | } 0x0042b5e6 mov rcx, rsp | rcx = rsp; 0x0042b5e9 mov rsi, rbp | rsi = rbp; 0x0042b5ec mov rdx, r12 | rdx = r12; 0x0042b5ef mov r8d, r15d | r8d = r15d; 0x0042b5f2 test r13d, r13d | | if (r13d != 0) { 0x0042b5f5 je 0x42b5fe | 0x0042b5f7 call 0x431ad0 | int(anonymousnamespace)::localUtf8ToUtf16>(wchar_t*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::ZeroBasedEnd,(anonymousnamespace)::Swapper,unsigned long*,unsigned long*,wchar_t) (); 0x0042b5fc jmp 0x42b603 | | } else { 0x0042b5fe call 0x431710 | eax = int(anonymousnamespace)::localUtf8ToUtf16>(wchar_t*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::ZeroBasedEnd,(anonymousnamespace)::NoOpSwapper,unsigned long*,unsigned long*,wchar_t) (); | } 0x0042b603 mov ebp, eax | 0x0042b605 mov rsi, qword [rsp] | rsi = *(rsp); 0x0042b609 cmp rsi, r14 | 0x0042b60c dec rsi | rsi--; 0x0042b60f movabs rax, 0x3ffffffffffffffe | rax = 0x3ffffffffffffffe; 0x0042b619 cmp rsi, rax | | if (rsi <= rax) { 0x0042b61c ja 0x42b639 | 0x0042b61e mov rdi, rbx | 0x0042b621 xor edx, edx | 0x0042b623 call 0x43be10 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,wchar_t) (rbx, rsi, 0); 0x0042b628 mov eax, ebp | eax = ebp; 0x0042b62a add rsp, 8 | 0x0042b62e pop rbx | 0x0042b62f pop r12 | 0x0042b631 pop r13 | 0x0042b633 pop r14 | 0x0042b635 pop r15 | 0x0042b637 pop rbp | 0x0042b638 ret | return rax; | } | label_0: 0x0042b639 mov edi, 0x45f5e2 | 0x0042b63e call 0x435460 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("string<...>::resize(n): string too long"); | }