; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/assume @ 0x410df0 */ | #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&) */ 0x00410df0 push rbp | 0x00410df1 push r15 | 0x00410df3 push r14 | 0x00410df5 push r13 | 0x00410df7 push r12 | 0x00410df9 push rbx | 0x00410dfa sub rsp, 0x18 | 0x00410dfe mov rbx, qword [rsi] | rbx = *(rsi); 0x00410e01 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x00410e06 mov rax, qword [rsi + 8] | rax = *((rsi + 8)); 0x00410e0a cmp rax, rbx | | if (rax == rbx) { 0x00410e0d je 0x410ee7 | goto label_2; | } 0x00410e13 mov r15, rdx | r15 = rdx; 0x00410e16 mov rbp, qword [rdx] | rbp = *(rdx); 0x00410e19 cmp qword [rdx + 8], rbp | | if (*((rdx + 8)) == rbp) { 0x00410e1d je 0x410ee7 | goto label_2; | } 0x00410e23 mov r13, rdi | r13 = rdi; 0x00410e26 xor r14d, r14d | r14d = 0; 0x00410e29 xor r12d, r12d | r12d = 0; 0x00410e2c nop dword [rax] | | do { | label_0: 0x00410e30 cmp rbx, rax | | if (rbx != rax) { 0x00410e33 je 0x410e60 | 0x00410e35 mov dword [rsp + 8], 1 | *((rsp + 8)) = 1; 0x00410e3d mov byte [rsp + 0xc], 0 | *((rsp + 0xc)) = 0; 0x00410e42 mov ecx, dword [rbx] | ecx = *(rbx); 0x00410e44 cmp rbp, qword [r15 + 8] | | if (rbp != *((r15 + 8))) { 0x00410e48 je 0x410e51 | 0x00410e4a mov edx, dword [rbp] | edx = *(rbp); 0x00410e4d cmp ecx, edx | | if (ecx >= edx) { 0x00410e4f jge 0x410e7c | goto label_3; | } | } 0x00410e51 mov dword [rsp + 8], ecx | *((rsp + 8)) = ecx; 0x00410e55 movzx r12d, byte [rbx + 4] | r12d = *((rbx + 4)); 0x00410e5a add rbx, 8 | rbx += 8; 0x00410e5e jmp 0x410e8b | | } else { 0x00410e60 cmp rbp, qword [r15 + 8] | | if (rbp == *((r15 + 8))) { 0x00410e64 je 0x410ee7 | goto label_2; | } 0x00410e6a mov dword [rsp + 8], 1 | *((rsp + 8)) = 1; 0x00410e72 mov byte [rsp + 0xc], 0 | *((rsp + 0xc)) = 0; 0x00410e77 mov edx, dword [rbp] | edx = *(rbp); 0x00410e7a jmp 0x410e7e | goto label_4; | if (rbp <= *((r15 + 8))) { | label_3: 0x00410e7c jle 0x410ed3 | goto label_5; | } | label_4: 0x00410e7e mov dword [rsp + 8], edx | *((rsp + 8)) = edx; 0x00410e82 movzx r14d, byte [rbp + 4] | r14d = *((rbp + 4)); | label_1: 0x00410e87 add rbp, 8 | rbp += 8; | } 0x00410e8b mov ecx, r12d | ecx = r12d; 0x00410e8e and cl, r14b | cl &= r14b; 0x00410e91 mov byte [rsp + 0xc], cl | *((rsp + 0xc)) = cl; 0x00410e95 mov rdx, qword [r13 + 8] | rdx = *((r13 + 8)); 0x00410e99 cmp rdx, qword [r13] | | if (rdx == *(r13)) { 0x00410e9d je 0x410eb0 | goto label_6; | } 0x00410e9f cmp cl, byte [rdx - 4] | 0x00410ea2 je 0x410e30 | | } while (cl == *((rdx - 4))); 0x00410ea4 jmp 0x410eb8 | goto label_7; | label_6: 0x00410eb0 test cl, cl | | if (cl == 0) { 0x00410eb2 je 0x410e30 | goto label_0; | } | label_7: 0x00410eb8 mov rdi, r13 | 0x00410ebb lea rsi, [rsp + 8] | 0x00410ec0 call 0x412f10 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (r13, rsp + 8); 0x00410ec5 mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x00410eca mov rax, qword [rax + 8] | rax = *((rax + 8)); 0x00410ece jmp 0x410e30 | goto label_0; | label_5: 0x00410ed3 mov dword [rsp + 8], ecx | *((rsp + 8)) = ecx; 0x00410ed7 movzx r12d, byte [rbx + 4] | r12d = *((rbx + 4)); 0x00410edc movzx r14d, byte [rbp + 4] | r14d = *((rbp + 4)); 0x00410ee1 add rbx, 8 | rbx += 8; 0x00410ee5 jmp 0x410e87 | goto label_1; | label_2: 0x00410ee7 add rsp, 0x18 | 0x00410eeb pop rbx | 0x00410eec pop r12 | 0x00410eee pop r13 | 0x00410ef0 pop r14 | 0x00410ef2 pop r15 | 0x00410ef4 pop rbp | 0x00410ef5 ret | return rax; | }