; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x404840 */ | #include | ; (fcn) method.BloombergLP::balb::Choice4.makeSelection1_bsl::vector_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____bsl::allocator_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char________const_ () | int64_t method_BloombergLP::balb::Choice4_makeSelection1_bsl::vector_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_bsl::allocator_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_const_ (int64_t arg2, uint32_t arg1) { | int64_t var_8h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balb::Choice4::makeSelection1(bsl::vector, bsl::allocator >, bsl::allocator, bsl::allocator > > > const&) */ 0x00404840 push r15 | 0x00404842 push r14 | 0x00404844 push r13 | 0x00404846 push r12 | 0x00404848 push rbx | 0x00404849 sub rsp, 0x10 | 0x0040484d mov r14, rsi | r14 = rsi; 0x00404850 mov r15, rdi | r15 = rdi; 0x00404853 cmp dword [rdi + 0x20], 0 | | if (*((rdi + 0x20)) != 0) { 0x00404857 je 0x40489a | 0x00404859 mov dword [r15 + 0x20], 0xffffffff | *((r15 + 0x20)) = 0xffffffff; 0x00404861 mov rax, qword [r15 + 0x28] | rax = *((r15 + 0x28)); 0x00404865 test rax, rax | | if (rax == 0) { 0x00404868 jne 0x40487b | 0x0040486a mov rax, qword [rip + 0x27a2df] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00404871 test rax, rax | | if (rax != 0) { 0x00404874 jne 0x40487b | goto label_1; | } 0x00404876 call 0x4207c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_1: 0x0040487b mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00404880 lea rdx, [rsp + 8] | 0x00404885 mov rdi, r15 | 0x00404888 mov rsi, r14 | 0x0040488b call 0x414300 | bsl::vector,bsl::allocator>,bsl::allocator,bsl::allocator>>>::vector(bsl::vector,bsl::allocator>,bsl::allocator,bsl::allocator>>>const&,bsl::allocator,bsl::allocator>>const&) (r15, r14, rsp + 8); 0x00404890 mov dword [r15 + 0x20], 0 | *((r15 + 0x20)) = 0; 0x00404898 jmp 0x4048f6 | goto label_2; | } 0x0040489a cmp r15, r14 | | if (r15 == r14) { 0x0040489d je 0x4048f6 | goto label_2; | } 0x0040489f mov r12, qword [r15] | r12 = *(r15); 0x004048a2 mov r13, qword [r15 + 8] | r13 = *((r15 + 8)); 0x004048a6 cmp r13, r12 | | if (r13 == r12) { 0x004048a9 je 0x4048e1 | goto label_3; | } 0x004048ab mov rbx, r12 | rbx = r12; 0x004048ae jmp 0x4048c1 | | while (*((rbx + 0x20)) == 0x17) { | label_0: 0x004048b0 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x004048b8 add rbx, 0x30 | rbx += 0x30; 0x004048bc cmp r13, rbx | | if (r13 == rbx) { 0x004048bf je 0x4048d7 | goto label_4; | } 0x004048c1 cmp qword [rbx + 0x20], 0x17 | 0x004048c6 je 0x4048b0 | | } 0x004048c8 mov rsi, qword [rbx] | rsi = *(rbx); 0x004048cb mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x004048cf mov rax, qword [rdi] | rax = *(rdi); 0x004048d2 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004048d5 jmp 0x4048b0 | goto label_0; | label_4: 0x004048d7 sub r12, r13 | r12 -= r13; 0x004048da add qword [r15 + 8], r12 | *((r15 + 8)) += r12; 0x004048de mov r13, qword [r15] | r13 = *(r15); | label_3: 0x004048e1 mov rdx, qword [r14] | 0x004048e4 mov rcx, qword [r14 + 8] | 0x004048e8 mov r8, rsp | r8 = rsp; 0x004048eb mov rdi, r15 | 0x004048ee mov rsi, r13 | 0x004048f1 call 0x4158b0 | voidbsl::vector,bsl::allocator>,bsl::allocator,bsl::allocator>>>::privateInsert,bsl::allocator>const*>(bsl::basic_string,bsl::allocator>const*,bsl::basic_string,bsl::allocator>const*,bsl::basic_string,bsl::allocator>const*,std::_1::forward_iterator_tagconst&) (r15, r13, *(r14), *((r14 + 8))); | label_2: 0x004048f6 mov rax, r15 | rax = r15; 0x004048f9 add rsp, 0x10 | 0x004048fd pop rbx | 0x004048fe pop r12 | 0x00404900 pop r13 | 0x00404902 pop r14 | 0x00404904 pop r15 | 0x00404906 ret | return rax; | }