; assembly | /* r2dec pseudo code output */ | /* balcl_commandline.t/assume @ 0x46cd30 */ | #include | ; (fcn) sym.BloombergLP::balcl::_anonymous_namespace_::u::ScalarConstraint_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_______6_::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::ScalarConstraint_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_6_::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_8h; | int64_t var_18h; | int64_t var_20h; | uint32_t var_28h; | int64_t var_30h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balcl::(anonymous namespace)::u::ScalarConstraint, bsl::allocator >, bsl::function, bsl::allocator > const*, std::__1::basic_ostream >&)>, 6>::parse(BloombergLP::balcl::OptionValue*, std::__1::basic_ostream >&, bsl::basic_string, bsl::allocator > const&) const */ 0x0046cd30 push rbp | 0x0046cd31 push r15 | 0x0046cd33 push r14 | 0x0046cd35 push r13 | 0x0046cd37 push r12 | 0x0046cd39 push rbx | 0x0046cd3a sub rsp, 0x38 | 0x0046cd3e mov r13, rcx | r13 = rcx; 0x0046cd41 mov r14, rdx | r14 = rdx; 0x0046cd44 mov rbx, rsi | rbx = rsi; 0x0046cd47 mov r15, rdi | r15 = rdi; 0x0046cd4a mov rdi, rsi | 0x0046cd4d call 0x465e70 | BloombergLP::balcl::OptionValue::type()const (rsi); 0x0046cd52 mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0046cd5b movaps xmm0, xmmword [rip + 0x3736e] | xmm0 = .comment; 0x0046cd62 movups xmmword [rsp + 0x20], xmm0 | __asm ("movups xmmword [rsp + 0x20], xmm0"); 0x0046cd67 mov rax, qword [rip + 0x297eba] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046cd6e test rax, rax | | if (rax != 0) { 0x0046cd71 je 0x46cd7f | 0x0046cd73 lea rcx, [rsp + 8] | rcx = rsp + 8; 0x0046cd78 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x0046cd7d jmp 0x46cd9d | | } else { 0x0046cd7f call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0046cd84 cmp qword [rsp + 0x28], 0x17 | 0x0046cd8a mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; | if (*((rsp + 0x28)) != 0x17) { 0x0046cd8f je 0x46cd98 | 0x0046cd91 mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); 0x0046cd96 jmp 0x46cd9d | | } else { 0x0046cd98 lea rcx, [rsp + 8] | rcx = rsp + 8; | } | } 0x0046cd9d mov byte [rcx], 0 | *(rcx) = 0; 0x0046cda0 cmp qword [r13 + 0x20], 0x17 | | if (*((r13 + 0x20)) != 0x17) { 0x0046cda5 je 0x46cdab | 0x0046cda7 mov r13, qword [r13] | r13 = *(r13); | } 0x0046cdab mov rdi, r13 | 0x0046cdae call 0x4046c0 | rax = strlen (*(r13)); 0x0046cdb3 mov rbp, qword [rsp + 0x20] | rbp = *((rsp + 0x20)); 0x0046cdb8 mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x0046cdc1 lea r12, [rsp + 8] | r12 = rsp + 8; 0x0046cdc6 mov ecx, 0x4ae59e | 0x0046cdcb mov rdi, r12 | 0x0046cdce mov rsi, r13 | 0x0046cdd1 mov rdx, rax | 0x0046cdd4 call 0x481b20 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (r12, r13, rax, "string<...>::assign(char*...): string too long"); 0x0046cdd9 mov r13, qword [rbx + 0x38] | r13 = *((rbx + 0x38)); 0x0046cddd cmp byte [rbx + 0x30], 0 | | if (*((rbx + 0x30)) != 0) { 0x0046cde1 je 0x46ce03 | 0x0046cde3 mov byte [rbx + 0x30], 0 | *((rbx + 0x30)) = 0; 0x0046cde7 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x0046cdec je 0x46cdfb | 0x0046cdee mov rsi, qword [rbx] | rsi = *(rbx); 0x0046cdf1 mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0046cdf5 mov rax, qword [rdi] | rax = *(rdi); 0x0046cdf8 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0046cdfb mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | } 0x0046ce03 test r13, r13 | | if (r13 == 0) { 0x0046ce06 jne 0x46ce1c | 0x0046ce08 mov r13, qword [rip + 0x297e19] | r13 = BloombergLP::bslma::Default::s_defaultAllocator; 0x0046ce0f test r13, r13 | | if (r13 != 0) { 0x0046ce12 jne 0x46ce1c | goto label_0; | } 0x0046ce14 call 0x47cad0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0046ce19 mov r13, rax | r13 = rax; | } | label_0: 0x0046ce1c mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x0046ce21 mov qword [rbx + 0x20], rax | *((rbx + 0x20)) = rax; 0x0046ce25 movups xmm0, xmmword [rsp + 8] | __asm ("movups xmm0, xmmword [rsp + 8]"); 0x0046ce2a movups xmm1, xmmword [rsp + 0x18] | __asm ("movups xmm1, xmmword [rsp + 0x18]"); 0x0046ce2f movups xmmword [rbx + 0x10], xmm1 | __asm ("movups xmmword [rbx + 0x10], xmm1"); 0x0046ce33 movups xmmword [rbx], xmm0 | __asm ("movups xmmword [rbx], xmm0"); 0x0046ce36 mov qword [rbx + 0x28], r13 | *((rbx + 0x28)) = r13; 0x0046ce3a cmp rax, 0x17 | | if (rax != 0x17) { 0x0046ce3e je 0x46cea2 | 0x0046ce40 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x0046ce45 cmp rax, 0x17 | 0x0046ce49 mov esi, 0x17 | esi = 0x17; | if (rax > 0x17) { 0x0046ce4e cmova rsi, rax | rsi = rax; | } 0x0046ce52 mov qword [rbx], 0 | *(rbx) = 0; 0x0046ce59 mov qword [rbx + 0x18], rax | *((rbx + 0x18)) = rax; 0x0046ce5d mov qword [rbx + 0x20], rsi | *((rbx + 0x20)) = rsi; 0x0046ce61 cmp rax, 0x18 | | if (rax >= 0x18) { 0x0046ce65 jb 0x46ce7e | 0x0046ce67 inc rsi | rsi++; 0x0046ce6a mov rax, qword [r13] | rax = *(r13); 0x0046ce6e mov rdi, r13 | rdi = r13; 0x0046ce71 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0046ce74 mov qword [rbx], rax | *(rbx) = rax; 0x0046ce77 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x0046ce7c jne 0x46ce81 | goto label_1; | } | } 0x0046ce7e mov rax, rbx | rax = rbx; | label_1: 0x0046ce81 mov rdx, qword [rbx + 0x18] | rdx = *((rbx + 0x18)); 0x0046ce85 inc rdx | rdx++; | if (rdx == 0) { 0x0046ce88 je 0x46cea2 | goto label_2; | } 0x0046ce8a cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x0046ce90 je 0x46ce97 | 0x0046ce92 mov r12, qword [rsp + 8] | r12 = *((rsp + 8)); | } 0x0046ce97 mov rdi, rax | 0x0046ce9a mov rsi, r12 | 0x0046ce9d call 0x404c70 | memcpy (rax, r12, rdx); | } | label_2: 0x0046cea2 mov byte [rbx + 0x30], 1 | *((rbx + 0x30)) = 1; 0x0046cea6 mov rax, qword [r15] | rax = *(r15); 0x0046cea9 mov rdi, r15 | rdi = r15; 0x0046ceac mov rsi, rbx | rsi = rbx; 0x0046ceaf mov rdx, r14 | rdx = r14; 0x0046ceb2 call qword [rax + 0x28] | eax = uint64_t (*rax + 0x28)() (); 0x0046ceb5 mov ebx, eax | ebx = eax; 0x0046ceb7 cmp qword [rsp + 0x28], 0x17 | | if (*((rsp + 0x28)) != 0x17) { 0x0046cebd je 0x46cecf | 0x0046cebf mov rsi, qword [rsp + 8] | rsi = *((rsp + 8)); 0x0046cec4 mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x0046cec9 mov rax, qword [rdi] | rax = *(rdi); 0x0046cecc call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0046cecf mov eax, ebx | eax = ebx; 0x0046ced1 add rsp, 0x38 | 0x0046ced5 pop rbx | 0x0046ced6 pop r12 | 0x0046ced8 pop r13 | 0x0046ceda pop r14 | 0x0046cedc pop r15 | 0x0046cede pop rbp | 0x0046cedf ret | return rax; | }