; assembly | /* r2dec pseudo code output */ | /* balcl_commandline.t/assume @ 0x46eee0 */ | #include | ; (fcn) sym.BloombergLP::balcl::_anonymous_namespace_::u::ArrayConstraint_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____bsl::function_bool__bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char____const__std::__1::basic_ostream_char__std::__1::char_traits_char_______14_::parse_BloombergLP::balcl::OptionValue__std::__1::basic_ostream_char__std::__1::char_traits_char_____bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char____const__const () | int64_t BloombergLP::balcl::_anonymous_namespace_::u::ArrayConstraint_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_bsl::function_bool_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_const_std::_1::basic_ostream_char_std::_1::char_traits_char_14_::parse_BloombergLP::balcl::OptionValue_std::_1::basic_ostream_char_std::_1::char_traits_char_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_const_const (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_18h; | uint32_t var_20h; | int64_t var_28h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balcl::(anonymous namespace)::u::ArrayConstraint, bsl::allocator >, bsl::function, bsl::allocator > const*, std::__1::basic_ostream >&)>, 14>::parse(BloombergLP::balcl::OptionValue*, std::__1::basic_ostream >&, bsl::basic_string, bsl::allocator > const&) const */ 0x0046eee0 push r15 | 0x0046eee2 push r14 | 0x0046eee4 push r13 | 0x0046eee6 push r12 | 0x0046eee8 push rbx | 0x0046eee9 sub rsp, 0x30 | 0x0046eeed mov rbx, rcx | rbx = rcx; 0x0046eef0 mov r14, rdx | r14 = rdx; 0x0046eef3 mov r15, rsi | r15 = rsi; 0x0046eef6 mov r12, rdi | r12 = rdi; 0x0046eef9 mov rdi, rsi | 0x0046eefc call 0x465e70 | BloombergLP::balcl::OptionValue::type()const (rsi); 0x0046ef01 mov qword [rsp], 0 | *(rsp) = 0; 0x0046ef09 movaps xmm0, xmmword [rip + 0x351c0] | xmm0 = .comment; 0x0046ef10 movups xmmword [rsp + 0x18], xmm0 | __asm ("movups xmmword [rsp + 0x18], xmm0"); 0x0046ef15 mov rax, qword [rip + 0x295d0c] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046ef1c test rax, rax | | if (rax != 0) { 0x0046ef1f je 0x46ef2b | 0x0046ef21 mov rcx, rsp | rcx = rsp; 0x0046ef24 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0046ef29 jmp 0x46ef46 | | } else { 0x0046ef2b call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0046ef30 cmp qword [rsp + 0x20], 0x17 | 0x0046ef36 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; | if (*((rsp + 0x20)) != 0x17) { 0x0046ef3b je 0x46ef43 | 0x0046ef3d mov rcx, qword [rsp] | rcx = *(rsp); 0x0046ef41 jmp 0x46ef46 | | } else { 0x0046ef43 mov rcx, rsp | rcx = rsp; | } | } 0x0046ef46 mov byte [rcx], 0 | *(rcx) = 0; 0x0046ef49 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x0046ef4e je 0x46ef53 | 0x0046ef50 mov rbx, qword [rbx] | rbx = *(rbx); | } 0x0046ef53 mov rdi, rbx | 0x0046ef56 call 0x4046c0 | rax = strlen (*(rbx)); 0x0046ef5b mov r13, qword [rsp + 0x18] | r13 = *((rsp + 0x18)); 0x0046ef60 mov qword [rsp + 0x18], 0 | *((rsp + 0x18)) = 0; 0x0046ef69 mov rdi, rsp | 0x0046ef6c mov ecx, 0x4ae59e | 0x0046ef71 mov rsi, rbx | 0x0046ef74 mov rdx, rax | 0x0046ef77 call 0x481b20 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rsp, rbx, rax, "string<...>::assign(char*...): string too long"); 0x0046ef7c mov rax, qword [r12 + 0x50] | rax = *((r12 + 0x50)); 0x0046ef81 test rax, rax | | if (rax != 0) { 0x0046ef84 je 0x46ef99 | 0x0046ef86 add r12, 0x10 | r12 += 0x10; 0x0046ef8a mov rsi, rsp | rsi = rsp; 0x0046ef8d mov rdi, r12 | rdi = r12; 0x0046ef90 mov rdx, r14 | rdx = r14; 0x0046ef93 call rax | al = void (*rax)() (); 0x0046ef95 test al, al | | if (al == 0) { 0x0046ef97 je 0x46efb5 | goto label_0; | } | } 0x0046ef99 mov eax, dword [r15 + 0x40] | eax = *((r15 + 0x40)); 0x0046ef9d dec eax | eax--; 0x0046ef9f jmp qword [rax*8 + 0x4b03d0] | | label_0: 0x0046efb5 xor ebx, ebx | ebx = 0; 0x0046efb7 jmp 0x46f0a5 | 0x0046f0a5 cmp qword [rsp + 0x20], 0x17 | | if (*((rsp + 0x20)) != 0x17) { 0x0046f0ab je 0x46f0bc | 0x0046f0ad mov rsi, qword [rsp] | rsi = *(rsp); 0x0046f0b1 mov rdi, qword [rsp + 0x28] | rdi = *((rsp + 0x28)); 0x0046f0b6 mov rax, qword [rdi] | rax = *(rdi); 0x0046f0b9 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0046f0bc mov eax, ebx | eax = ebx; 0x0046f0be add rsp, 0x30 | 0x0046f0c2 pop rbx | 0x0046f0c3 pop r12 | 0x0046f0c5 pop r13 | 0x0046f0c7 pop r14 | 0x0046f0c9 pop r15 | 0x0046f0cb ret | return rax; | }