; assembly | /* r2dec pseudo code output */ | /* bdlde_charconvertutf16.t/assume @ 0x42b4d0 */ | #include | ; (fcn) method.BloombergLP::bdlde::CharConvertUtf16.utf8ToUtf16_std::__1::basic_string_wchar_t__std::__1::char_traits_wchar_t___std::__1::allocator_wchar_t_____std::__1::basic_string_view_char__std::__1::char_traits_char____const__unsigned_long__wchar_t__Bloo () | uint64_t method_BloombergLP::bdlde::CharConvertUtf16_utf8ToUtf16_std::_1::basic_string_wchar_t_std::_1::char_traits_wchar_t_std::_1::allocator_wchar_t_std::_1::basic_string_view_char_std::_1::char_traits_char_const_unsigned_long_wchar_t_Bloo (int64_t arg5, uint32_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_ch_2; | int64_t var_10h_2; | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlde::CharConvertUtf16::utf8ToUtf16(std::__1::basic_string, std::__1::allocator >*, std::__1::basic_string_view > const&, unsigned long*, wchar_t, BloombergLP::bdlde::ByteOrder::Enum) */ 0x0042b4d0 push rbp | 0x0042b4d1 push r15 | 0x0042b4d3 push r14 | 0x0042b4d5 push r13 | 0x0042b4d7 push r12 | 0x0042b4d9 push rbx | 0x0042b4da sub rsp, 0x18 | 0x0042b4de mov dword [rsp + 0xc], r8d | *((rsp + 0xc)) = r8d; 0x0042b4e3 mov r12d, ecx | r12d = ecx; 0x0042b4e6 mov r13, rdx | r13 = rdx; 0x0042b4e9 mov r15, rsi | r15 = rsi; 0x0042b4ec mov rbx, rdi | rbx = rdi; 0x0042b4ef mov rdi, qword [rsi] | rdi = *(rsi); 0x0042b4f2 mov rbp, qword [rsi + 8] | rbp = *((rsi + 8)); 0x0042b4f6 add rbp, rdi | rbp += rdi; 0x0042b4f9 mov rsi, rbp | rsi = rbp; 0x0042b4fc call 0x430bc0 | rax = unsigned long(anonymousnamespace)::utf16BufferLength<(anonymousnamespace)::Utf8::PtrBasedEnd>(char const*,(anonymousnamespace)::Utf8::PtrBasedEnd) (); 0x0042b501 mov r14, rax | r14 = rax; 0x0042b504 mov al, byte [rbx] | al = *(rbx); 0x0042b506 test al, 1 | | if ((al & 1) == 0) { 0x0042b508 jne 0x42b517 | 0x0042b50a movzx ecx, al | ecx = (int32_t) al; 0x0042b50d shr rcx, 1 | rcx >>= 1; 0x0042b510 cmp r14, rcx | | if (r14 <= rcx) { 0x0042b513 ja 0x42b520 | 0x0042b515 jmp 0x42b52f | | } else { 0x0042b517 mov rcx, qword [rbx + 8] | rcx = *((rbx + 8)); 0x0042b51b cmp r14, rcx | | if (r14 <= rcx) { 0x0042b51e jbe 0x42b52f | goto label_0; | } | } 0x0042b520 mov rdi, rbx | rdi = rbx; 0x0042b523 mov rsi, r14 | rsi = r14; 0x0042b526 xor edx, edx | edx = 0; 0x0042b528 call 0x4035c0 | std::_1::basic_string,std::_1::allocator>::resize(unsigned long,wchar_t) (); 0x0042b52d mov al, byte [rbx] | al = *(rbx); | } | label_0: 0x0042b52f test al, 1 | | if ((al & 1) == 0) { 0x0042b531 jne 0x42b539 | 0x0042b533 lea rdi, [rbx + 4] | rdi = rbx + 4; 0x0042b537 jmp 0x42b53d | | } else { 0x0042b539 mov rdi, qword [rbx + 0x10] | rdi = *((rbx + 0x10)); | } 0x0042b53d mov r9d, r12d | r9d = r12d; 0x0042b540 mov rcx, r13 | rcx = r13; 0x0042b543 mov eax, dword [rsp + 0xc] | eax = *((rsp + 0xc)); 0x0042b547 mov rsi, qword [r15] | rsi = *(r15); 0x0042b54a lea r8, [rsp + 0x10] | r8 = rsp + 0x10; 0x0042b54f mov rdx, rbp | rdx = rbp; 0x0042b552 test eax, eax | | if (eax != 0) { 0x0042b554 je 0x42b55d | 0x0042b556 call 0x431130 | int(anonymousnamespace)::localUtf8ToUtf16>(wchar_t*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::PtrBasedEnd,(anonymousnamespace)::Swapper,unsigned long*,unsigned long*,wchar_t) (); 0x0042b55b jmp 0x42b562 | | } else { 0x0042b55d call 0x430d80 | eax = int(anonymousnamespace)::localUtf8ToUtf16>(wchar_t*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::PtrBasedEnd,(anonymousnamespace)::NoOpSwapper,unsigned long*,unsigned long*,wchar_t) (); | } 0x0042b562 mov ebp, eax | 0x0042b564 mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x0042b569 cmp rsi, r14 | 0x0042b56c dec rsi | rsi--; 0x0042b56f mov rdi, rbx | rdi = rbx; 0x0042b572 xor edx, edx | edx = 0; 0x0042b574 call 0x4035c0 | std::_1::basic_string,std::_1::allocator>::resize(unsigned long,wchar_t) (); 0x0042b579 mov eax, ebp | eax = ebp; 0x0042b57b add rsp, 0x18 | 0x0042b57f pop rbx | 0x0042b580 pop r12 | 0x0042b582 pop r13 | 0x0042b584 pop r14 | 0x0042b586 pop r15 | 0x0042b588 pop rbp | 0x0042b589 ret | return rax; | }