; assembly | /* r2dec pseudo code output */ | /* balb_pipecontrolchannel.t/assume @ 0x40f470 */ | #include | ; (fcn) method.int_BloombergLP::bslmt::ThreadUtil::createWithAllocator_BloombergLP::bdlf::Bind_BloombergLP::bslmf.Nil__void____bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char____const__bsl::basic_string_char__std::__1::char_traits_char () | int64_t method_int_BloombergLP::bslmt::ThreadUtil::createWithAllocator_BloombergLP::bdlf::Bind_BloombergLP::bslmf_Nil_void_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_const_bsl::basic_string_char_std::_1::char_traits_char (int64_t arg4, int64_t arg3, char * arg2, int64_t arg1) { | int64_t var_8h; | char * var_10h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::bslmt::ThreadUtil::createWithAllocator, bsl::allocator > const&, bsl::basic_string, bsl::allocator > const&, int), BloombergLP::bdlf::Bind_BoundTuple3, bsl::allocator >, bsl::basic_string, bsl::allocator >, int> > >(unsigned long*, BloombergLP::bslmt::ThreadAttributes const&, BloombergLP::bdlf::Bind, bsl::allocator > const&, bsl::basic_string, bsl::allocator > const&, int), BloombergLP::bdlf::Bind_BoundTuple3, bsl::allocator >, bsl::basic_string, bsl::allocator >, int> > const&, BloombergLP::bslma::Allocator*) */ 0x0040f470 push rbp | 0x0040f471 push r15 | 0x0040f473 push r14 | 0x0040f475 push r13 | 0x0040f477 push r12 | 0x0040f479 push rbx | 0x0040f47a sub rsp, 0x18 | 0x0040f47e mov r14, rcx | r14 = rcx; 0x0040f481 mov r13, rdx | r13 = rdx; 0x0040f484 mov rbp, rsi | 0x0040f487 mov qword [rsp + 8], rdi | *((rsp + 8)) = rdi; 0x0040f48c mov r15, qword [rsi + 0x38] | r15 = *((rsi + 0x38)); 0x0040f490 mov r12, qword [rsi + 0x18] | r12 = *((rsi + 0x18)); 0x0040f494 mov rax, qword [rsi + 0x30] | rax = *((rsi + 0x30)); 0x0040f498 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0040f49d mov rax, qword [rcx] | rax = *(rcx); 0x0040f4a0 mov esi, 0xa8 | esi = 0xa8; 0x0040f4a5 mov rdi, rcx | rdi = rcx; 0x0040f4a8 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)(void, void, void, void, void) (rbx, r12, r13, r14, r15); 0x0040f4ab mov rbx, rax | rbx = rax; 0x0040f4ae mov qword [rax], 0x40f6e0 | *(rax) = method.BloombergLP::bslmt::EntryPointFunctorAdapter_BloombergLP::bdlf::Bind_BloombergLP::bslmf.Nil__void____bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char____const__bsl::basic_string_char__std::__1::char_traits_char___bsl::all; 0x0040f4b5 mov rax, qword [r13] | rax = *(r13); 0x0040f4b9 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x0040f4bd lea rdi, [rbx + 0x10] | 0x0040f4c1 lea rsi, [r13 + 8] | 0x0040f4c5 mov rdx, r14 | 0x0040f4c8 call 0x40f210 | BloombergLP::bdlf::Bind_BoundTuple3,bsl::allocator>,bsl::basic_string,bsl::allocator>,int>::Bind_BoundTuple3(BloombergLP::bdlf::Bind_BoundTuple3,bsl::allocator>,bsl::basic_string,bsl::allocator>,int>const&,BloombergLP::bslma::Allocator*) (rbx + 0x10, r13 + 8, r14); 0x0040f4cd lea rax, [rbp + 0x18] | rax = rbp + 0x18; 0x0040f4d1 cmp r15, 0x17 | | if (r15 == 0x17) { 0x0040f4d5 cmove r12, rax | r12 = rax; | } 0x0040f4d9 mov rdi, rbx | 0x0040f4dc add rdi, 0x78 | rdi += 0x78; 0x0040f4e0 mov qword [rbx + 0x78], 0 | *((rbx + 0x78)) = 0; 0x0040f4e8 mov qword [rbx + 0xa0], r14 | *((rbx + 0xa0)) = r14; 0x0040f4ef movaps xmm0, xmmword [rip + 0x30c7a] | xmm0 = .comment; 0x0040f4f6 movups xmmword [rbx + 0x90], xmm0 | __asm ("movups xmmword [rbx + 0x90], xmm0"); 0x0040f4fd mov ecx, 0x440f8d | 0x0040f502 mov rsi, r12 | 0x0040f505 mov rdx, qword [rsp + 0x10] | 0x0040f50a call 0x41dfd0 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbx, r12, *((rsp + 0x10)), "string<...>::assign(i,j): string too long"); 0x0040f50f mov edx, 0x41a5f0 | 0x0040f514 mov rdi, qword [rsp + 8] | 0x0040f519 mov rsi, rbp | 0x0040f51c mov rcx, rbx | 0x0040f51f call 0x41acc0 | eax = BloombergLP::bslmt::ThreadUtilImpl::create(unsigned long*,BloombergLP::bslmt::ThreadAttributesconst&,void*(*)(void*),void*) (*((rsp + 8)), rbp, sym.bslmt_EntryPointFunctorAdapter_invoker, rbx); 0x0040f524 mov ebp, eax | 0x0040f526 test eax, eax | | if (eax != 0) { 0x0040f528 je 0x40f596 | 0x0040f52a cmp qword [rbx + 0x98], 0x17 | | if (*((rbx + 0x98)) != 0x17) { 0x0040f532 je 0x40f545 | 0x0040f534 mov rsi, qword [rbx + 0x78] | rsi = *((rbx + 0x78)); 0x0040f538 mov rdi, qword [rbx + 0xa0] | rdi = *((rbx + 0xa0)); 0x0040f53f mov rax, qword [rdi] | rax = *(rdi); 0x0040f542 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040f545 mov qword [rbx + 0x90], 0xffffffffffffffff | *((rbx + 0x90)) = 0xffffffffffffffff; 0x0040f550 cmp qword [rbx + 0x60], 0x17 | | if (*((rbx + 0x60)) != 0x17) { 0x0040f555 je 0x40f565 | 0x0040f557 mov rsi, qword [rbx + 0x40] | rsi = *((rbx + 0x40)); 0x0040f55b mov rdi, qword [rbx + 0x68] | rdi = *((rbx + 0x68)); 0x0040f55f mov rax, qword [rdi] | rax = *(rdi); 0x0040f562 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040f565 mov qword [rbx + 0x58], 0xffffffffffffffff | *((rbx + 0x58)) = 0xffffffffffffffff; 0x0040f56d cmp qword [rbx + 0x30], 0x17 | | if (*((rbx + 0x30)) != 0x17) { 0x0040f572 je 0x40f582 | 0x0040f574 mov rsi, qword [rbx + 0x10] | rsi = *((rbx + 0x10)); 0x0040f578 mov rdi, qword [rbx + 0x38] | rdi = *((rbx + 0x38)); 0x0040f57c mov rax, qword [rdi] | rax = *(rdi); 0x0040f57f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040f582 mov qword [rbx + 0x28], 0xffffffffffffffff | *((rbx + 0x28)) = 0xffffffffffffffff; 0x0040f58a mov rax, qword [r14] | rax = *(r14); 0x0040f58d mov rdi, r14 | rdi = r14; 0x0040f590 mov rsi, rbx | rsi = rbx; 0x0040f593 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040f596 mov eax, ebp | eax = ebp; 0x0040f598 add rsp, 0x18 | 0x0040f59c pop rbx | 0x0040f59d pop r12 | 0x0040f59f pop r13 | 0x0040f5a1 pop r14 | 0x0040f5a3 pop r15 | 0x0040f5a5 pop rbp | 0x0040f5a6 ret | return rax; | }