; assembly | /* r2dec pseudo code output */ | /* balm_collector.t/none @ 0x40bf90 */ | #include | ; (fcn) method.BloombergLP::bdlcc::FixedQueueIndexManager.FixedQueueIndexManager_unsigned_long__BloombergLP::bslma::Allocator_ () | uint64_t method_BloombergLP::bdlcc::FixedQueueIndexManager_FixedQueueIndexManager_unsigned_long_BloombergLP::bslma::Allocator_ (int64_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlcc::FixedQueueIndexManager::FixedQueueIndexManager(unsigned long, BloombergLP::bslma::Allocator*) */ 0x0040bf90 push r15 | 0x0040bf92 push r14 | 0x0040bf94 push r12 | 0x0040bf96 push rbx | 0x0040bf97 push rax | 0x0040bf98 mov rcx, rdx | rcx = rdx; 0x0040bf9b mov r14, rsi | r14 = rsi; 0x0040bf9e mov rbx, rdi | rbx = rdi; 0x0040bfa1 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0040bfa4 movups xmmword [rdi + 0x70], xmm0 | __asm ("movups xmmword [rdi + 0x70], xmm0"); 0x0040bfa8 movups xmmword [rdi + 0x60], xmm0 | __asm ("movups xmmword [rdi + 0x60], xmm0"); 0x0040bfac movups xmmword [rdi + 0x50], xmm0 | __asm ("movups xmmword [rdi + 0x50], xmm0"); 0x0040bfb0 movups xmmword [rdi + 0x40], xmm0 | __asm ("movups xmmword [rdi + 0x40], xmm0"); 0x0040bfb4 movups xmmword [rdi + 0x30], xmm0 | __asm ("movups xmmword [rdi + 0x30], xmm0"); 0x0040bfb8 movups xmmword [rdi + 0x20], xmm0 | __asm ("movups xmmword [rdi + 0x20], xmm0"); 0x0040bfbc movups xmmword [rdi + 0x10], xmm0 | __asm ("movups xmmword [rdi + 0x10], xmm0"); 0x0040bfc0 movups xmmword [rdi], xmm0 | __asm ("movups xmmword [rdi], xmm0"); 0x0040bfc3 mov qword [rdi + 0x80], rsi | *((rdi + 0x80)) = rsi; 0x0040bfca mov eax, 0x80000000 | eax = 0x80000000; 0x0040bfcf xor edx, edx | edx = 0; 0x0040bfd1 div rsi | rax = rdx:rax / rsi; | rdx = rdx:rax % rsi; 0x0040bfd4 cmp rax, 0x40000000 | 0x0040bfda mov edx, 0x40000000 | edx = 0x40000000; | if (rax < 0x40000000) { 0x0040bfdf cmovb edx, eax | edx = eax; | } 0x0040bfe2 lea eax, [rdx - 1] | eax = rdx - 1; 0x0040bfe5 mov dword [rdi + 0x88], eax | *((rdi + 0x88)) = eax; 0x0040bfeb mov eax, r14d | eax = r14d; 0x0040bfee imul eax, edx | eax *= edx; 0x0040bff1 dec eax | eax--; 0x0040bff3 mov dword [rdi + 0x8c], eax | *((rdi + 0x8c)) = eax; 0x0040bff9 test rcx, rcx | | if (rcx == 0) { 0x0040bffc jne 0x40c012 | 0x0040bffe mov rcx, qword [rip + 0x242ce3] | rcx = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040c005 test rcx, rcx | | if (rcx != 0) { 0x0040c008 jne 0x40c012 | goto label_0; | } 0x0040c00a call 0x40d780 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0040c00f mov rcx, rax | rcx = rax; | } | label_0: 0x0040c012 mov qword [rbx + 0x98], rcx | *((rbx + 0x98)) = rcx; 0x0040c019 lea r15, [r14*4] | r15 = r14*4; 0x0040c021 mov rax, qword [rcx] | rax = *(rcx); 0x0040c024 mov rdi, rcx | rdi = rcx; 0x0040c027 mov rsi, r15 | rsi = r15; 0x0040c02a call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0040c02d mov r12, rax | r12 = rax; 0x0040c030 mov qword [rbx + 0x90], rax | *((rbx + 0x90)) = rax; 0x0040c037 cmp qword [rbx + 0x98], 0 | | if (*((rbx + 0x98)) == 0) { 0x0040c03f jne 0x40c04d | 0x0040c041 mov rax, qword [rip + 0x242ca0] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040c048 test rax, rax | | if (rax == 0) { 0x0040c04b je 0x40c06a | goto label_1; | } | } 0x0040c04d test r14, r14 | | if (r14 == 0) { 0x0040c050 je 0x40c074 | goto label_2; | } | do { 0x0040c052 mov rdi, r12 | rdi = r12; 0x0040c055 xor esi, esi | esi = 0; 0x0040c057 mov rdx, r15 | rdx = r15; 0x0040c05a add rsp, 8 | 0x0040c05e pop rbx | 0x0040c05f pop r12 | 0x0040c061 pop r14 | 0x0040c063 pop r15 | 0x0040c065 jmp 0x403a20 | void (*0x403a20)() (); | label_1: 0x0040c06a call 0x40d780 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0040c06f test r14, r14 | 0x0040c072 jne 0x40c052 | | } while (r14 != 0); | label_2: 0x0040c074 add rsp, 8 | 0x0040c078 pop rbx | 0x0040c079 pop r12 | 0x0040c07b pop r14 | 0x0040c07d pop r15 | 0x0040c07f ret | return rax; | }