; assembly | /* r2dec pseudo code output */ | /* ball_asyncfileobserver.t/none @ 0x42c530 */ | #include | ; (fcn) method.int_BloombergLP::bslmt::ThreadUtil::createWithAllocator_bsl.function_void_______unsigned_long__bsl::function_void_____const__BloombergLP::bslma::Allocator_ () | uint64_t method_int_BloombergLP::bslmt::ThreadUtil::createWithAllocator_bsl_function_void_unsigned_long_bsl::function_void_const_BloombergLP::bslma::Allocator_ (int64_t arg3, char * arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | int64_t var_38h; | uint32_t var_58h; | int64_t var_60h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::bslmt::ThreadUtil::createWithAllocator >(unsigned long*, bsl::function const&, BloombergLP::bslma::Allocator*) */ 0x0042c530 push r14 | 0x0042c532 push rbx | 0x0042c533 sub rsp, 0x68 | 0x0042c537 mov rcx, rdx | 0x0042c53a mov r14, rdi | r14 = rdi; 0x0042c53d xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0042c540 movaps xmmword [rsp + 0x10], xmm0 | *((rsp + 0x10)) = xmm0; 0x0042c545 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0042c549 movaps xmmword [rsp + 0x20], xmm0 | *((rsp + 0x20)) = xmm0; 0x0042c54e mov rdi, rsp | 0x0042c551 lea rdx, [rsp + 0x20] | 0x0042c556 call 0x42c620 | voidBloombergLP::bslmt::EntryPointFunctorAdapterUtil::allocateAdapter>(BloombergLP::bslma::ManagedPtr>>*,bsl::functionconst&,BloombergLP::bslstl::StringRefImpconst&,BloombergLP::bslma::Allocator*) (rsp, rsi, rsp + 0x20, rdx); 0x0042c55b mov rbx, qword [rsp] | rbx = *(rsp); 0x0042c55f lea rdi, [rsp + 0x20] | 0x0042c564 call 0x46dc10 | BloombergLP::bslmt::ThreadAttributes::ThreadAttributes() (rsp + 0x20); 0x0042c569 lea rsi, [rsp + 0x20] | 0x0042c56e mov edx, 0x46c940 | 0x0042c573 mov rdi, r14 | 0x0042c576 mov rcx, rbx | 0x0042c579 call 0x46df60 | eax = BloombergLP::bslmt::ThreadUtilImpl::create(unsigned long*,BloombergLP::bslmt::ThreadAttributesconst&,void*(*)(void*),void*) (r14, rsp + 0x20, sym.bslmt_EntryPointFunctorAdapter_invoker, rbx); 0x0042c57e mov ebx, eax | ebx = eax; 0x0042c580 cmp qword [rsp + 0x58], 0x17 | | if (*((rsp + 0x58)) != 0x17) { 0x0042c586 je 0x42c598 | 0x0042c588 mov rsi, qword [rsp + 0x38] | rsi = *((rsp + 0x38)); 0x0042c58d mov rdi, qword [rsp + 0x60] | rdi = *((rsp + 0x60)); 0x0042c592 mov rax, qword [rdi] | rax = *(rdi); 0x0042c595 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0042c598 test ebx, ebx | | if (ebx != 0) { 0x0042c59a je 0x42c5b1 | 0x0042c59c cmp qword [rsp], 0 | | if (*(rsp) == 0) { 0x0042c5a1 je 0x42c5b1 | goto label_0; | } 0x0042c5a3 mov rdi, qword [rsp + 8] | rdi = *((rsp + 8)); 0x0042c5a8 mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x0042c5ad call qword [rsp + 0x18] | uint64_t (*rsp + 0x18)() (); | } | label_0: 0x0042c5b1 mov eax, ebx | eax = ebx; 0x0042c5b3 add rsp, 0x68 | 0x0042c5b7 pop rbx | 0x0042c5b8 pop r14 | 0x0042c5ba ret | return rax; | }