; assembly | /* r2dec pseudo code output */ | /* bdlde_charconvertutf16.t/none @ 0x42b570 */ | #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) */ 0x0042b570 push rbp | 0x0042b571 push r15 | 0x0042b573 push r14 | 0x0042b575 push r13 | 0x0042b577 push r12 | 0x0042b579 push rbx | 0x0042b57a push rax | 0x0042b57b mov r12d, r8d | r12d = r8d; 0x0042b57e mov r14d, ecx | r14d = ecx; 0x0042b581 mov r15, rdx | r15 = rdx; 0x0042b584 mov rbp, rsi | 0x0042b587 mov rbx, rdi | rbx = rdi; 0x0042b58a movabs r13, 0x3ffffffffffffffe | r13 = 0x3ffffffffffffffe; 0x0042b594 mov rdi, rsi | rdi = rsi; 0x0042b597 call 0x431370 | rax = unsigned long(anonymousnamespace)::utf16BufferLength<(anonymousnamespace)::Utf8::ZeroBasedEnd>(char const*,(anonymousnamespace)::Utf8::ZeroBasedEnd) (); 0x0042b59c cmp rax, qword [rbx + 0x18] | | if (rax > *((rbx + 0x18))) { 0x0042b5a0 jbe 0x42b5b4 | 0x0042b5a2 cmp rax, r13 | | if (rax > r13) { 0x0042b5a5 ja 0x42b609 | goto label_0; | } 0x0042b5a7 mov rdi, rbx | 0x0042b5aa mov rsi, rax | 0x0042b5ad xor edx, edx | 0x0042b5af call 0x43bbf0 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,wchar_t) (rbx, rax, 0); | } 0x0042b5b4 cmp qword [rbx + 0x20], 5 | | if (*((rbx + 0x20)) == 5) { 0x0042b5b9 jne 0x42b5c0 | 0x0042b5bb mov rdi, rbx | rdi = rbx; 0x0042b5be jmp 0x42b5c3 | | } else { 0x0042b5c0 mov rdi, qword [rbx] | rdi = *(rbx); | } 0x0042b5c3 mov rcx, rsp | rcx = rsp; 0x0042b5c6 mov rsi, rbp | rsi = rbp; 0x0042b5c9 mov rdx, r15 | rdx = r15; 0x0042b5cc mov r8d, r14d | r8d = r14d; 0x0042b5cf test r12d, r12d | | if (r12d != 0) { 0x0042b5d2 je 0x42b5db | 0x0042b5d4 call 0x4318b0 | int(anonymousnamespace)::localUtf8ToUtf16>(wchar_t*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::ZeroBasedEnd,(anonymousnamespace)::Swapper,unsigned long*,unsigned long*,wchar_t) (); 0x0042b5d9 jmp 0x42b5e0 | | } else { 0x0042b5db call 0x4314f0 | eax = int(anonymousnamespace)::localUtf8ToUtf16>(wchar_t*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::ZeroBasedEnd,(anonymousnamespace)::NoOpSwapper,unsigned long*,unsigned long*,wchar_t) (); | } 0x0042b5e0 mov ebp, eax | 0x0042b5e2 mov rsi, qword [rsp] | rsi = *(rsp); 0x0042b5e6 dec rsi | rsi--; 0x0042b5e9 cmp rsi, r13 | | if (rsi <= r13) { 0x0042b5ec ja 0x42b609 | 0x0042b5ee mov rdi, rbx | 0x0042b5f1 xor edx, edx | 0x0042b5f3 call 0x43bbf0 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,wchar_t) (rbx, rsi, 0); 0x0042b5f8 mov eax, ebp | eax = ebp; 0x0042b5fa add rsp, 8 | 0x0042b5fe pop rbx | 0x0042b5ff pop r12 | 0x0042b601 pop r13 | 0x0042b603 pop r14 | 0x0042b605 pop r15 | 0x0042b607 pop rbp | 0x0042b608 ret | return rax; | } | label_0: 0x0042b609 mov edi, 0x45f3de | 0x0042b60e call 0x435240 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("string<...>::resize(n): string too long"); | }