; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x41bc50 */ | #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; | 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>*) */ 0x0041bc50 push rbp | 0x0041bc51 push r15 | 0x0041bc53 push r14 | 0x0041bc55 push r13 | 0x0041bc57 push r12 | 0x0041bc59 push rbx | 0x0041bc5a sub rsp, 0x38 | 0x0041bc5e mov qword [rsp + 8], r9 | *((rsp + 8)) = r9; 0x0041bc63 mov qword [rsp], rdx | *(rsp) = rdx; 0x0041bc67 test r8, r8 | | if (r8 == 0) { 0x0041bc6a je 0x41bd86 | goto label_0; | } 0x0041bc70 mov r13, rsi | r13 = rsi; 0x0041bc73 mov r15, rdi | r15 = rdi; 0x0041bc76 mov r14, rsi | r14 = rsi; 0x0041bc79 sub r14, rdi | r14 -= rdi; 0x0041bc7c mov rax, r14 | rax = r14; 0x0041bc7f sar rax, 7 | rax >>= 7; 0x0041bc83 movabs rcx, 0xaaaaaaaaaaaaaaab | rcx = 0xaaaaaaaaaaaaaaab; 0x0041bc8d imul rcx, rax | rcx *= rax; 0x0041bc91 cmp rcx, r8 | 0x0041bc94 mov rbp, r8 | 0x0041bc97 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; | if (rcx < r8) { 0x0041bc9c cmovb rbp, rcx | | } 0x0041bca0 mov qword [rsp + 0x30], r8 | *((rsp + 0x30)) = r8; 0x0041bca5 lea r12, [r8 + r8*2] | r12 = r8 * 3; 0x0041bca9 shl r12, 7 | r12 <<= 7; 0x0041bcad lea rbx, [rdi + r12] | rbx = rdi + r12; 0x0041bcb1 test r14, r14 | | if (r14 != 0) { 0x0041bcb4 je 0x41bcc4 | 0x0041bcb6 mov rdi, rbx | 0x0041bcb9 mov rsi, r15 | 0x0041bcbc mov rdx, r14 | 0x0041bcbf call 0x4037f0 | memmove (rbx, r15, r14); | } 0x0041bcc4 test rbp, rbp | | if (rbp == 0) { 0x0041bcc7 je 0x41bd3e | goto label_1; | } 0x0041bcc9 mov rax, r12 | rax = r12; 0x0041bccc mov r12, r15 | r12 = r15; 0x0041bccf mov qword [rsp + 0x20], r14 | *((rsp + 0x20)) = r14; 0x0041bcd4 mov qword [rsp + 0x18], r13 | *((rsp + 0x18)) = r13; 0x0041bcd9 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0041bcde add rax, r13 | rax += r13; 0x0041bce1 mov rcx, rbp | rcx = rbp; 0x0041bce4 neg rcx | rcx = -rcx; 0x0041bce7 lea r13, [rcx + rcx*2] | r13 = rcx * 3; 0x0041bceb shl r13, 7 | r13 <<= 7; 0x0041bcef add r13, rax | r13 += rax; 0x0041bcf2 shl rbp, 7 | rbp <<= 7; 0x0041bcf6 lea r15, [rbp + rbp*2] | r15 = rbp + rbp*2; 0x0041bcfb xor ebp, ebp | ebp = 0; 0x0041bcfd nop dword [rax] | | do { 0x0041bd00 mov rax, qword [rsp] | rax = *(rsp); 0x0041bd04 lea rsi, [rax + rbp] | 0x0041bd08 lea r14, [r12 + rbp] | r14 = r12 + rbp; 0x0041bd0c mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041bd11 mov rdx, qword [rax] | 0x0041bd14 mov rdi, r14 | 0x0041bd17 call 0x40a0f0 | BloombergLP::balb::Choice3::Choice3(BloombergLP::balb::Choice3const&,BloombergLP::bslma::Allocator*) (r14, rax + rbp, *(rax)); 0x0041bd1c add rbp, 0x180 | rbp += 0x180; 0x0041bd23 cmp r15, rbp | 0x0041bd26 jne 0x41bd00 | | } while (r15 != rbp); 0x0041bd28 add qword [rsp], rbp | 0x0041bd2c mov r14, qword [rsp + 0x20] | r14 = *((rsp + 0x20)); 0x0041bd31 mov r15, r12 | r15 = r12; 0x0041bd34 mov r13, qword [rsp + 0x18] | r13 = *((rsp + 0x18)); 0x0041bd39 mov r12, qword [rsp + 0x10] | r12 = *((rsp + 0x10)); | label_1: 0x0041bd3e mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x0041bd43 cmp rax, qword [rsp + 0x30] | | if (rax >= *((rsp + 0x30))) { 0x0041bd48 jae 0x41bd86 | goto label_0; | } 0x0041bd4a cmp rbx, r13 | | if (rbx == r13) { 0x0041bd4d je 0x41bd86 | goto label_0; | } 0x0041bd4f add r12, r15 | r12 += r15; 0x0041bd52 sub r12, r13 | r12 -= r13; 0x0041bd55 xor ebp, ebp | ebp = 0; 0x0041bd57 nop word [rax + rax] | | do { 0x0041bd60 mov rax, qword [rsp] | rax = *(rsp); 0x0041bd64 lea rsi, [rax + rbp] | 0x0041bd68 lea rdi, [r13 + rbp] | 0x0041bd6d mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041bd72 mov rdx, qword [rax] | 0x0041bd75 call 0x40a0f0 | BloombergLP::balb::Choice3::Choice3(BloombergLP::balb::Choice3const&,BloombergLP::bslma::Allocator*) (r13 + rbp, rax + rbp, *(rax)); 0x0041bd7a add rbp, 0x180 | rbp += 0x180; 0x0041bd81 cmp r12, rbp | 0x0041bd84 jne 0x41bd60 | | } while (r12 != rbp); | label_0: 0x0041bd86 add rsp, 0x38 | 0x0041bd8a pop rbx | 0x0041bd8b pop r12 | 0x0041bd8d pop r13 | 0x0041bd8f pop r14 | 0x0041bd91 pop r15 | 0x0041bd93 pop rbp | 0x0041bd94 ret | return rax; | }