; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/assume @ 0x4106b0 */ | #include | ; (fcn) method.BloombergLP::bdlt::PackedCalendar.addWeekendDaysTransition_BloombergLP::bdlt::Date_const__BloombergLP::bdlt::DayOfWeekSet_const_ () | void method_BloombergLP::bdlt::PackedCalendar_addWeekendDaysTransition_BloombergLP::bdlt::Date_const_BloombergLP::bdlt::DayOfWeekSet_const_ (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_4h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::PackedCalendar::addWeekendDaysTransition(BloombergLP::bdlt::Date const&, BloombergLP::bdlt::DayOfWeekSet const&) */ 0x004106b0 push rax | 0x004106b1 mov r10d, dword [rsi] | r10d = *(rsi); 0x004106b4 mov dword [rsp], r10d | *(rsp) = r10d; 0x004106b8 mov r8b, byte [rdx] | r8b = *(rdx); 0x004106bb mov byte [rsp + 4], r8b | *((rsp + 4)) = r8b; 0x004106c0 mov rsi, qword [rdi + 8] | rsi = *((rdi + 8)); 0x004106c4 mov r9, qword [rdi + 0x10] | r9 = *((rdi + 0x10)); 0x004106c8 mov rcx, r9 | rcx = *((rdi + 0x10)); 0x004106cb sub rcx, rsi | rcx -= rsi; | if (rcx == 0) { 0x004106ce je 0x410708 | goto label_0; | } 0x004106d0 sar rcx, 3 | rcx >>= 3; 0x004106d4 nop word cs:[rax + rax] | 0x004106de nop | | do { 0x004106e0 mov rdx, rcx | rdx = rcx; 0x004106e3 shr rdx, 1 | rdx >>= 1; 0x004106e6 mov rax, rdx | rax = rdx; 0x004106e9 not rax | rax = ~rax; 0x004106ec add rax, rcx | rax += rcx; 0x004106ef cmp dword [rsi + rdx*8], r10d | | if (*((rsi + rdx*8)) >= r10d) { 0x004106f3 cmovge rax, rdx | rax = rdx; | } 0x004106f7 lea rcx, [rsi + rdx*8 + 8] | rcx = rsi + rdx*8 + 8; | if (*((rsi + rdx*8)) < r10d) { 0x004106fc cmovl rsi, rcx | rsi = rcx; | } 0x00410700 mov rcx, rax | rcx = rax; 0x00410703 test rax, rax | 0x00410706 jne 0x4106e0 | | } while (rax != 0); | label_0: 0x00410708 cmp rsi, r9 | | if (rsi != r9) { 0x0041070b je 0x410718 | 0x0041070d cmp dword [rsi], r10d | | if (*(rsi) != r10d) { 0x00410710 jne 0x410718 | goto label_1; | } 0x00410712 mov byte [rsi + 4], r8b | *((rsi + 4)) = r8b; 0x00410716 pop rax | 0x00410717 ret | return; | } | label_1: 0x00410718 add rdi, 8 | rdi += 8; 0x0041071c mov rcx, rsp | 0x0041071f mov edx, 1 | 0x00410724 call 0x4133c0 | bsl::vector,bsl::allocator>>::insert(bsl::pairconst*,unsigned long,bsl::pairconst&) (rdi, rsi, 1, rsp); 0x00410729 pop rax | 0x0041072a ret | | }