; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/assume @ 0x410960 */ | #include | ; (fcn) method.BloombergLP::bdlt.unionWeekendDaysTransitions_bsl::vector_bsl::pair_BloombergLP::bdlt::Date__BloombergLP::bdlt::DayOfWeekSet___bsl::allocator_bsl::pair_BloombergLP::bdlt::Date__BloombergLP::bdlt::DayOfWeekSet_______bsl::vector_bsl::pair_Bloomberg () | int64_t method_BloombergLP::bdlt_unionWeekendDaysTransitions_bsl::vector_bsl::pair_BloombergLP::bdlt::Date_BloombergLP::bdlt::DayOfWeekSet_bsl::allocator_bsl::pair_BloombergLP::bdlt::Date_BloombergLP::bdlt::DayOfWeekSet_bsl::vector_bsl::pair_Bloomberg (int64_t arg3, uint32_t arg2, uint32_t arg1) { | int64_t var_8h; | int64_t var_ch; | uint32_t var_10h; | uint32_t var_18h; | int64_t var_20h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::unionWeekendDaysTransitions(bsl::vector, bsl::allocator > >*, bsl::vector, bsl::allocator > > const&, bsl::vector, bsl::allocator > > const&) */ 0x00410960 push rbp | 0x00410961 push r15 | 0x00410963 push r14 | 0x00410965 push r13 | 0x00410967 push r12 | 0x00410969 push rbx | 0x0041096a sub rsp, 0x28 | 0x0041096e mov rbp, rdx | 0x00410971 mov r12, qword [rsi] | r12 = *(rsi); 0x00410974 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00410979 mov rcx, qword [rsi + 8] | rcx = *((rsi + 8)); 0x0041097d cmp rcx, r12 | | if (rcx == r12) { 0x00410980 je 0x410b3e | goto label_0; | } 0x00410986 mov r14, qword [rbp] | r14 = *(rbp); 0x0041098a mov rax, qword [rbp + 8] | rax = *((rbp + 8)); 0x0041098e cmp rax, r14 | | if (rax == r14) { 0x00410991 je 0x410b5f | goto label_1; | } 0x00410997 mov qword [rsp + 0x20], rbp | *((rsp + 0x20)) = rbp; 0x0041099c mov qword [rsp + 0x10], rdi | *((rsp + 0x10)) = rdi; 0x004109a1 mov r15, rax | r15 = rax; 0x004109a4 mov r13, rcx | r13 = rcx; 0x004109a7 nop word [rax + rax] | | do { 0x004109b0 mov edx, dword [r12] | edx = *(r12); 0x004109b4 mov esi, dword [r14] | esi = *(r14); 0x004109b7 cmp edx, esi | | if (edx < esi) { 0x004109b9 jge 0x4109f0 | 0x004109bb cmp r15, rax | | if (r15 != rax) { 0x004109be je 0x410a53 | 0x004109c4 mov dword [rsp + 8], edx | *((rsp + 8)) = edx; 0x004109c8 movzx eax, byte [r12 + 4] | eax = *((r12 + 4)); 0x004109ce mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x004109d2 or al, byte [r15 + 4] | al |= *((r15 + 4)); 0x004109d6 mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x004109da mov rdi, qword [rsp + 0x10] | 0x004109df lea rsi, [rsp + 8] | 0x004109e4 call 0x412f10 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (*((rsp + 0x10)), rsp + 8); 0x004109e9 jmp 0x410a60 | | } else { 0x004109f0 cmp esi, edx | | if (esi < edx) { 0x004109f2 jge 0x410a20 | 0x004109f4 cmp r13, rcx | 0x004109f7 mov rdi, qword [rsp + 0x10] | rdi = *((rsp + 0x10)); | if (r13 == rcx) { 0x004109fc je 0x410a6d | goto label_2; | } 0x004109fe mov dword [rsp + 8], esi | *((rsp + 8)) = esi; 0x00410a02 movzx eax, byte [r14 + 4] | eax = *((r14 + 4)); 0x00410a07 mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410a0b or al, byte [r13 + 4] | al |= *((r13 + 4)); 0x00410a0f mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410a13 lea rsi, [rsp + 8] | 0x00410a18 call 0x412f10 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (rdi, rsp + 8); 0x00410a1d jmp 0x410a75 | goto label_3; | } 0x00410a20 mov dword [rsp + 8], edx | *((rsp + 8)) = edx; 0x00410a24 movzx eax, byte [r12 + 4] | eax = *((r12 + 4)); 0x00410a2a mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410a2e or al, byte [r14 + 4] | al |= *((r14 + 4)); 0x00410a32 mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410a36 mov rdi, qword [rsp + 0x10] | 0x00410a3b lea rsi, [rsp + 8] | 0x00410a40 call 0x412f10 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (*((rsp + 0x10)), rsp + 8); 0x00410a45 lea rbx, [r12 + 8] | rbx = r12 + 8; 0x00410a4a lea rbp, [r14 + 8] | rbp = r14 + 8; 0x00410a4e mov r13, r12 | r13 = r12; 0x00410a51 jmp 0x410a7c | goto label_4; | } 0x00410a53 mov rdi, qword [rsp + 0x10] | 0x00410a58 mov rsi, r12 | 0x00410a5b call 0x412f10 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (*((rsp + 0x10)), r12); | } 0x00410a60 lea rbx, [r12 + 8] | rbx = r12 + 8; 0x00410a65 mov rbp, r14 | 0x00410a68 mov r13, r12 | r13 = r12; 0x00410a6b jmp 0x410a7f | goto label_5; | label_2: 0x00410a6d mov rsi, r14 | 0x00410a70 call 0x412f10 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (rdi, r14); | label_3: 0x00410a75 lea rbp, [r14 + 8] | rbp = r14 + 8; 0x00410a79 mov rbx, r12 | rbx = r12; | label_4: 0x00410a7c mov r15, r14 | r15 = r14; | label_5: 0x00410a7f mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x00410a84 mov rcx, qword [rax + 8] | rcx = *((rax + 8)); 0x00410a88 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x00410a8d mov rax, qword [rax + 8] | rax = *((rax + 8)); 0x00410a91 cmp rbx, rcx | | if (rbx == rcx) { 0x00410a94 je 0x410aa5 | goto label_6; | } 0x00410a96 mov r14, rbp | r14 = rbp; 0x00410a99 mov r12, rbx | r12 = rbx; 0x00410a9c cmp rbp, rax | 0x00410a9f jne 0x4109b0 | | } while (rbp != rax); | label_6: 0x00410aa5 cmp rbx, rcx | | if (rbx == rcx) { 0x00410aa8 je 0x410aeb | goto label_7; | } 0x00410aaa lea r14, [rsp + 8] | r14 = rsp + 8; 0x00410aaf nop | | do { 0x00410ab0 mov eax, dword [rbx] | eax = *(rbx); 0x00410ab2 mov dword [rsp + 8], eax | *((rsp + 8)) = eax; 0x00410ab6 movzx eax, byte [rbx + 4] | eax = *((rbx + 4)); 0x00410aba mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410abe or al, byte [r15 + 4] | al |= *((r15 + 4)); 0x00410ac2 mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410ac6 mov rdi, qword [rsp + 0x10] | 0x00410acb mov rsi, r14 | 0x00410ace call 0x412f10 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (*((rsp + 0x10)), r14); 0x00410ad3 add rbx, 8 | rbx += 8; 0x00410ad7 mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x00410adc cmp rbx, qword [rax + 8] | 0x00410ae0 jne 0x410ab0 | | } while (rbx != *((rax + 8))); 0x00410ae2 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x00410ae7 mov rax, qword [rax + 8] | rax = *((rax + 8)); | label_7: 0x00410aeb cmp rbp, rax | 0x00410aee mov r15, qword [rsp + 0x10] | r15 = *((rsp + 0x10)); 0x00410af3 mov rbx, qword [rsp + 0x20] | rbx = *((rsp + 0x20)); | if (rbp == rax) { 0x00410af8 je 0x410b8c | goto label_8; | } 0x00410afe lea r14, [rsp + 8] | r14 = rsp + 8; 0x00410b03 nop word cs:[rax + rax] | 0x00410b0d nop dword [rax] | | do { 0x00410b10 mov eax, dword [rbp] | eax = *(rbp); 0x00410b13 mov dword [rsp + 8], eax | *((rsp + 8)) = eax; 0x00410b17 movzx eax, byte [rbp + 4] | eax = *((rbp + 4)); 0x00410b1b mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410b1f or al, byte [r13 + 4] | al |= *((r13 + 4)); 0x00410b23 mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410b27 mov rdi, r15 | 0x00410b2a mov rsi, r14 | 0x00410b2d call 0x412f10 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (r15, r14); 0x00410b32 add rbp, 8 | rbp += 8; 0x00410b36 cmp rbp, qword [rbx + 8] | 0x00410b3a jne 0x410b10 | | } while (rbp != *((rbx + 8))); 0x00410b3c jmp 0x410b8c | goto label_8; | label_0: 0x00410b3e cmp rdi, rbp | | if (rdi != rbp) { 0x00410b41 je 0x410b8c | 0x00410b43 mov rsi, qword [rdi] | rsi = *(rdi); 0x00410b46 cmp qword [rdi + 8], rsi | | if (*((rdi + 8)) != rsi) { 0x00410b4a je 0x410b50 | 0x00410b4c mov qword [rdi + 8], rsi | *((rdi + 8)) = rsi; | } 0x00410b50 mov rdx, qword [rbp] | rdx = *(rbp); 0x00410b54 mov rcx, qword [rbp + 8] | rcx = *((rbp + 8)); 0x00410b58 lea r8, [rsp + 8] | r8 = rsp + 8; 0x00410b5d jmp 0x410b87 | goto label_9; | label_1: 0x00410b5f cmp rdi, qword [rsp + 0x18] | | if (rdi == *((rsp + 0x18))) { 0x00410b64 je 0x410b8c | goto label_8; | } 0x00410b66 mov rsi, qword [rdi] | rsi = *(rdi); 0x00410b69 cmp qword [rdi + 8], rsi | | if (*((rdi + 8)) != rsi) { 0x00410b6d je 0x410b7f | 0x00410b6f mov qword [rdi + 8], rsi | *((rdi + 8)) = rsi; 0x00410b73 mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x00410b78 mov r12, qword [rax] | r12 = *(rax); 0x00410b7b mov rcx, qword [rax + 8] | | } 0x00410b7f lea r8, [rsp + 8] | r8 = rsp + 8; 0x00410b84 mov rdx, r12 | | label_9: 0x00410b87 call 0x413030 | voidbsl::vector,bsl::allocator>>::privateInsertconst*>(bsl::pairconst*,bsl::pairconst*,bsl::pairconst*,std::_1::forward_iterator_tagconst&) (rdi, rsi, r12, *((rax + 8))); | } | label_8: 0x00410b8c add rsp, 0x28 | 0x00410b90 pop rbx | 0x00410b91 pop r12 | 0x00410b93 pop r13 | 0x00410b95 pop r14 | 0x00410b97 pop r15 | 0x00410b99 pop rbp | 0x00410b9a ret | return rax; | }