; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/assume @ 0x410f80 */ | #include | ; (fcn) method.BloombergLP::bdlt::PackedCalendar.removeHoliday_BloombergLP::bdlt::Date_const_ () | uint64_t method_BloombergLP::bdlt::PackedCalendar_removeHoliday_BloombergLP::bdlt::Date_const_ (int64_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::PackedCalendar::removeHoliday(BloombergLP::bdlt::Date const&) */ 0x00410f80 push rbp | 0x00410f81 push r15 | 0x00410f83 push r14 | 0x00410f85 push r13 | 0x00410f87 push r12 | 0x00410f89 push rbx | 0x00410f8a push rax | 0x00410f8b mov r14, rdi | r14 = rdi; 0x00410f8e mov r15d, dword [rsi] | r15d = *(rsi); 0x00410f91 sub r15d, dword [rdi] | r15d -= *(rdi); 0x00410f94 lea r12, [rdi + 0x28] | r12 = rdi + 0x28; 0x00410f98 mov rbx, qword [rdi + 0x30] | rbx = *((rdi + 0x30)); 0x00410f9c xor r13d, r13d | r13d = 0; 0x00410f9f test rbx, rbx | | if (rbx <= 0) { 0x00410fa2 jle 0x410fde | goto label_1; | } 0x00410fa4 mov rbp, rbx | 0x00410fa7 jmp 0x410fb8 | | while (r15d <= eax) { | label_0: 0x00410fb0 mov rbx, rbp | rbx = rbp; 0x00410fb3 test rbp, rbp | | if (rbp <= 0) { 0x00410fb6 jle 0x410fda | goto label_2; | } 0x00410fb8 shr rbp, 1 | rbp >>= 1; 0x00410fbb lea rsi, [rbp + r13] | rsi = rbp + r13; 0x00410fc0 mov rdi, r12 | 0x00410fc3 call 0x41cdc0 | eax = BloombergLP::bdlc::PackedIntArrayImp::operator [] (unsigned long)const (r12); 0x00410fc8 cmp r15d, eax | 0x00410fcb jle 0x410fb0 | | } 0x00410fcd lea r13, [rbp + r13 + 1] | r13 = rbp + r13 + 1; 0x00410fd2 not rbp | rbp = ~rbp; 0x00410fd5 add rbp, rbx | rbp += rbx; 0x00410fd8 jmp 0x410fb0 | goto label_0; | label_2: 0x00410fda mov rbx, qword [r14 + 0x30] | rbx = *((r14 + 0x30)); | label_1: 0x00410fde cmp r13, rbx | | if (r13 != rbx) { 0x00410fe1 je 0x41101b | 0x00410fe3 mov rdi, r12 | 0x00410fe6 mov rsi, r13 | rsi = r13; 0x00410fe9 call 0x41cdc0 | eax = BloombergLP::bdlc::PackedIntArrayImp::operator [] (unsigned long)const (r12); 0x00410fee cmp r15d, eax | | if (r15d == eax) { 0x00410ff1 jne 0x41101b | 0x00410ff3 movsxd rsi, r13d | rsi = (int64_t) r13d; 0x00410ff6 lea r12, [r14 + 0x50] | r12 = r14 + 0x50; 0x00410ffa mov rdi, r12 | 0x00410ffd call 0x41cdc0 | eax = BloombergLP::bdlc::PackedIntArrayImp::operator [] (unsigned long)const (r12); 0x00411002 movsxd rbx, eax | rbx = (int64_t) eax; 0x00411005 lea r15, [r13 + 1] | r15 = r13 + 1; 0x00411009 cmp r15, qword [r14 + 0x58] | | if (r15 != *((r14 + 0x58))) { 0x0041100d jne 0x41102a | goto label_3; | } 0x0041100f mov rdx, qword [r14 + 0x80] | rdx = *((r14 + 0x80)); 0x00411016 mov rsi, rdx | rsi = *((r14 + 0x80)); 0x00411019 jmp 0x41103f | | } | } else { 0x0041101b add rsp, 8 | 0x0041101f pop rbx | 0x00411020 pop r12 | 0x00411022 pop r13 | 0x00411024 pop r14 | 0x00411026 pop r15 | 0x00411028 pop rbp | 0x00411029 ret | return eax; | label_3: 0x0041102a mov rdi, r12 | 0x0041102d mov rsi, r15 | rsi = r15; 0x00411030 call 0x41cdc0 | eax = BloombergLP::bdlc::PackedIntArrayImp::operator [] (unsigned long)const (r12); 0x00411035 movsxd rsi, eax | rsi = (int64_t) eax; 0x00411038 mov rdx, qword [r14 + 0x80] | | } 0x0041103f mov rbp, rsi | 0x00411042 sub rbp, rbx | rbp -= rbx; 0x00411045 mov rax, rdx | rax = rdx; 0x00411048 sub rax, rbp | rax -= rbp; 0x0041104b mov qword [r14 + 0x80], rax | *((r14 + 0x80)) = rax; 0x00411052 mov rax, qword [r14 + 0x78] | rax = *((r14 + 0x78)); 0x00411056 movsxd rcx, dword [r14 + 0x88] | rcx = *((r14 + 0x88)); 0x0041105d imul rbx, rcx | rbx *= rcx; 0x00411061 add rbx, rax | rbx += rax; 0x00411064 sub rdx, rsi | rdx -= rsi; 0x00411067 imul rsi, rcx | rsi *= rcx; 0x0041106b add rsi, rax | rsi += rax; 0x0041106e imul rdx, rcx | rdx *= rcx; 0x00411072 mov rdi, rbx | 0x00411075 call 0x403910 | memmove (rbx, rsi, *((r14 + 0x80))); 0x0041107a mov rdx, qword [r14 + 0x58] | rdx = *((r14 + 0x58)); 0x0041107e cmp r15, rdx | | if (r15 >= rdx) { 0x00411081 jae 0x4110b7 | goto label_4; | } 0x00411083 mov rbx, r15 | rbx = r15; 0x00411086 nop word cs:[rax + rax] | | do { 0x00411090 mov rdi, r12 | 0x00411093 mov rsi, rbx | rsi = rbx; 0x00411096 call 0x41cdc0 | eax = BloombergLP::bdlc::PackedIntArrayImp::operator [] (unsigned long)const (r12); 0x0041109b sub eax, ebp | eax -= ebp; 0x0041109d movsxd rdx, eax | rdx = (int64_t) eax; 0x004110a0 mov rdi, r12 | 0x004110a3 mov rsi, rbx | 0x004110a6 call 0x41c5c0 | BloombergLP::bdlc::PackedIntArrayImp::replace(unsigned long,long) (r12, rbx, rdx); 0x004110ab inc rbx | rbx++; 0x004110ae mov rdx, qword [r14 + 0x58] | rdx = *((r14 + 0x58)); 0x004110b2 cmp rbx, rdx | 0x004110b5 jb 0x411090 | | } while (rbx < rdx); | label_4: 0x004110b7 dec rdx | rdx--; 0x004110ba mov qword [r14 + 0x58], rdx | *((r14 + 0x58)) = rdx; 0x004110be mov rax, qword [r14 + 0x50] | rax = *((r14 + 0x50)); 0x004110c2 movsxd rcx, dword [r14 + 0x60] | rcx = *((r14 + 0x60)); 0x004110c6 mov rdi, r13 | 0x004110c9 imul rdi, rcx | rdi *= rcx; 0x004110cd add rdi, rax | rdi += rax; 0x004110d0 mov rsi, r15 | 0x004110d3 imul rsi, rcx | rsi *= rcx; 0x004110d7 add rsi, rax | rsi += rax; 0x004110da sub rdx, r13 | rdx -= r13; 0x004110dd imul rdx, rcx | rdx *= rcx; 0x004110e1 call 0x403910 | memmove (r13, r15, rdx); 0x004110e6 mov rax, qword [r14 + 0x28] | rax = *((r14 + 0x28)); 0x004110ea mov rdx, qword [r14 + 0x30] | rdx = *((r14 + 0x30)); 0x004110ee dec rdx | rdx--; 0x004110f1 mov qword [r14 + 0x30], rdx | *((r14 + 0x30)) = rdx; 0x004110f5 movsxd rcx, dword [r14 + 0x38] | rcx = *((r14 + 0x38)); 0x004110f9 sub rdx, r13 | rdx -= r13; 0x004110fc imul r13, rcx | r13 *= rcx; 0x00411100 add r13, rax | r13 += rax; 0x00411103 imul r15, rcx | r15 *= rcx; 0x00411107 add r15, rax | r15 += rax; 0x0041110a imul rdx, rcx | rdx *= rcx; 0x0041110e mov rdi, r13 | rdi = r13; 0x00411111 mov rsi, r15 | rsi = r15; 0x00411114 add rsp, 8 | 0x00411118 pop rbx | 0x00411119 pop r12 | 0x0041111b pop r13 | 0x0041111d pop r14 | 0x0041111f pop r15 | 0x00411121 pop rbp | 0x00411122 jmp 0x403910 | return memmove (); | }