; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/none @ 0x410e50 */ | #include | ; (fcn) method.BloombergLP::bdlt.intersectWeekendDaysTransitions_bsl::vector_bsl::pair_BloombergLP::bdlt::Date__BloombergLP::bdlt::DayOfWeekSet___bsl::allocator_bsl::pair_BloombergLP::bdlt::Date__BloombergLP::bdlt::DayOfWeekSet_______bsl::vector_bsl::pair_Bloom () | int64_t method_BloombergLP::bdlt_intersectWeekendDaysTransitions_bsl::vector_bsl::pair_BloombergLP::bdlt::Date_BloombergLP::bdlt::DayOfWeekSet_bsl::allocator_bsl::pair_BloombergLP::bdlt::Date_BloombergLP::bdlt::DayOfWeekSet_bsl::vector_bsl::pair_Bloom (uint32_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_ch; | int64_t var_10h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::intersectWeekendDaysTransitions(bsl::vector, bsl::allocator > >*, bsl::vector, bsl::allocator > > const&, bsl::vector, bsl::allocator > > const&) */ 0x00410e50 push rbp | 0x00410e51 push r15 | 0x00410e53 push r14 | 0x00410e55 push r13 | 0x00410e57 push r12 | 0x00410e59 push rbx | 0x00410e5a sub rsp, 0x18 | 0x00410e5e mov rbx, qword [rsi] | rbx = *(rsi); 0x00410e61 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x00410e66 mov rax, qword [rsi + 8] | rax = *((rsi + 8)); 0x00410e6a cmp rax, rbx | | if (rax == rbx) { 0x00410e6d je 0x410f3d | goto label_3; | } 0x00410e73 mov r15, rdx | r15 = rdx; 0x00410e76 mov rbp, qword [rdx] | rbp = *(rdx); 0x00410e79 cmp qword [rdx + 8], rbp | | if (*((rdx + 8)) == rbp) { 0x00410e7d je 0x410f3d | goto label_3; | } 0x00410e83 mov r13, rdi | r13 = rdi; 0x00410e86 xor r14d, r14d | r14d = 0; 0x00410e89 xor r12d, r12d | r12d = 0; 0x00410e8c jmp 0x410eaa | | while (rdx == *(r13)) { 0x00410e90 test cl, cl | | if (cl != 0) { 0x00410e92 je 0x410eaa | | label_1: 0x00410e94 mov rdi, r13 | 0x00410e97 lea rsi, [rsp + 8] | 0x00410e9c call 0x412f90 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (r13, rsp + 8); 0x00410ea1 mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x00410ea6 mov rax, qword [rax + 8] | rax = *((rax + 8)); | } | label_0: 0x00410eaa cmp rbx, rax | | if (rbx != rax) { 0x00410ead je 0x410ee0 | 0x00410eaf mov dword [rsp + 8], 1 | *((rsp + 8)) = 1; 0x00410eb7 mov byte [rsp + 0xc], 0 | *((rsp + 0xc)) = 0; 0x00410ebc mov ecx, dword [rbx] | ecx = *(rbx); 0x00410ebe cmp rbp, qword [r15 + 8] | | if (rbp != *((r15 + 8))) { 0x00410ec2 je 0x410ecb | 0x00410ec4 mov edx, dword [rbp] | edx = *(rbp); 0x00410ec7 cmp ecx, edx | | if (ecx >= edx) { 0x00410ec9 jge 0x410ef8 | goto label_4; | } | } 0x00410ecb mov dword [rsp + 8], ecx | *((rsp + 8)) = ecx; 0x00410ecf movzx r12d, byte [rbx + 4] | r12d = *((rbx + 4)); 0x00410ed4 add rbx, 8 | rbx += 8; 0x00410ed8 jmp 0x410f07 | | } else { 0x00410ee0 cmp rbp, qword [r15 + 8] | | if (rbp == *((r15 + 8))) { 0x00410ee4 je 0x410f3d | goto label_3; | } 0x00410ee6 mov dword [rsp + 8], 1 | *((rsp + 8)) = 1; 0x00410eee mov byte [rsp + 0xc], 0 | *((rsp + 0xc)) = 0; 0x00410ef3 mov edx, dword [rbp] | edx = *(rbp); 0x00410ef6 jmp 0x410efa | goto label_5; | if (rbp <= *((r15 + 8))) { | label_4: 0x00410ef8 jle 0x410f29 | goto label_6; | } | label_5: 0x00410efa mov dword [rsp + 8], edx | *((rsp + 8)) = edx; 0x00410efe movzx r14d, byte [rbp + 4] | r14d = *((rbp + 4)); | label_2: 0x00410f03 add rbp, 8 | rbp += 8; | } 0x00410f07 mov ecx, r12d | ecx = r12d; 0x00410f0a and cl, r14b | cl &= r14b; 0x00410f0d mov byte [rsp + 0xc], cl | *((rsp + 0xc)) = cl; 0x00410f11 mov rdx, qword [r13 + 8] | rdx = *((r13 + 8)); 0x00410f15 cmp rdx, qword [r13] | 0x00410f19 je 0x410e90 | | } 0x00410f1f cmp cl, byte [rdx - 4] | | if (cl == *((rdx - 4))) { 0x00410f22 je 0x410eaa | goto label_0; | } 0x00410f24 jmp 0x410e94 | goto label_1; | label_6: 0x00410f29 mov dword [rsp + 8], ecx | *((rsp + 8)) = ecx; 0x00410f2d movzx r12d, byte [rbx + 4] | r12d = *((rbx + 4)); 0x00410f32 movzx r14d, byte [rbp + 4] | r14d = *((rbp + 4)); 0x00410f37 add rbx, 8 | rbx += 8; 0x00410f3b jmp 0x410f03 | goto label_2; | label_3: 0x00410f3d add rsp, 0x18 | 0x00410f41 pop rbx | 0x00410f42 pop r12 | 0x00410f44 pop r13 | 0x00410f46 pop r14 | 0x00410f48 pop r15 | 0x00410f4a pop rbp | 0x00410f4b ret | return rax; | }