; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/none @ 0x41efc0 */ | #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*) */ 0x0041efc0 push r14 | 0x0041efc2 push rbx | 0x0041efc3 push rax | 0x0041efc4 mov r14, rdx | r14 = rdx; 0x0041efc7 mov rbx, rdi | rbx = rdi; 0x0041efca mov qword [rdi], 0 | *(rdi) = 0; 0x0041efd1 mov qword [rdi + 8], rsi | *((rdi + 8)) = rsi; 0x0041efd5 mov dword [rdi + 0x10], 1 | *((rdi + 0x10)) = 1; 0x0041efdc mov qword [rdi + 0x18], 0 | *((rdi + 0x18)) = 0; 0x0041efe4 test rcx, rcx | | if (rcx == 0) { 0x0041efe7 jne 0x41f001 | 0x0041efe9 mov rcx, qword [rip + 0x25dea8] | rcx = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041eff0 test rcx, rcx | | if (rcx != 0) { 0x0041eff3 jne 0x41f001 | goto label_1; | } 0x0041eff5 call 0x4218f0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0041effa mov rcx, rax | rcx = rax; 0x0041effd mov rsi, qword [rbx + 8] | rsi = *((rbx + 8)); | } | label_1: 0x0041f001 mov qword [rbx + 0x20], rcx | *((rbx + 0x20)) = rcx; 0x0041f005 test rsi, rsi | | if (rsi == 0) { 0x0041f008 je 0x41f10d | goto label_2; | } 0x0041f00e xor eax, eax | eax = 0; 0x0041f010 mov rdx, r14 | rdx = r14; 0x0041f013 shr rdx, 0x20 | rdx >>= 0x20; 0x0041f017 setne al | al = (rdx != 0) ? 1 : 0; 0x0041f01a xor edx, edx | edx = 0; 0x0041f01c cmp r14, 0xff | 0x0041f023 seta dl | dl = (r14 > 0xff) ? 1 : 0; 0x0041f026 inc edx | edx++; 0x0041f028 cmp r14, 0xffff | 0x0041f02f lea eax, [rax*4 + 4] | eax = rax*4 + 4; | if (r14 <= 0xffff) { 0x0041f036 cmovbe eax, edx | eax = edx; | } 0x0041f039 mov dword [rbx + 0x10], eax | *((rbx + 0x10)) = eax; 0x0041f03c imul rsi, rax | rsi *= rax; 0x0041f040 cmp rsi, 0x55555550 | | if (rsi > 0x55555550) { 0x0041f047 ja 0x41f115 | goto label_3; | } 0x0041f04d xor eax, eax | eax = 0; 0x0041f04f test rsi, rsi | | if (rsi == 0) { 0x0041f052 je 0x41f06f | goto label_0; | } 0x0041f054 nop word cs:[rax + rax] | 0x0041f05e nop | | do { 0x0041f060 lea rdx, [rax + 3] | rdx = rax + 3; 0x0041f064 shr rdx, 1 | rdx >>= 1; 0x0041f067 add rax, rdx | rax += rdx; 0x0041f06a cmp rax, rsi | 0x0041f06d jb 0x41f060 | | } while (rax < rsi); | label_0: 0x0041f06f mov qword [rbx + 0x18], rax | *((rbx + 0x18)) = rax; 0x0041f073 mov rdx, qword [rcx] | rdx = *(rcx); 0x0041f076 mov rdi, rcx | rdi = rcx; 0x0041f079 mov rsi, rax | rsi = rax; 0x0041f07c call qword [rdx + 0x10] | rax = uint64_t (*rdx + 0x10)() (); 0x0041f07f mov qword [rbx], rax | *(rbx) = rax; 0x0041f082 mov ecx, dword [rbx + 0x10] | ecx = *((rbx + 0x10)); 0x0041f085 dec ecx | ecx--; 0x0041f087 cmp ecx, 7 | | if (ecx > 7) { 0x0041f08a ja 0x41f10d | goto label_2; | } | /* switch table (8 cases) at 0x4605b0 */ 0x0041f090 jmp qword [rcx*8 + 0x4605b0] | 0x0041f097 cmp qword [rbx + 8], 0 | | if (*((rbx + 8)) == 0) { 0x0041f09c je 0x41f10d | goto label_2; | } 0x0041f09e xor ecx, ecx | ecx = 0; | do { 0x0041f0a0 mov byte [rax + rcx], r14b | *((rax + rcx)) = r14b; 0x0041f0a4 inc rcx | rcx++; 0x0041f0a7 cmp rcx, qword [rbx + 8] | 0x0041f0ab jb 0x41f0a0 | | } while (rcx < *((rbx + 8))); 0x0041f0ad jmp 0x41f10d | goto label_2; 0x0041f0af cmp qword [rbx + 8], 0 | | if (*((rbx + 8)) == 0) { 0x0041f0b4 je 0x41f10d | goto label_2; | } 0x0041f0b6 xor ecx, ecx | ecx = 0; 0x0041f0b8 nop dword [rax + rax] | | do { 0x0041f0c0 mov word [rax + rcx*2], r14w | *((rax + rcx*2)) = r14w; 0x0041f0c5 inc rcx | rcx++; 0x0041f0c8 cmp rcx, qword [rbx + 8] | 0x0041f0cc jb 0x41f0c0 | | } while (rcx < *((rbx + 8))); 0x0041f0ce jmp 0x41f10d | goto label_2; 0x0041f0d0 cmp qword [rbx + 8], 0 | | if (*((rbx + 8)) == 0) { 0x0041f0d5 je 0x41f10d | goto label_2; | } 0x0041f0d7 xor ecx, ecx | ecx = 0; 0x0041f0d9 nop dword [rax] | | do { 0x0041f0e0 mov dword [rax + rcx*4], r14d | *((rax + rcx*4)) = r14d; 0x0041f0e4 inc rcx | rcx++; 0x0041f0e7 cmp rcx, qword [rbx + 8] | 0x0041f0eb jb 0x41f0e0 | | } while (rcx < *((rbx + 8))); 0x0041f0ed jmp 0x41f10d | goto label_2; 0x0041f0ef cmp qword [rbx + 8], 0 | | if (*((rbx + 8)) == 0) { 0x0041f0f4 je 0x41f10d | goto label_2; | } 0x0041f0f6 xor ecx, ecx | ecx = 0; 0x0041f0f8 nop dword [rax + rax] | | do { 0x0041f100 mov qword [rax + rcx*8], r14 | *((rax + rcx*8)) = r14; 0x0041f104 inc rcx | rcx++; 0x0041f107 cmp rcx, qword [rbx + 8] | 0x0041f10b jb 0x41f100 | | } while (rcx < *((rbx + 8))); | label_2: 0x0041f10d add rsp, 8 | 0x0041f111 pop rbx | 0x0041f112 pop r14 | 0x0041f114 ret | return rax; | label_3: 0x0041f115 mov rax, rsi | rax = rsi; 0x0041f118 jmp 0x41f06f | goto label_0; | }