; assembly | /* r2dec pseudo code output */ | /* bdlde_charconvertutf16.t/assume @ 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) { | uint32_t var_ch; | int64_t var_10h; | 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 sub rsp, 0x18 | 0x0042b40e mov r13d, r8d | r13d = r8d; 0x0042b411 mov dword [rsp + 0xc], ecx | *((rsp + 0xc)) = ecx; 0x0042b415 mov r12, rdx | r12 = rdx; 0x0042b418 mov r15, rsi | r15 = rsi; 0x0042b41b mov rbx, rdi | rbx = rdi; 0x0042b41e mov rdi, qword [rsi] | rdi = *(rsi); 0x0042b421 mov rbp, qword [rsi + 8] | rbp = *((rsi + 8)); 0x0042b425 add rbp, rdi | rbp += rdi; 0x0042b428 mov rsi, rbp | rsi = rbp; 0x0042b42b call 0x430bc0 | rax = unsigned long(anonymousnamespace)::utf16BufferLength<(anonymousnamespace)::Utf8::PtrBasedEnd>(char const*,(anonymousnamespace)::Utf8::PtrBasedEnd) (); 0x0042b430 mov r14, rax | r14 = rax; 0x0042b433 cmp rax, qword [rbx + 0x18] | | if (rax > *((rbx + 0x18))) { 0x0042b437 jbe 0x42b455 | 0x0042b439 movabs rax, 0x3ffffffffffffffe | rax = 0x3ffffffffffffffe; 0x0042b443 cmp r14, rax | | if (r14 > rax) { 0x0042b446 ja 0x42b4c4 | goto label_0; | } 0x0042b448 mov rdi, rbx | 0x0042b44b mov rsi, r14 | 0x0042b44e xor edx, edx | 0x0042b450 call 0x43be10 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,wchar_t) (rbx, r14, 0); | } 0x0042b455 cmp qword [rbx + 0x20], 5 | | if (*((rbx + 0x20)) == 5) { 0x0042b45a jne 0x42b461 | 0x0042b45c mov rdi, rbx | rdi = rbx; 0x0042b45f jmp 0x42b464 | | } else { 0x0042b461 mov rdi, qword [rbx] | rdi = *(rbx); | } 0x0042b464 mov rsi, qword [r15] | rsi = *(r15); 0x0042b467 lea r8, [rsp + 0x10] | r8 = rsp + 0x10; 0x0042b46c mov rdx, rbp | rdx = rbp; 0x0042b46f mov rcx, r12 | rcx = r12; 0x0042b472 test r13d, r13d | | if (r13d != 0) { 0x0042b475 je 0x42b483 | 0x0042b477 mov r9d, dword [rsp + 0xc] | r9d = *((rsp + 0xc)); 0x0042b47c call 0x431130 | int(anonymousnamespace)::localUtf8ToUtf16>(wchar_t*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::PtrBasedEnd,(anonymousnamespace)::Swapper,unsigned long*,unsigned long*,wchar_t) (); 0x0042b481 jmp 0x42b48d | | } else { 0x0042b483 mov r9d, dword [rsp + 0xc] | r9d = *((rsp + 0xc)); 0x0042b488 call 0x430d80 | eax = int(anonymousnamespace)::localUtf8ToUtf16>(wchar_t*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::PtrBasedEnd,(anonymousnamespace)::NoOpSwapper,unsigned long*,unsigned long*,wchar_t) (); | } 0x0042b48d mov ebp, eax | 0x0042b48f mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x0042b494 cmp rsi, r14 | 0x0042b497 dec rsi | rsi--; 0x0042b49a movabs rax, 0x3ffffffffffffffe | rax = 0x3ffffffffffffffe; 0x0042b4a4 cmp rsi, rax | | if (rsi <= rax) { 0x0042b4a7 ja 0x42b4c4 | 0x0042b4a9 mov rdi, rbx | 0x0042b4ac xor edx, edx | 0x0042b4ae call 0x43be10 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,wchar_t) (rbx, rsi, 0); 0x0042b4b3 mov eax, ebp | eax = ebp; 0x0042b4b5 add rsp, 0x18 | 0x0042b4b9 pop rbx | 0x0042b4ba pop r12 | 0x0042b4bc pop r13 | 0x0042b4be pop r14 | 0x0042b4c0 pop r15 | 0x0042b4c2 pop rbp | 0x0042b4c3 ret | return rax; | } | label_0: 0x0042b4c4 mov edi, 0x45f5e2 | 0x0042b4c9 call 0x435460 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("string<...>::resize(n): string too long"); | }