; assembly | /* r2dec pseudo code output */ | /* bdlmt_threadmultiplexor.t/assume @ 0x407d10 */ | #include | ; (fcn) method.int_BloombergLP::bslmt::ThreadUtil::createWithAllocator_BloombergLP::bdlf::Bind_BloombergLP::bslmf.Nil__void____BloombergLP::bslmt::Semaphore__BloombergLP::bdlmt::ThreadMultiplexor__int__bsl::function_void_____const___BloombergLP::bdlf::Bind_B () | int64_t method_int_BloombergLP::bslmt::ThreadUtil::createWithAllocator_BloombergLP::bdlf::Bind_BloombergLP::bslmf_Nil_void_BloombergLP::bslmt::Semaphore_BloombergLP::bdlmt::ThreadMultiplexor_int_bsl::function_void_const_BloombergLP::bdlf::Bind_B (int64_t arg4, int64_t arg3, uint32_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::bslmt::ThreadUtil::createWithAllocator const&), BloombergLP::bdlf::Bind_BoundTuple4 > > >(unsigned long*, BloombergLP::bslmt::ThreadAttributes const&, BloombergLP::bdlf::Bind const&), BloombergLP::bdlf::Bind_BoundTuple4 > > const&, BloombergLP::bslma::Allocator*) */ 0x00407d10 push rbp | 0x00407d11 push r15 | 0x00407d13 push r14 | 0x00407d15 push r13 | 0x00407d17 push r12 | 0x00407d19 push rbx | 0x00407d1a sub rsp, 0x18 | 0x00407d1e mov r14, rcx | r14 = rcx; 0x00407d21 mov r13, rdx | r13 = rdx; 0x00407d24 mov r12, rsi | r12 = rsi; 0x00407d27 mov qword [rsp + 8], rdi | *((rsp + 8)) = rdi; 0x00407d2c mov r15, qword [rsi + 0x38] | r15 = *((rsi + 0x38)); 0x00407d30 mov rbp, qword [rsi + 0x18] | rbp = *((rsi + 0x18)); 0x00407d34 mov rax, qword [rsi + 0x30] | rax = *((rsi + 0x30)); 0x00407d38 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x00407d3d mov rax, qword [rcx] | rax = *(rcx); 0x00407d40 mov esi, 0xc0 | esi = 0xc0; 0x00407d45 mov rdi, rcx | rdi = rcx; 0x00407d48 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)(void, void, void, void, void) (rbx, r12, r13, r14, r15); 0x00407d4b mov rbx, rax | rbx = rax; 0x00407d4e mov qword [rax], 0x407ee0 | *(rax) = method.BloombergLP::bslmt::EntryPointFunctorAdapter_BloombergLP::bdlf::Bind_BloombergLP::bslmf.Nil__void____BloombergLP::bslmt::Semaphore__BloombergLP::bdlmt::ThreadMultiplexor__int__bsl::function_void_____const___BloombergLP::bdlf::Bind_BoundTuple4_; 0x00407d55 mov rax, qword [r13] | rax = *(r13); 0x00407d59 mov qword [rbx + 0x10], rax | *((rbx + 0x10)) = rax; 0x00407d5d mov rax, qword [r13 + 0x10] | rax = *((r13 + 0x10)); 0x00407d61 mov qword [rbx + 0x20], rax | *((rbx + 0x20)) = rax; 0x00407d65 mov rax, qword [r13 + 0x18] | rax = *((r13 + 0x18)); 0x00407d69 mov qword [rbx + 0x28], rax | *((rbx + 0x28)) = rax; 0x00407d6d mov eax, dword [r13 + 0x20] | eax = *((r13 + 0x20)); 0x00407d71 mov dword [rbx + 0x30], eax | *((rbx + 0x30)) = eax; 0x00407d74 lea rax, [rbx + 0x40] | rax = rbx + 0x40; 0x00407d78 lea rsi, [r13 + 0x30] | 0x00407d7c mov r13, rax | r13 = rax; 0x00407d7f mov qword [rbx + 0x70], r14 | *((rbx + 0x70)) = r14; 0x00407d83 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00407d86 movups xmmword [rbx + 0x78], xmm0 | __asm ("movups xmmword [rbx + 0x78], xmm0"); 0x00407d8a mov rdi, rax | 0x00407d8d call 0x40c4b0 | BloombergLP::bslstl::Function_Rep::copyInit(BloombergLP::bslstl::Function_Repconst&) (rax, r13 + 0x30); 0x00407d92 lea rax, [r12 + 0x18] | rax = r12 + 0x18; 0x00407d97 cmp r15, 0x17 | | if (r15 == 0x17) { 0x00407d9b cmove rbp, rax | | } 0x00407d9f mov rdi, rbx | 0x00407da2 add rdi, 0x90 | rdi += 0x90; 0x00407da9 mov qword [rbx + 0x90], 0 | *((rbx + 0x90)) = 0; 0x00407db4 mov qword [rbx + 0xb8], r14 | *((rbx + 0xb8)) = r14; 0x00407dbb movaps xmm0, xmmword [rip + 0x29a0e] | xmm0 = .comment; 0x00407dc2 movups xmmword [rbx + 0xa8], xmm0 | __asm ("movups xmmword [rbx + 0xa8], xmm0"); 0x00407dc9 mov ecx, 0x431ee0 | 0x00407dce mov rsi, rbp | 0x00407dd1 mov rdx, qword [rsp + 0x10] | 0x00407dd6 call 0x40e2b0 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rbx, rbp, *((rsp + 0x10)), "string<...>::assign(i,j): string too long"); 0x00407ddb mov edx, 0x40b720 | 0x00407de0 mov rdi, qword [rsp + 8] | 0x00407de5 mov rsi, r12 | 0x00407de8 mov rcx, rbx | 0x00407deb call 0x40be60 | eax = BloombergLP::bslmt::ThreadUtilImpl::create(unsigned long*,BloombergLP::bslmt::ThreadAttributesconst&,void*(*)(void*),void*) (*((rsp + 8)), r12, sym.bslmt_EntryPointFunctorAdapter_invoker, rbx); 0x00407df0 mov ebp, eax | 0x00407df2 test eax, eax | | if (eax != 0) { 0x00407df4 je 0x407e33 | 0x00407df6 cmp qword [rbx + 0xb0], 0x17 | | if (*((rbx + 0xb0)) != 0x17) { 0x00407dfe je 0x407e14 | 0x00407e00 mov rsi, qword [rbx + 0x90] | rsi = *((rbx + 0x90)); 0x00407e07 mov rdi, qword [rbx + 0xb8] | rdi = *((rbx + 0xb8)); 0x00407e0e mov rax, qword [rdi] | rax = *(rdi); 0x00407e11 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00407e14 mov qword [rbx + 0xa8], 0xffffffffffffffff | *((rbx + 0xa8)) = 0xffffffffffffffff; 0x00407e1f mov rdi, r13 | 0x00407e22 call 0x40c420 | BloombergLP::bslstl::Function_Rep::~Function_Rep() (r13); 0x00407e27 mov rax, qword [r14] | rax = *(r14); 0x00407e2a mov rdi, r14 | rdi = r14; 0x00407e2d mov rsi, rbx | rsi = rbx; 0x00407e30 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00407e33 mov eax, ebp | eax = ebp; 0x00407e35 add rsp, 0x18 | 0x00407e39 pop rbx | 0x00407e3a pop r12 | 0x00407e3c pop r13 | 0x00407e3e pop r14 | 0x00407e40 pop r15 | 0x00407e42 pop rbp | 0x00407e43 ret | return rax; | }