; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/assume @ 0x41bc10 */ | #include | ; (fcn) method.void_BloombergLP::bslalg::ArrayPrimitives_Imp::insert_BloombergLP::balb::Choice3__BloombergLP::balb::Choice3_const__bsl::allocator_BloombergLP::balb.Choice3____BloombergLP::balb::Choice3__BloombergLP::balb::Choice3__BloombergLP::balb::Choice3_c () | int64_t method_void_BloombergLP::bslalg::ArrayPrimitives_Imp::insert_BloombergLP::balb::Choice3_BloombergLP::balb::Choice3_const_bsl::allocator_BloombergLP::balb_Choice3_BloombergLP::balb::Choice3_BloombergLP::balb::Choice3_BloombergLP::balb::Choice3_c (int64_t arg6, uint32_t arg5, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h_2; | int64_t var_18h; | int64_t var_20h; | int64_t var_28h; | uint32_t var_30h; | r9 = arg6; | r8 = arg5; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bslalg::ArrayPrimitives_Imp::insert >(BloombergLP::balb::Choice3*, BloombergLP::balb::Choice3*, BloombergLP::balb::Choice3 const*, BloombergLP::balb::Choice3 const*, unsigned long, bsl::allocator, BloombergLP::bslmf::MetaInt<1>*) */ 0x0041bc10 push rbp | 0x0041bc11 push r15 | 0x0041bc13 push r14 | 0x0041bc15 push r13 | 0x0041bc17 push r12 | 0x0041bc19 push rbx | 0x0041bc1a sub rsp, 0x38 | 0x0041bc1e mov qword [rsp + 8], r9 | *((rsp + 8)) = r9; 0x0041bc23 mov qword [rsp], rdx | *(rsp) = rdx; 0x0041bc27 test r8, r8 | | if (r8 == 0) { 0x0041bc2a je 0x41bd46 | goto label_0; | } 0x0041bc30 mov r13, rsi | r13 = rsi; 0x0041bc33 mov r15, rdi | r15 = rdi; 0x0041bc36 mov r14, rsi | r14 = rsi; 0x0041bc39 sub r14, rdi | r14 -= rdi; 0x0041bc3c mov rax, r14 | rax = r14; 0x0041bc3f sar rax, 7 | rax >>= 7; 0x0041bc43 movabs rcx, 0xaaaaaaaaaaaaaaab | rcx = 0xaaaaaaaaaaaaaaab; 0x0041bc4d imul rcx, rax | rcx *= rax; 0x0041bc51 cmp rcx, r8 | 0x0041bc54 mov rbp, r8 | 0x0041bc57 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; | if (rcx < r8) { 0x0041bc5c cmovb rbp, rcx | | } 0x0041bc60 mov qword [rsp + 0x30], r8 | *((rsp + 0x30)) = r8; 0x0041bc65 lea rbx, [r8 + r8*2] | rbx = r8 * 3; 0x0041bc69 shl rbx, 7 | rbx <<= 7; 0x0041bc6d lea r12, [rdi + rbx] | r12 = rdi + rbx; 0x0041bc71 test r14, r14 | | if (r14 != 0) { 0x0041bc74 je 0x41bc84 | 0x0041bc76 mov rdi, r12 | 0x0041bc79 mov rsi, r15 | 0x0041bc7c mov rdx, r14 | 0x0041bc7f call 0x4037f0 | memmove (r12, r15, r14); | } 0x0041bc84 test rbp, rbp | | if (rbp == 0) { 0x0041bc87 je 0x41bd00 | goto label_1; | } 0x0041bc89 mov qword [rsp + 0x20], r14 | *((rsp + 0x20)) = r14; 0x0041bc8e mov qword [rsp + 0x18], r13 | *((rsp + 0x18)) = r13; 0x0041bc93 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0041bc98 lea rax, [r13 + rbx] | rax = r13 + rbx; 0x0041bc9d mov rcx, rbp | rcx = rbp; 0x0041bca0 neg rcx | rcx = -rcx; 0x0041bca3 lea r13, [rcx + rcx*2] | r13 = rcx * 3; 0x0041bca7 shl r13, 7 | r13 <<= 7; 0x0041bcab add r13, rax | r13 += rax; 0x0041bcae shl rbp, 7 | rbp <<= 7; 0x0041bcb2 lea r14, [rbp + rbp*2] | r14 = rbp + rbp*2; 0x0041bcb7 xor ebp, ebp | ebp = 0; 0x0041bcb9 nop dword [rax] | | do { 0x0041bcc0 mov rax, qword [rsp] | rax = *(rsp); 0x0041bcc4 lea rsi, [rax + rbp] | 0x0041bcc8 mov rbx, r15 | rbx = r15; 0x0041bccb add r15, rbp | r15 += rbp; 0x0041bcce mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041bcd3 mov rdx, qword [rax] | 0x0041bcd6 mov rdi, r15 | 0x0041bcd9 call 0x40a140 | BloombergLP::balb::Choice3::Choice3(BloombergLP::balb::Choice3const&,BloombergLP::bslma::Allocator*) (r15, rax + rbp, *(rax)); 0x0041bcde add rbp, 0x180 | rbp += 0x180; 0x0041bce5 cmp r14, rbp | 0x0041bce8 mov r15, rbx | r15 = rbx; 0x0041bceb jne 0x41bcc0 | | } while (r14 != rbp); 0x0041bced add qword [rsp], rbp | 0x0041bcf1 mov r14, qword [rsp + 0x20] | r14 = *((rsp + 0x20)); 0x0041bcf6 mov r13, qword [rsp + 0x18] | r13 = *((rsp + 0x18)); 0x0041bcfb mov rbx, qword [rsp + 0x10] | rbx = *((rsp + 0x10)); | label_1: 0x0041bd00 mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x0041bd05 cmp rax, qword [rsp + 0x30] | | if (rax >= *((rsp + 0x30))) { 0x0041bd0a jae 0x41bd46 | goto label_0; | } 0x0041bd0c cmp r12, r13 | | if (r12 == r13) { 0x0041bd0f je 0x41bd46 | goto label_0; | } 0x0041bd11 add rbx, r15 | rbx += r15; 0x0041bd14 sub rbx, r13 | rbx -= r13; 0x0041bd17 xor ebp, ebp | ebp = 0; 0x0041bd19 nop dword [rax] | | do { 0x0041bd20 mov rax, qword [rsp] | rax = *(rsp); 0x0041bd24 lea rsi, [rax + rbp] | 0x0041bd28 lea rdi, [r13 + rbp] | 0x0041bd2d mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041bd32 mov rdx, qword [rax] | 0x0041bd35 call 0x40a140 | BloombergLP::balb::Choice3::Choice3(BloombergLP::balb::Choice3const&,BloombergLP::bslma::Allocator*) (r13 + rbp, rax + rbp, *(rax)); 0x0041bd3a add rbp, 0x180 | rbp += 0x180; 0x0041bd41 cmp rbx, rbp | 0x0041bd44 jne 0x41bd20 | | } while (rbx != rbp); | label_0: 0x0041bd46 add rsp, 0x38 | 0x0041bd4a pop rbx | 0x0041bd4b pop r12 | 0x0041bd4d pop r13 | 0x0041bd4f pop r14 | 0x0041bd51 pop r15 | 0x0041bd53 pop rbp | 0x0041bd54 ret | return rax; | }