; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/assume @ 0x404850 */ | #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, int64_t arg1) { | int64_t var_8h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balb::Choice4::makeSelection1(bsl::vector, bsl::allocator >, bsl::allocator, bsl::allocator > > > const&) */ 0x00404850 push r15 | 0x00404852 push r14 | 0x00404854 push r13 | 0x00404856 push r12 | 0x00404858 push rbx | 0x00404859 sub rsp, 0x10 | 0x0040485d mov r14, rsi | r14 = rsi; 0x00404860 mov r15, rdi | r15 = rdi; 0x00404863 mov eax, dword [rdi + 0x20] | eax = *((rdi + 0x20)); 0x00404866 cmp eax, 1 | | if (eax == 1) { 0x00404869 je 0x4048b7 | goto label_1; | } 0x0040486b test eax, eax | | if (eax != 0) { 0x0040486d jne 0x4048b7 | goto label_1; | } 0x0040486f cmp r15, r14 | | if (r15 == r14) { 0x00404872 je 0x404917 | goto label_2; | } 0x00404878 mov r12, qword [r15] | r12 = *(r15); 0x0040487b mov r13, qword [r15 + 8] | r13 = *((r15 + 8)); 0x0040487f cmp r13, r12 | | if (r13 == r12) { 0x00404882 je 0x404902 | goto label_3; | } 0x00404888 mov rbx, r12 | rbx = r12; 0x0040488b jmp 0x4048a1 | | while (*((rbx + 0x20)) == 0x17) { | label_0: 0x00404890 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x00404898 add rbx, 0x30 | rbx += 0x30; 0x0040489c cmp r13, rbx | | if (r13 == rbx) { 0x0040489f je 0x4048f8 | goto label_4; | } 0x004048a1 cmp qword [rbx + 0x20], 0x17 | 0x004048a6 je 0x404890 | | } 0x004048a8 mov rsi, qword [rbx] | rsi = *(rbx); 0x004048ab mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x004048af mov rax, qword [rdi] | rax = *(rdi); 0x004048b2 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004048b5 jmp 0x404890 | goto label_0; | label_1: 0x004048b7 mov dword [r15 + 0x20], 0xffffffff | *((r15 + 0x20)) = 0xffffffff; 0x004048bf mov rax, qword [r15 + 0x28] | rax = *((r15 + 0x28)); 0x004048c3 test rax, rax | | if (rax == 0) { 0x004048c6 jne 0x4048d9 | 0x004048c8 mov rax, qword [rip + 0x27b281] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004048cf test rax, rax | | if (rax != 0) { 0x004048d2 jne 0x4048d9 | goto label_5; | } 0x004048d4 call 0x4206c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_5: 0x004048d9 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004048de lea rdx, [rsp + 8] | 0x004048e3 mov rdi, r15 | 0x004048e6 mov rsi, r14 | 0x004048e9 call 0x414410 | 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); 0x004048ee mov dword [r15 + 0x20], 0 | *((r15 + 0x20)) = 0; 0x004048f6 jmp 0x404917 | goto label_2; | label_4: 0x004048f8 sub r12, r13 | r12 -= r13; 0x004048fb add qword [r15 + 8], r12 | *((r15 + 8)) += r12; 0x004048ff mov r13, qword [r15] | r13 = *(r15); | label_3: 0x00404902 mov rdx, qword [r14] | 0x00404905 mov rcx, qword [r14 + 8] | 0x00404909 mov r8, rsp | r8 = rsp; 0x0040490c mov rdi, r15 | 0x0040490f mov rsi, r13 | 0x00404912 call 0x415840 | 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: 0x00404917 mov rax, r15 | rax = r15; 0x0040491a add rsp, 0x10 | 0x0040491e pop rbx | 0x0040491f pop r12 | 0x00404921 pop r13 | 0x00404923 pop r14 | 0x00404925 pop r15 | 0x00404927 ret | return rax; | }