; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/assume @ 0x41ec50 */ | #include | ; (fcn) method.BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Unsigned_.PackedIntArrayImp_unsigned_long__unsigned_long__BloombergLP::bslma::Allocator_ () | uint64_t method_BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Unsigned_PackedIntArrayImp_unsigned_long_unsigned_long_BloombergLP::bslma::Allocator_ (int64_t arg4, int64_t arg3, uint32_t arg2, int64_t arg1) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlc::PackedIntArrayImp::PackedIntArrayImp(unsigned long, unsigned long, BloombergLP::bslma::Allocator*) */ 0x0041ec50 push r14 | 0x0041ec52 push rbx | 0x0041ec53 push rax | 0x0041ec54 mov r14, rdx | r14 = rdx; 0x0041ec57 mov rbx, rdi | rbx = rdi; 0x0041ec5a mov qword [rdi], 0 | *(rdi) = 0; 0x0041ec61 mov qword [rdi + 8], rsi | *((rdi + 8)) = rsi; 0x0041ec65 mov dword [rdi + 0x10], 1 | *((rdi + 0x10)) = 1; 0x0041ec6c mov qword [rdi + 0x18], 0 | *((rdi + 0x18)) = 0; 0x0041ec74 test rcx, rcx | | if (rcx == 0) { 0x0041ec77 jne 0x41ec91 | 0x0041ec79 mov rcx, qword [rip + 0x25e218] | rcx = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041ec80 test rcx, rcx | | if (rcx != 0) { 0x0041ec83 jne 0x41ec91 | goto label_0; | } 0x0041ec85 call 0x421290 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0041ec8a mov rcx, rax | rcx = rax; 0x0041ec8d mov rsi, qword [rbx + 8] | rsi = *((rbx + 8)); | } | label_0: 0x0041ec91 mov qword [rbx + 0x20], rcx | *((rbx + 0x20)) = rcx; 0x0041ec95 test rsi, rsi | | if (rsi == 0) { 0x0041ec98 je 0x41ed8d | void (*0x41ed8d)() (); | } 0x0041ec9e xor eax, eax | eax = 0; 0x0041eca0 mov rdx, r14 | rdx = r14; 0x0041eca3 shr rdx, 0x20 | rdx >>= 0x20; 0x0041eca7 setne al | al = (rdx != 0) ? 1 : 0; 0x0041ecaa xor edx, edx | edx = 0; 0x0041ecac cmp r14, 0xff | 0x0041ecb3 seta dl | dl = (r14 > 0xff) ? 1 : 0; 0x0041ecb6 inc edx | edx++; 0x0041ecb8 cmp r14, 0xffff | 0x0041ecbf lea eax, [rax*4 + 4] | eax = rax*4 + 4; | if (r14 <= 0xffff) { 0x0041ecc6 cmovbe eax, edx | eax = edx; | } 0x0041ecc9 mov dword [rbx + 0x10], eax | *((rbx + 0x10)) = eax; 0x0041eccc imul rsi, rax | rsi *= rax; 0x0041ecd0 cmp rsi, 0x55555550 | | if (rsi > 0x55555550) { 0x0041ecd7 ja 0x41ed95 | goto label_1; | } 0x0041ecdd xor eax, eax | eax = 0; 0x0041ecdf nop | | do { 0x0041ece0 lea rdx, [rax + 3] | rdx = rax + 3; 0x0041ece4 shr rdx, 1 | rdx >>= 1; 0x0041ece7 add rax, rdx | rax += rdx; 0x0041ecea cmp rax, rsi | 0x0041eced jb 0x41ece0 | | } while (rax < rsi); | do { 0x0041ecef mov qword [rbx + 0x18], rax | *((rbx + 0x18)) = rax; 0x0041ecf3 mov rdx, qword [rcx] | rdx = *(rcx); 0x0041ecf6 mov rdi, rcx | rdi = rcx; 0x0041ecf9 mov rsi, rax | rsi = rax; 0x0041ecfc call qword [rdx + 0x10] | rax = uint64_t (*rdx + 0x10)() (); 0x0041ecff mov qword [rbx], rax | *(rbx) = rax; 0x0041ed02 mov ecx, dword [rbx + 0x10] | ecx = *((rbx + 0x10)); 0x0041ed05 dec ecx | ecx--; 0x0041ed07 jmp qword [rcx*8 + 0x45ffa0] | | label_1: 0x0041ed95 mov rax, rsi | rax = rsi; 0x0041ed98 jmp 0x41ecef | | } while (1); | }