; assembly | /* r2dec pseudo code output */ | /* bdlc_compactedarray.t/none @ 0x430540 */ | #include | ; (fcn) method.BloombergLP::bdlc::CompactedArray_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____.append_BloombergLP::bdlc::CompactedArray_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char______const__unsigned () | int64_t method_BloombergLP::bdlc::CompactedArray_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_append_BloombergLP::bdlc::CompactedArray_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_const_unsigned (int64_t arg4, uint32_t arg3, int64_t arg2, uint32_t arg1) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlc::CompactedArray, bsl::allocator > >::append(BloombergLP::bdlc::CompactedArray, bsl::allocator > > const&, unsigned long, unsigned long) */ 0x00430540 push rbp | 0x00430541 push r15 | 0x00430543 push r14 | 0x00430545 push r13 | 0x00430547 push r12 | 0x00430549 push rbx | 0x0043054a push rax | 0x0043054b mov r15, rcx | r15 = rcx; 0x0043054e mov r14, rdx | r14 = rdx; 0x00430551 mov r12, rsi | r12 = rsi; 0x00430554 cmp rsi, rdi | | if (rsi == rdi) { 0x00430557 je 0x430602 | goto label_0; | } 0x0043055d mov rax, qword [rdi + 8] | rax = *((rdi + 8)); 0x00430561 mov rcx, rdi | rcx = rdi; 0x00430564 mov rbx, qword [rdi + 0x28] | rbx = *((rdi + 0x28)); 0x00430568 sub rax, qword [rdi] | rax -= *(rdi); 0x0043056b sar rax, 3 | rax >>= 3; 0x0043056f movabs rdi, 0x6db6db6db6db6db7 | rdi = 0x6db6db6db6db6db7; 0x00430579 imul rdi, rax | rdi *= rax; 0x0043057d add rdi, r15 | rdi += r15; 0x00430580 mov qword [rsp], rcx | *(rsp) = rcx; 0x00430584 mov ebp, dword [rcx + 0x30] | ebp = *((rcx + 0x30)); 0x00430587 call 0x434690 | eax = BloombergLP::bdlc::PackedIntArrayImp_Unsigned::requiredBytesPerElement(unsigned long) (rdi); 0x0043058c mov rcx, qword [rsp] | rcx = *(rsp); 0x00430590 lea r13, [rcx + 0x20] | r13 = rcx + 0x20; 0x00430594 add rbx, r15 | rbx += r15; 0x00430597 cmp eax, ebp | | if (eax > ebp) { 0x00430599 cmovg ebp, eax | | } 0x0043059c movsxd rsi, ebp | rsi = (int64_t) ebp; 0x0043059f imul rsi, rbx | rsi *= rbx; 0x004305a3 cmp rsi, qword [rcx + 0x38] | | if (rsi > *((rcx + 0x38))) { 0x004305a7 jbe 0x4305b1 | 0x004305a9 mov rdi, r13 | 0x004305ac call 0x439a60 | BloombergLP::bdlc::PackedIntArrayImp::reserveCapacityImp(unsigned long) (r13, rsi); | } 0x004305b1 test r15, r15 | 0x004305b4 mov rbx, qword [rsp] | rbx = *(rsp); | if (r15 == 0) { 0x004305b8 je 0x4305f3 | goto label_1; | } 0x004305ba lea rbp, [r12 + 0x20] | rbp = r12 + 0x20; 0x004305bf nop | | do { 0x004305c0 mov rdi, rbp | 0x004305c3 mov rsi, r14 | rsi = r14; 0x004305c6 call 0x43adf0 | rax = BloombergLP::bdlc::PackedIntArrayImp::operator [] (unsigned long)const (rbp); 0x004305cb imul rsi, rax, 0x38 | rsi = rax * 0x38; 0x004305cf add rsi, qword [r12] | rsi += *(r12); 0x004305d3 mov edx, 1 | 0x004305d8 mov rdi, rbx | 0x004305db call 0x4317b0 | rax = BloombergLP::bdlc::CompactedArray,bsl::allocator>>::increment(bsl::basic_string,bsl::allocator>const&,unsigned long) (rbx, rsi, 1); 0x004305e0 mov rdi, r13 | 0x004305e3 mov rsi, rax | 0x004305e6 call 0x4398a0 | BloombergLP::bdlc::PackedIntArrayImp::append(unsigned long) (r13, rax); 0x004305eb inc r14 | r14++; 0x004305ee dec r15 | r15--; 0x004305f1 jne 0x4305c0 | | } while (r15 != 0); | label_1: 0x004305f3 add rsp, 8 | 0x004305f7 pop rbx | 0x004305f8 pop r12 | 0x004305fa pop r13 | 0x004305fc pop r14 | 0x004305fe pop r15 | 0x00430600 pop rbp | 0x00430601 ret | return rax; | label_0: 0x00430602 lea r13, [r12 + 0x20] | r13 = r12 + 0x20; 0x00430607 mov rsi, qword [r12 + 0x28] | 0x0043060c add rsi, r15 | rsi += r15; 0x0043060f shl rsi, 3 | rsi <<= 3; 0x00430613 mov rdi, r13 | 0x00430616 call 0x439a60 | BloombergLP::bdlc::PackedIntArrayImp::reserveCapacityImp(unsigned long) (r13, *((r12 + 0x28))); 0x0043061b test r15, r15 | | if (r15 == 0) { 0x0043061e je 0x430650 | goto label_2; | } 0x00430620 mov rbx, r14 | rbx = r14; 0x00430623 mov rbp, r15 | 0x00430626 nop word cs:[rax + rax] | | do { 0x00430630 mov rdi, r13 | 0x00430633 mov rsi, rbx | rsi = rbx; 0x00430636 call 0x43adf0 | rax = BloombergLP::bdlc::PackedIntArrayImp::operator [] (unsigned long)const (r13); 0x0043063b mov rcx, qword [r12] | rcx = *(r12); 0x0043063f imul rax, rax, 0x38 | rax *= 0x38; 0x00430643 inc qword [rcx + rax + 0x30] | *((rcx + rax + 0x30))++; 0x00430648 inc rbx | rbx++; 0x0043064b dec rbp | rbp--; 0x0043064e jne 0x430630 | | } while (rbp != 0); | label_2: 0x00430650 mov rdi, r13 | rdi = r13; 0x00430653 mov rsi, r13 | rsi = r13; 0x00430656 mov rdx, r14 | rdx = r14; 0x00430659 mov rcx, r15 | rcx = r15; 0x0043065c add rsp, 8 | 0x00430660 pop rbx | 0x00430661 pop r12 | 0x00430663 pop r13 | 0x00430665 pop r14 | 0x00430667 pop r15 | 0x00430669 pop rbp | 0x0043066a jmp 0x439b00 | return void (*0x439b00)() (); | }