; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x484a20 */ | #include | ; (fcn) method.BloombergLP::baljsn::Encoder_EncodeImplUtil.encodeCharArray_BloombergLP::baljsn::Formatter__bsl::vector_char__bsl::allocator_char____const__BloombergLP::baljsn::EncoderOptions_const_ () | int64_t method_BloombergLP::baljsn::Encoder_EncodeImplUtil_encodeCharArray_BloombergLP::baljsn::Formatter_bsl::vector_char_bsl::allocator_char_const_BloombergLP::baljsn::EncoderOptions_const_ (int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_20h; | uint32_t var_28h; | int64_t var_30h; | int64_t var_3ch; | int64_t var_40h; | int64_t var_44h; | int64_t var_54h; | int64_t var_58h; | int64_t var_60h; | int64_t var_6ch; | rsi = arg2; | rdi = arg1; | /* BloombergLP::baljsn::Encoder_EncodeImplUtil::encodeCharArray(BloombergLP::baljsn::Formatter*, bsl::vector > const&, BloombergLP::baljsn::EncoderOptions const&) */ 0x00484a20 push r15 | 0x00484a22 push r14 | 0x00484a24 push rbx | 0x00484a25 sub rsp, 0x70 | 0x00484a29 mov r15, rsi | r15 = rsi; 0x00484a2c mov r14, rdi | r14 = rdi; 0x00484a2f mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00484a38 movaps xmm0, xmmword [rip + 0xb7fd1] | xmm0 = .comment; 0x00484a3f movups xmmword [rsp + 0x20], xmm0 | __asm ("movups xmmword [rsp + 0x20], xmm0"); 0x00484a44 mov rax, qword [rip + 0x44865d] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00484a4b test rax, rax | | if (rax != 0) { 0x00484a4e je 0x484a5c | 0x00484a50 lea rcx, [rsp + 8] | rcx = rsp + 8; 0x00484a55 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x00484a5a jmp 0x484a7a | | } else { 0x00484a5c call 0x517520 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00484a61 cmp qword [rsp + 0x28], 0x17 | 0x00484a67 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; | if (*((rsp + 0x28)) != 0x17) { 0x00484a6c je 0x484a75 | 0x00484a6e mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); 0x00484a73 jmp 0x484a7a | | } else { 0x00484a75 lea rcx, [rsp + 8] | rcx = rsp + 8; | } | } 0x00484a7a mov byte [rcx], 0 | *(rcx) = 0; 0x00484a7d mov byte [rsp + 0x40], 0 | *((rsp + 0x40)) = 0; 0x00484a82 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00484a85 movups xmmword [rsp + 0x44], xmm0 | __asm ("movups xmmword [rsp + 0x44], xmm0"); 0x00484a8a mov dword [rsp + 0x54], 0 | *((rsp + 0x54)) = 0; 0x00484a92 mov eax, dword [r15 + 8] | eax = *((r15 + 8)); 0x00484a96 sub eax, dword [r15] | eax -= *(r15); 0x00484a99 add eax, 2 | eax += 2; 0x00484a9c mov esi, 0xaaaaaaab | 0x00484aa1 imul rsi, rax | rsi *= rax; 0x00484aa5 shr rsi, 0x20 | rsi >>= 0x20; 0x00484aa9 add esi, esi | esi += esi; 0x00484aab and esi, 0xfffffffc | esi &= 0xfffffffc; 0x00484aae lea rbx, [rsp + 8] | rbx = rsp + 8; 0x00484ab3 mov rdi, rbx | 0x00484ab6 xor edx, edx | 0x00484ab8 call 0x51b370 | bsl::basic_string,bsl::allocator>::privateResizeRaw(unsigned long,char) (rbx, 0xaaaaaaab, 0); 0x00484abd cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x00484ac3 je 0x484aca | 0x00484ac5 mov rbx, qword [rsp + 8] | rbx = *((rsp + 8)); | } 0x00484aca mov r8, qword [r15] | 0x00484acd mov r9, qword [r15 + 8] | 0x00484ad1 mov dword [rsp], 0xffffffff | *(rsp) = 0xffffffff; 0x00484ad8 lea rdi, [rsp + 0x40] | 0x00484add lea rdx, [rsp + 0x3c] | 0x00484ae2 lea rcx, [rsp + 0x6c] | 0x00484ae7 mov rsi, rbx | 0x00484aea call 0x485010 | eax = intBloombergLP::bdlde::Base64Encoder::convert(char*,int*,int*,char const*,char const*,int) (rsp + 0x40, rbx, rsp + 0x3c, rsp + 0x6c, *(r15), *((r15 + 8))); 0x00484aef mov ebx, eax | ebx = eax; 0x00484af1 test eax, eax | | if (eax >= 0) { 0x00484af3 js 0x484b94 | 0x00484af9 cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x00484aff je 0x484b08 | 0x00484b01 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x00484b06 jmp 0x484b0d | | } else { 0x00484b08 lea rax, [rsp + 8] | rax = rsp + 8; | } 0x00484b0d movsxd rsi, dword [rsp + 0x3c] | rsi = *((rsp + 0x3c)); 0x00484b12 add rsi, rax | rsi += rax; 0x00484b15 lea rdi, [rsp + 0x40] | 0x00484b1a lea rdx, [rsp + 0x58] | 0x00484b1f mov ecx, 0xffffffff | 0x00484b24 call 0x4852a0 | eax = intBloombergLP::bdlde::Base64Encoder::endConvert(char*,int*,int) (rsp + 0x40, rsi, rsp + 0x58, 0xffffffff); 0x00484b29 mov ebx, eax | ebx = eax; 0x00484b2b test eax, eax | | if (eax < 0) { 0x00484b2d js 0x484b94 | goto label_0; | } 0x00484b2f cmp byte [r14 + 8], 0 | | if (*((r14 + 8)) != 0) { 0x00484b34 je 0x484b62 | 0x00484b36 mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x00484b3a mov rcx, qword [r14 + 0x38] | rcx = *((r14 + 0x38)); 0x00484b3e dec rcx | rcx--; 0x00484b41 mov rdx, rcx | rdx = rcx; 0x00484b44 shr rdx, 6 | rdx >>= 6; 0x00484b48 mov rax, qword [rax + rdx*8] | rax = *((rax + rdx*8)); 0x00484b4c bt rax, rcx | | if (((rax >> rcx) & 1) >= 0) { 0x00484b50 jae 0x484b62 | goto label_1; | } 0x00484b52 mov rdi, qword [r14] | 0x00484b55 mov esi, dword [r14 + 0xc] | 0x00484b59 mov edx, dword [r14 + 0x10] | edx = *((r14 + 0x10)); 0x00484b5d call 0x4d79e0 | BloombergLP::bdlb::Print::indent(std::_1::basic_ostream>&,int,int) (*(r14), *((r14 + 0xc))); | } | label_1: 0x00484b62 mov rdi, qword [r14] | rdi = *(r14); 0x00484b65 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x00484b6a cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x00484b70 je 0x484b79 | 0x00484b72 mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); 0x00484b77 jmp 0x484b7e | | } else { 0x00484b79 lea rcx, [rsp + 8] | rcx = rsp + 8; | } 0x00484b7e mov qword [rsp + 0x58], rcx | *((rsp + 0x58)) = rcx; 0x00484b83 mov qword [rsp + 0x60], rax | *((rsp + 0x60)) = rax; 0x00484b88 lea rsi, [rsp + 0x58] | 0x00484b8d call 0x48c7d0 | eax = BloombergLP::baljsn::PrintUtil::printString(std::_1::basic_ostream>&,std::_1::basic_string_view>const&) (rdi, rsp + 0x58); 0x00484b92 mov ebx, eax | ebx = eax; | } | label_0: 0x00484b94 lea rdi, [rsp + 0x40] | rdi = rsp + 0x40; 0x00484b99 call 0x4d9a70 | BloombergLP::bdlde::Base64Encoder::~Base64Encoder() (); 0x00484b9e cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x00484ba4 je 0x484bb6 | 0x00484ba6 mov rsi, qword [rsp + 8] | rsi = *((rsp + 8)); 0x00484bab mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x00484bb0 mov rax, qword [rdi] | rax = *(rdi); 0x00484bb3 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00484bb6 mov eax, ebx | eax = ebx; 0x00484bb8 add rsp, 0x70 | 0x00484bbc pop rbx | 0x00484bbd pop r14 | 0x00484bbf pop r15 | 0x00484bc1 ret | return rax; | }