; assembly | /* r2dec pseudo code output */ | /* balb_performancemonitor.t/assume @ 0x407490 */ | #include | ; (fcn) method.processSupport.exec_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____bsl::vector_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____bsl::allocator_bsl::basic_string_char__std::__1::char_traits_ () | uint64_t method_processSupport_exec_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_bsl::vector_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_bsl::allocator_bsl::basic_string_char_std::_1::char_traits_ (int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_20h; | int64_t var_28h; | rsi = arg2; | rdi = arg1; | /* processSupport::exec(bsl::basic_string, bsl::allocator >, bsl::vector, bsl::allocator >, bsl::allocator, bsl::allocator > > >) */ 0x00407490 push r15 | 0x00407492 push r14 | 0x00407494 push r12 | 0x00407496 push rbx | 0x00407497 sub rsp, 0x38 | 0x0040749b mov r14, rsi | r14 = rsi; 0x0040749e mov rbx, rdi | rbx = rdi; 0x004074a1 call 0x407130 | eax = fork (); 0x004074a6 test eax, eax | | if (eax != 0) { 0x004074a8 je 0x4074b6 | 0x004074aa add rsp, 0x38 | 0x004074ae pop rbx | 0x004074af pop r12 | 0x004074b1 pop r14 | 0x004074b3 pop r15 | 0x004074b5 ret | return eax; | } 0x004074b6 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004074b9 movaps xmmword [rsp + 0x10], xmm0 | *((rsp + 0x10)) = xmm0; 0x004074be mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x004074c7 mov rax, qword [rip + 0x282d32] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004074ce test rax, rax | | if (rax == 0) { 0x004074d1 jne 0x4074d8 | 0x004074d3 call 0x42b720 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004074d8 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x004074dd cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x004074e2 je 0x4074e7 | 0x004074e4 mov rbx, qword [rbx] | rbx = *(rbx); | } 0x004074e7 mov qword [rsp + 8], rbx | *((rsp + 8)) = rbx; 0x004074ec lea rdi, [rsp + 0x10] | 0x004074f1 lea rsi, [rsp + 8] | 0x004074f6 call 0x4120a0 | unsigned long&bsl::vector>::emplace_back(unsigned long&&) (rsp + 0x10, rsp + 8); 0x004074fb mov rbx, qword [r14] | rbx = *(r14); 0x004074fe cmp rbx, qword [r14 + 8] | | if (rbx == *((r14 + 8))) { 0x00407502 je 0x407535 | goto label_0; | } 0x00407504 lea r15, [rsp + 0x10] | r15 = rsp + 0x10; 0x00407509 lea r12, [rsp + 8] | r12 = rsp + 8; | do { 0x0040750e cmp qword [rbx + 0x20], 0x17 | 0x00407513 mov rax, rbx | rax = rbx; | if (*((rbx + 0x20)) != 0x17) { 0x00407516 je 0x40751b | 0x00407518 mov rax, qword [rbx] | rax = *(rbx); | } 0x0040751b mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00407520 mov rdi, r15 | 0x00407523 mov rsi, r12 | 0x00407526 call 0x4120a0 | unsigned long&bsl::vector>::emplace_back(unsigned long&&) (r15, r12); 0x0040752b add rbx, 0x30 | rbx += 0x30; 0x0040752f cmp rbx, qword [r14 + 8] | 0x00407533 jne 0x40750e | | } while (rbx != *((r14 + 8))); | label_0: 0x00407535 mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0040753e lea rdi, [rsp + 0x10] | 0x00407543 lea rsi, [rsp + 8] | 0x00407548 call 0x4120a0 | unsigned long&bsl::vector>::emplace_back(unsigned long&&) (rsp + 0x10, rsp + 8); 0x0040754d mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x00407552 mov rdi, qword [rsi] | rdi = *(rsi); 0x00407555 call 0x4065e0 | rax = execv (); 0x0040755a jmp 0x407564 | 0x00407564 mov rbx, rax | rbx = rax; 0x00407567 mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x0040756c test rsi, rsi | | if (rsi != 0) { 0x0040756f je 0x40757c | 0x00407571 mov rdi, qword [rsp + 0x28] | rdi = *((rsp + 0x28)); 0x00407576 mov rax, qword [rdi] | rax = *(rdi); 0x00407579 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040757c mov rdi, rbx | rdi = rbx; 0x0040757f call 0x407250 | rax = Unwind_Resume (); 0x00407584 mov rdi, rax | rdi = rax; 0x00407587 call 0x411cf0 | rax = _clang_call_terminate (); 0x0040758c nop dword [rax] | | }