; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/none @ 0x4109e0 */ | #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, int64_t arg2, uint32_t arg1) { | int64_t var_8h; | int64_t var_ch; | uint32_t var_10h; | int64_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&) */ 0x004109e0 push rbp | 0x004109e1 push r15 | 0x004109e3 push r14 | 0x004109e5 push r13 | 0x004109e7 push r12 | 0x004109e9 push rbx | 0x004109ea sub rsp, 0x28 | 0x004109ee mov rbp, rdx | 0x004109f1 mov r12, qword [rsi] | r12 = *(rsi); 0x004109f4 mov rcx, qword [rsi + 8] | rcx = *((rsi + 8)); 0x004109f8 cmp rcx, r12 | | if (rcx == r12) { 0x004109fb je 0x410bce | goto label_0; | } 0x00410a01 mov rdx, rsi | rdx = rsi; 0x00410a04 mov r14, qword [rbp] | r14 = *(rbp); 0x00410a08 mov rax, qword [rbp + 8] | rax = *((rbp + 8)); 0x00410a0c cmp rax, r14 | | if (rax == r14) { 0x00410a0f je 0x410bef | goto label_1; | } 0x00410a15 mov qword [rsp + 0x20], rbp | *((rsp + 0x20)) = rbp; 0x00410a1a mov qword [rsp + 0x10], rdi | *((rsp + 0x10)) = rdi; 0x00410a1f mov r15, rax | r15 = rax; 0x00410a22 mov r13, rcx | r13 = rcx; 0x00410a25 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x00410a2a nop word [rax + rax] | | do { 0x00410a30 mov edx, dword [r12] | edx = *(r12); 0x00410a34 mov esi, dword [r14] | esi = *(r14); 0x00410a37 cmp edx, esi | | if (edx < esi) { 0x00410a39 jge 0x410a70 | 0x00410a3b cmp r15, rax | | if (r15 != rax) { 0x00410a3e je 0x410adb | 0x00410a44 mov dword [rsp + 8], edx | *((rsp + 8)) = edx; 0x00410a48 movzx eax, byte [r12 + 4] | eax = *((r12 + 4)); 0x00410a4e mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410a52 or al, byte [r15 + 4] | al |= *((r15 + 4)); 0x00410a56 mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410a5a mov rdi, qword [rsp + 0x10] | rdi = *((rsp + 0x10)); 0x00410a5f lea rsi, [rsp + 8] | rsi = rsp + 8; 0x00410a64 jmp 0x410ae3 | | } else { 0x00410a70 cmp esi, edx | | if (esi < edx) { 0x00410a72 jge 0x410aa0 | 0x00410a74 cmp r13, rcx | | if (r13 == rcx) { 0x00410a77 je 0x410af5 | goto label_2; | } 0x00410a79 mov dword [rsp + 8], esi | *((rsp + 8)) = esi; 0x00410a7d movzx eax, byte [r14 + 4] | eax = *((r14 + 4)); 0x00410a82 mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410a86 or al, byte [r13 + 4] | al |= *((r13 + 4)); 0x00410a8a mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410a8e mov rdi, qword [rsp + 0x10] | rdi = *((rsp + 0x10)); 0x00410a93 lea rsi, [rsp + 8] | rsi = rsp + 8; 0x00410a98 jmp 0x410afd | goto label_3; | } 0x00410aa0 mov dword [rsp + 8], edx | *((rsp + 8)) = edx; 0x00410aa4 movzx eax, byte [r12 + 4] | eax = *((r12 + 4)); 0x00410aaa mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410aae or al, byte [r14 + 4] | al |= *((r14 + 4)); 0x00410ab2 mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410ab6 mov rdi, qword [rsp + 0x10] | 0x00410abb lea rsi, [rsp + 8] | 0x00410ac0 call 0x412f90 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (*((rsp + 0x10)), rsp + 8); 0x00410ac5 mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x00410aca lea rbx, [r12 + 8] | rbx = r12 + 8; 0x00410acf lea rbp, [r14 + 8] | rbp = r14 + 8; 0x00410ad3 mov r13, r12 | r13 = r12; 0x00410ad6 mov r15, r14 | r15 = r14; 0x00410ad9 jmp 0x410b11 | goto label_4; | } 0x00410adb mov rdi, qword [rsp + 0x10] | 0x00410ae0 mov rsi, r12 | | } 0x00410ae3 call 0x412f90 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (*((rsp + 0x10)), r12); 0x00410ae8 lea rbx, [r12 + 8] | rbx = r12 + 8; 0x00410aed mov rbp, r14 | 0x00410af0 mov r13, r12 | r13 = r12; 0x00410af3 jmp 0x410b0c | goto label_5; | label_2: 0x00410af5 mov rdi, qword [rsp + 0x10] | 0x00410afa mov rsi, r14 | | label_3: 0x00410afd call 0x412f90 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (*((rsp + 0x10)), r14); 0x00410b02 lea rbp, [r14 + 8] | rbp = r14 + 8; 0x00410b06 mov rbx, r12 | rbx = r12; 0x00410b09 mov r15, r14 | r15 = r14; | label_5: 0x00410b0c mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); | label_4: 0x00410b11 mov rcx, qword [rax + 8] | rcx = *((rax + 8)); 0x00410b15 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x00410b1a mov rax, qword [rax + 8] | rax = *((rax + 8)); 0x00410b1e cmp rbx, rcx | | if (rbx == rcx) { 0x00410b21 je 0x410b32 | goto label_6; | } 0x00410b23 mov r14, rbp | r14 = rbp; 0x00410b26 mov r12, rbx | r12 = rbx; 0x00410b29 cmp rbp, rax | 0x00410b2c jne 0x410a30 | | } while (rbp != rax); | label_6: 0x00410b32 cmp rbx, rcx | | if (rbx == rcx) { 0x00410b35 je 0x410b89 | goto label_7; | } 0x00410b37 lea r14, [rsp + 8] | r14 = rsp + 8; 0x00410b3c mov r12, qword [rsp + 0x10] | r12 = *((rsp + 0x10)); 0x00410b41 nop word cs:[rax + rax] | 0x00410b4b nop dword [rax + rax] | | do { 0x00410b50 mov eax, dword [rbx] | eax = *(rbx); 0x00410b52 mov dword [rsp + 8], eax | *((rsp + 8)) = eax; 0x00410b56 movzx eax, byte [rbx + 4] | eax = *((rbx + 4)); 0x00410b5a mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410b5e or al, byte [r15 + 4] | al |= *((r15 + 4)); 0x00410b62 mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410b66 mov rdi, r12 | 0x00410b69 mov rsi, r14 | 0x00410b6c call 0x412f90 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (r12, r14); 0x00410b71 add rbx, 8 | rbx += 8; 0x00410b75 mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x00410b7a cmp rbx, qword [rax + 8] | 0x00410b7e jne 0x410b50 | | } while (rbx != *((rax + 8))); 0x00410b80 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x00410b85 mov rax, qword [rax + 8] | rax = *((rax + 8)); | label_7: 0x00410b89 cmp rbp, rax | 0x00410b8c mov r15, qword [rsp + 0x10] | r15 = *((rsp + 0x10)); 0x00410b91 mov rbx, qword [rsp + 0x20] | rbx = *((rsp + 0x20)); | if (rbp == rax) { 0x00410b96 je 0x410c15 | goto label_8; | } 0x00410b98 lea r14, [rsp + 8] | r14 = rsp + 8; 0x00410b9d nop dword [rax] | | do { 0x00410ba0 mov eax, dword [rbp] | eax = *(rbp); 0x00410ba3 mov dword [rsp + 8], eax | *((rsp + 8)) = eax; 0x00410ba7 movzx eax, byte [rbp + 4] | eax = *((rbp + 4)); 0x00410bab mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410baf or al, byte [r13 + 4] | al |= *((r13 + 4)); 0x00410bb3 mov byte [rsp + 0xc], al | *((rsp + 0xc)) = al; 0x00410bb7 mov rdi, r15 | 0x00410bba mov rsi, r14 | 0x00410bbd call 0x412f90 | bsl::vector,bsl::allocator>>::push_back(bsl::pairconst&) (r15, r14); 0x00410bc2 add rbp, 8 | rbp += 8; 0x00410bc6 cmp rbp, qword [rbx + 8] | 0x00410bca jne 0x410ba0 | | } while (rbp != *((rbx + 8))); 0x00410bcc jmp 0x410c15 | goto label_8; | label_0: 0x00410bce cmp rdi, rbp | | if (rdi != rbp) { 0x00410bd1 je 0x410c15 | 0x00410bd3 mov rsi, qword [rdi] | rsi = *(rdi); 0x00410bd6 cmp qword [rdi + 8], rsi | | if (*((rdi + 8)) != rsi) { 0x00410bda je 0x410be0 | 0x00410bdc mov qword [rdi + 8], rsi | *((rdi + 8)) = rsi; | } 0x00410be0 mov rdx, qword [rbp] | rdx = *(rbp); 0x00410be4 mov rcx, qword [rbp + 8] | rcx = *((rbp + 8)); 0x00410be8 lea r8, [rsp + 8] | r8 = rsp + 8; 0x00410bed jmp 0x410c10 | goto label_9; | label_1: 0x00410bef cmp rdi, rdx | | if (rdi == rdx) { 0x00410bf2 je 0x410c15 | goto label_8; | } 0x00410bf4 mov rsi, qword [rdi] | rsi = *(rdi); 0x00410bf7 cmp qword [rdi + 8], rsi | | if (*((rdi + 8)) != rsi) { 0x00410bfb je 0x410c08 | 0x00410bfd mov qword [rdi + 8], rsi | *((rdi + 8)) = rsi; 0x00410c01 mov r12, qword [rdx] | r12 = *(rdx); 0x00410c04 mov rcx, qword [rdx + 8] | | } 0x00410c08 lea r8, [rsp + 8] | r8 = rsp + 8; 0x00410c0d mov rdx, r12 | | label_9: 0x00410c10 call 0x4130b0 | voidbsl::vector,bsl::allocator>>::privateInsertconst*>(bsl::pairconst*,bsl::pairconst*,bsl::pairconst*,std::_1::forward_iterator_tagconst&) (rdi, rsi, r12, *((rdx + 8))); | } | label_8: 0x00410c15 add rsp, 0x28 | 0x00410c19 pop rbx | 0x00410c1a pop r12 | 0x00410c1c pop r13 | 0x00410c1e pop r14 | 0x00410c20 pop r15 | 0x00410c22 pop rbp | 0x00410c23 ret | return rax; | }