; assembly | /* r2dec pseudo code output */ | /* bdlde_charconvertutf16.t/none @ 0x42b400 */ | #include | ; (fcn) method.BloombergLP::bdlde::CharConvertUtf16.utf8ToUtf16_bsl::basic_string_wchar_t__std::__1::char_traits_wchar_t___bsl::allocator_wchar_t_____std::__1::basic_string_view_char__std::__1::char_traits_char____const__unsigned_long__wchar_t__BloombergLP::b () | uint64_t method_BloombergLP::bdlde::CharConvertUtf16_utf8ToUtf16_bsl::basic_string_wchar_t_std::_1::char_traits_wchar_t_bsl::allocator_wchar_t_std::_1::basic_string_view_char_std::_1::char_traits_char_const_unsigned_long_wchar_t_BloombergLP::b (int64_t arg5, uint32_t arg4, char * arg3, char * arg2, char * arg1) { | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlde::CharConvertUtf16::utf8ToUtf16(bsl::basic_string, bsl::allocator >*, std::__1::basic_string_view > const&, unsigned long*, wchar_t, BloombergLP::bdlde::ByteOrder::Enum) */ 0x0042b400 push rbp | 0x0042b401 push r15 | 0x0042b403 push r14 | 0x0042b405 push r13 | 0x0042b407 push r12 | 0x0042b409 push rbx | 0x0042b40a push rax | 0x0042b40b mov r12d, r8d | r12d = r8d; 0x0042b40e mov r14d, ecx | r14d = ecx; 0x0042b411 mov r15, rdx | r15 = rdx; 0x0042b414 mov rbx, rsi | rbx = rsi; 0x0042b417 mov r13, rdi | r13 = rdi; 0x0042b41a mov rdi, qword [rsi] | rdi = *(rsi); 0x0042b41d mov rbp, qword [rsi + 8] | rbp = *((rsi + 8)); 0x0042b421 add rbp, rdi | rbp += rdi; 0x0042b424 mov rsi, rbp | rsi = rbp; 0x0042b427 call 0x4309a0 | rax = unsigned long(anonymousnamespace)::utf16BufferLength<(anonymousnamespace)::Utf8::PtrBasedEnd>(char const*,(anonymousnamespace)::Utf8::PtrBasedEnd) (); 0x0042b42c cmp rax, qword [r13 + 0x18] | | if (rax > *((r13 + 0x18))) { 0x0042b430 jbe 0x42b44e | 0x0042b432 movabs rcx, 0x3ffffffffffffffe | rcx = 0x3ffffffffffffffe; 0x0042b43c cmp rax, rcx | | if (rax > rcx) { 0x0042b43f ja 0x42b4b1 | goto label_0; | } 0x0042b441 mov rdi, r13 | 0x0042b444 mov rsi, rax | 0x0042b447 xor edx, edx | 0x0042b449 call 0x43bbf0 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,wchar_t) (r13, rax, 0); | } 0x0042b44e cmp qword [r13 + 0x20], 5 | | if (*((r13 + 0x20)) == 5) { 0x0042b453 jne 0x42b45a | 0x0042b455 mov rdi, r13 | rdi = r13; 0x0042b458 jmp 0x42b45e | | } else { 0x0042b45a mov rdi, qword [r13] | rdi = *(r13); | } 0x0042b45e mov rsi, qword [rbx] | rsi = *(rbx); 0x0042b461 mov r8, rsp | r8 = rsp; 0x0042b464 mov rdx, rbp | rdx = rbp; 0x0042b467 mov rcx, r15 | rcx = r15; 0x0042b46a mov r9d, r14d | r9d = r14d; 0x0042b46d test r12d, r12d | | if (r12d != 0) { 0x0042b470 je 0x42b479 | 0x0042b472 call 0x430f10 | int(anonymousnamespace)::localUtf8ToUtf16>(wchar_t*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::PtrBasedEnd,(anonymousnamespace)::Swapper,unsigned long*,unsigned long*,wchar_t) (); 0x0042b477 jmp 0x42b47e | | } else { 0x0042b479 call 0x430b60 | eax = int(anonymousnamespace)::localUtf8ToUtf16>(wchar_t*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::PtrBasedEnd,(anonymousnamespace)::NoOpSwapper,unsigned long*,unsigned long*,wchar_t) (); | } 0x0042b47e mov ebx, eax | ebx = eax; 0x0042b480 mov rsi, qword [rsp] | rsi = *(rsp); 0x0042b484 dec rsi | rsi--; 0x0042b487 movabs rax, 0x3ffffffffffffffe | rax = 0x3ffffffffffffffe; 0x0042b491 cmp rsi, rax | | if (rsi <= rax) { 0x0042b494 ja 0x42b4b1 | 0x0042b496 mov rdi, r13 | 0x0042b499 xor edx, edx | 0x0042b49b call 0x43bbf0 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,wchar_t) (r13, rsi, 0); 0x0042b4a0 mov eax, ebx | eax = ebx; 0x0042b4a2 add rsp, 8 | 0x0042b4a6 pop rbx | 0x0042b4a7 pop r12 | 0x0042b4a9 pop r13 | 0x0042b4ab pop r14 | 0x0042b4ad pop r15 | 0x0042b4af pop rbp | 0x0042b4b0 ret | return rax; | } | label_0: 0x0042b4b1 mov edi, 0x45f3de | 0x0042b4b6 call 0x435240 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("string<...>::resize(n): string too long"); | }