; assembly | /* r2dec pseudo code output */ | /* bdlde_charconvertutf16.t/assume @ 0x42b890 */ | #include | ; (fcn) method.BloombergLP::bdlde::CharConvertUtf16.utf8ToUtf16_bsl::vector_unsigned_short__bsl::allocator_unsigned_short_____char_const__unsigned_long__unsigned_short__BloombergLP::bdlde::ByteOrder::Enum_ () | uint64_t method_BloombergLP::bdlde::CharConvertUtf16_utf8ToUtf16_bsl::vector_unsigned_short_bsl::allocator_unsigned_short_char_const_unsigned_long_unsigned_short_BloombergLP::bdlde::ByteOrder::Enum_ (int64_t arg5, int64_t arg4, uint32_t arg3, uint32_t arg2, uint32_t arg1) { | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlde::CharConvertUtf16::utf8ToUtf16(bsl::vector >*, char const*, unsigned long*, unsigned short, BloombergLP::bdlde::ByteOrder::Enum) */ 0x0042b890 push rbp | 0x0042b891 push r15 | 0x0042b893 push r14 | 0x0042b895 push r13 | 0x0042b897 push r12 | 0x0042b899 push rbx | 0x0042b89a push rax | 0x0042b89b mov ebp, r8d | 0x0042b89e mov r13d, ecx | r13d = ecx; 0x0042b8a1 mov r15, rdx | r15 = rdx; 0x0042b8a4 mov r12, rsi | r12 = rsi; 0x0042b8a7 mov rbx, rdi | rbx = rdi; 0x0042b8aa mov rdi, rsi | rdi = rsi; 0x0042b8ad call 0x431590 | rax = unsigned long(anonymousnamespace)::utf16BufferLength<(anonymousnamespace)::Utf8::ZeroBasedEnd>(char const*,(anonymousnamespace)::Utf8::ZeroBasedEnd) (); 0x0042b8b2 mov r14, rax | r14 = rax; 0x0042b8b5 mov rdi, qword [rbx] | rdi = *(rbx); 0x0042b8b8 mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x0042b8bc sub rax, rdi | rax -= rdi; 0x0042b8bf sar rax, 1 | rax >>= 1; 0x0042b8c2 cmp r14, rax | | if (r14 > rax) { 0x0042b8c5 jbe 0x42b8d5 | 0x0042b8c7 mov rdi, rbx | 0x0042b8ca mov rsi, r14 | 0x0042b8cd call 0x447ab0 | bsl::vector>::resize(unsigned long) (rbx, r14); 0x0042b8d2 mov rdi, qword [rbx] | rdi = *(rbx); | } 0x0042b8d5 movzx r8d, r13w | r8d = (int32_t) r13w; 0x0042b8d9 mov rcx, rsp | rcx = rsp; 0x0042b8dc mov rsi, r12 | rsi = r12; 0x0042b8df mov rdx, r15 | rdx = r15; 0x0042b8e2 test ebp, ebp | | if (ebp != 0) { 0x0042b8e4 je 0x42b8ed | 0x0042b8e6 call 0x432a20 | int(anonymousnamespace)::localUtf8ToUtf16>(unsignedshort*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::ZeroBasedEnd,(anonymousnamespace)::Swapper,unsigned long*,unsigned long*,unsignedshort) (); 0x0042b8eb jmp 0x42b8f2 | | } else { 0x0042b8ed call 0x432660 | eax = int(anonymousnamespace)::localUtf8ToUtf16>(unsignedshort*,(anonymousnamespace)::NoOpCapacity,char const*,(anonymousnamespace)::Utf8::ZeroBasedEnd,(anonymousnamespace)::NoOpSwapper,unsigned long*,unsigned long*,unsignedshort) (); | } 0x0042b8f2 mov ebp, eax | 0x0042b8f4 mov rsi, qword [rsp] | rsi = *(rsp); 0x0042b8f8 cmp rsi, r14 | 0x0042b8fb mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x0042b8ff sub rax, qword [rbx] | rax -= *(rbx); 0x0042b902 sar rax, 1 | rax >>= 1; 0x0042b905 cmp rax, rsi | | if (rax != rsi) { 0x0042b908 je 0x42b912 | 0x0042b90a mov rdi, rbx | 0x0042b90d call 0x447ab0 | bsl::vector>::resize(unsigned long) (rbx, rsi); | } 0x0042b912 mov eax, ebp | eax = ebp; 0x0042b914 add rsp, 8 | 0x0042b918 pop rbx | 0x0042b919 pop r12 | 0x0042b91b pop r13 | 0x0042b91d pop r14 | 0x0042b91f pop r15 | 0x0042b921 pop rbp | 0x0042b922 ret | return rax; | }