; assembly | /* r2dec pseudo code output */ | /* balb_performancemonitor.t/none @ 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 rbp | 0x00407491 push r15 | 0x00407493 push r14 | 0x00407495 push r12 | 0x00407497 push rbx | 0x00407498 sub rsp, 0x30 | 0x0040749c mov rbx, rsi | rbx = rsi; 0x0040749f mov rbp, rdi | 0x004074a2 call 0x407130 | eax = fork (); 0x004074a7 mov r14d, eax | r14d = eax; 0x004074aa test eax, eax | | if (eax != 0) { 0x004074ac jne 0x407572 | goto label_0; | } 0x004074b2 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004074b5 movaps xmmword [rsp + 0x10], xmm0 | *((rsp + 0x10)) = xmm0; 0x004074ba mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x004074c3 mov rax, qword [rip + 0x283d36] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004074ca test rax, rax | | if (rax == 0) { 0x004074cd jne 0x4074d4 | 0x004074cf call 0x42bac0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004074d4 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x004074d9 cmp qword [rbp + 0x20], 0x17 | | if (*((rbp + 0x20)) != 0x17) { 0x004074de je 0x4074e4 | 0x004074e0 mov rbp, qword [rbp] | rbp = *(rbp); | } 0x004074e4 mov qword [rsp + 8], rbp | *((rsp + 8)) = rbp; 0x004074e9 lea rdi, [rsp + 0x10] | 0x004074ee lea rsi, [rsp + 8] | 0x004074f3 call 0x4120d0 | unsigned long&bsl::vector>::emplace_back(unsigned long&&) (rsp + 0x10, rsp + 8); 0x004074f8 mov rbp, qword [rbx] | rbp = *(rbx); 0x004074fb cmp rbp, qword [rbx + 8] | | if (rbp == *((rbx + 8))) { 0x004074ff je 0x407538 | goto label_1; | } 0x00407501 lea r15, [rsp + 0x10] | r15 = rsp + 0x10; 0x00407506 lea r12, [rsp + 8] | r12 = rsp + 8; 0x0040750b nop dword [rax + rax] | | do { 0x00407510 cmp qword [rbp + 0x20], 0x17 | 0x00407515 mov rax, rbp | rax = rbp; | if (*((rbp + 0x20)) != 0x17) { 0x00407518 je 0x40751e | 0x0040751a mov rax, qword [rbp] | rax = *(rbp); | } 0x0040751e mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00407523 mov rdi, r15 | 0x00407526 mov rsi, r12 | 0x00407529 call 0x4120d0 | unsigned long&bsl::vector>::emplace_back(unsigned long&&) (r15, r12); 0x0040752e add rbp, 0x30 | rbp += 0x30; 0x00407532 cmp rbp, qword [rbx + 8] | 0x00407536 jne 0x407510 | | } while (rbp != *((rbx + 8))); | label_1: 0x00407538 mov qword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00407541 lea rdi, [rsp + 0x10] | 0x00407546 lea rsi, [rsp + 8] | 0x0040754b call 0x4120d0 | unsigned long&bsl::vector>::emplace_back(unsigned long&&) (rsp + 0x10, rsp + 8); 0x00407550 mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x00407555 mov rdi, qword [rsi] | rdi = *(rsi); 0x00407558 call 0x4065e0 | execv (); 0x0040755d mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x00407562 test rsi, rsi | | if (rsi != 0) { 0x00407565 je 0x407572 | 0x00407567 mov rdi, qword [rsp + 0x28] | rdi = *((rsp + 0x28)); 0x0040756c mov rax, qword [rdi] | rax = *(rdi); 0x0040756f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_0: 0x00407572 mov eax, r14d | eax = r14d; 0x00407575 add rsp, 0x30 | 0x00407579 pop rbx | 0x0040757a pop r12 | 0x0040757c pop r14 | 0x0040757e pop r15 | 0x00407580 pop rbp | 0x00407581 ret | return rax; | }