; assembly | /* r2dec pseudo code output */ | /* ball_userfieldvalue.t/none @ 0x422f90 */ | #include | ; (fcn) method.BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_long_long__double__bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____BloombergLP::bdlt::DatetimeTz__bsl::vector_char__bsl::allocator_char_______.swap_BloombergLP () | int64_t method_BloombergLP::bdlb::VariantImp_BloombergLP::bslmf::TypeList_long_long_double_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_BloombergLP::bdlt::DatetimeTz_bsl::vector_char_bsl::allocator_char_swap_BloombergLP (uint32_t arg2, uint32_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlb::VariantImp, bsl::allocator >, BloombergLP::bdlt::DatetimeTz, bsl::vector > > >::swap(BloombergLP::bdlb::VariantImp, bsl::allocator >, BloombergLP::bdlt::DatetimeTz, bsl::vector > > >&) */ 0x00422f90 push r14 | 0x00422f92 push rbx | 0x00422f93 push rax | 0x00422f94 mov r14, rsi | r14 = rsi; 0x00422f97 mov rbx, rdi | rbx = rdi; 0x00422f9a mov eax, dword [rdi + 0x30] | eax = *((rdi + 0x30)); 0x00422f9d mov ecx, dword [rsi + 0x30] | ecx = *((rsi + 0x30)); 0x00422fa0 test eax, eax | | if (eax != 0) { 0x00422fa2 je 0x422fcc | 0x00422fa4 test ecx, ecx | | if (ecx == 0) { 0x00422fa6 je 0x423026 | goto label_0; | } 0x00422fa8 cmp eax, ecx | | if (eax == ecx) { 0x00422faa jne 0x422fba | 0x00422fac mov rcx, qword [rbx + 0x38] | rcx = *((rbx + 0x38)); 0x00422fb0 cmp rcx, qword [r14 + 0x38] | | if (rcx == *((r14 + 0x38))) { 0x00422fb4 je 0x423060 | goto label_1; | } | } 0x00422fba mov rdi, rbx | rdi = rbx; 0x00422fbd mov rsi, r14 | rsi = r14; 0x00422fc0 add rsp, 8 | 0x00422fc4 pop rbx | 0x00422fc5 pop r14 | 0x00422fc7 jmp 0x423130 | void (*0x423130)() (); | } 0x00422fcc test ecx, ecx | | if (ecx == 0) { 0x00422fce je 0x4230b1 | goto label_2; | } 0x00422fd4 mov rdi, rbx | rdi = rbx; 0x00422fd7 mov rsi, r14 | rsi = r14; 0x00422fda call 0x422bf0 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::operator=(BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>const&) (); 0x00422fdf mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x00422fe3 test eax, eax | | if (eax == 0) { 0x00422fe5 je 0x4230b1 | goto label_2; | } 0x00422feb cmp eax, 5 | | if (eax != 5) { 0x00422fee je 0x42307c | 0x00422ff4 cmp eax, 3 | | if (eax == 3) { 0x00422ff7 jne 0x42308e | 0x00422ffd cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x00423002 je 0x423011 | 0x00423004 mov rsi, qword [r14] | rsi = *(r14); 0x00423007 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0042300b mov rax, qword [rdi] | rax = *(rdi); 0x0042300e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00423011 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; 0x00423019 mov dword [r14 + 0x30], 0 | *((r14 + 0x30)) = 0; 0x00423021 jmp 0x4230b1 | goto label_2; | label_0: 0x00423026 mov rdi, r14 | rdi = r14; 0x00423029 mov rsi, rbx | rsi = rbx; 0x0042302c call 0x422bf0 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::operator=(BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>const&) (); 0x00423031 mov eax, dword [rbx + 0x30] | eax = *((rbx + 0x30)); 0x00423034 test eax, eax | | if (eax == 0) { 0x00423036 je 0x4230b1 | goto label_2; | } 0x00423038 cmp eax, 5 | | if (eax == 5) { 0x0042303b je 0x423098 | goto label_3; | } 0x0042303d cmp eax, 3 | | if (eax != 3) { 0x00423040 jne 0x4230aa | goto label_4; | } 0x00423042 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) != 0x17) { 0x00423047 je 0x423056 | 0x00423049 mov rsi, qword [rbx] | rsi = *(rbx); 0x0042304c mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x00423050 mov rax, qword [rdi] | rax = *(rdi); 0x00423053 call qword [rax + 0x18] | eax = uint64_t (*rax + 0x18)() (); | } 0x00423056 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x0042305e jmp 0x4230aa | goto label_4; | label_1: 0x00423060 dec eax | eax--; 0x00423062 cmp eax, 4 | | if (eax > 4) { 0x00423065 ja 0x4230b1 | goto label_2; | } | /* switch table (5 cases) at 0x44ef90 */ 0x00423067 jmp qword [rax*8 + 0x44ef90] | 0x0042306e mov rax, qword [rbx] | rax = *(rbx); 0x00423071 mov rcx, qword [r14] | rcx = *(r14); 0x00423074 mov qword [rbx], rcx | *(rbx) = rcx; 0x00423077 mov qword [r14], rax | *(r14) = rax; 0x0042307a jmp 0x4230b1 | | } else { 0x0042307c mov rsi, qword [r14] | rsi = *(r14); 0x0042307f test rsi, rsi | | if (rsi == 0) { 0x00423082 je 0x42308e | goto label_5; | } 0x00423084 mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x00423088 mov rax, qword [rdi] | rax = *(rdi); 0x0042308b call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_5: 0x0042308e mov dword [r14 + 0x30], 0 | *((r14 + 0x30)) = 0; 0x00423096 jmp 0x4230b1 | goto label_2; | label_3: 0x00423098 mov rsi, qword [rbx] | rsi = *(rbx); 0x0042309b test rsi, rsi | | if (rsi != 0) { 0x0042309e je 0x4230aa | 0x004230a0 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x004230a4 mov rax, qword [rdi] | rax = *(rdi); 0x004230a7 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_4: 0x004230aa mov dword [rbx + 0x30], 0 | *((rbx + 0x30)) = 0; | } | do { | label_2: 0x004230b1 add rsp, 8 | 0x004230b5 pop rbx | 0x004230b6 pop r14 | 0x004230b8 ret | return rax; 0x004230b9 movsd xmm0, qword [rbx] | xmm0 = *(rbx); 0x004230bd movsd xmm1, qword [r14] | xmm1 = *(r14); 0x004230c2 movsd qword [rbx], xmm1 | *(rbx) = xmm1; 0x004230c6 movsd qword [r14], xmm0 | *(r14) = xmm0; 0x004230cb jmp 0x4230b1 | | } while (1); 0x004230cd mov rdi, rbx | rdi = rbx; 0x004230d0 mov rsi, r14 | rsi = r14; 0x004230d3 add rsp, 8 | 0x004230d7 pop rbx | 0x004230d8 pop r14 | 0x004230da jmp 0x42dac0 | void (*0x42dac0)() (); 0x004230df mov rdi, rbx | rdi = rbx; 0x004230e2 mov rsi, r14 | rsi = r14; 0x004230e5 add rsp, 8 | 0x004230e9 pop rbx | 0x004230ea pop r14 | 0x004230ec jmp 0x423250 | void (*0x423250)() (); 0x004230f1 mov rdi, rbx | rdi = rbx; 0x004230f4 mov rsi, r14 | rsi = r14; 0x004230f7 add rsp, 8 | 0x004230fb pop rbx | 0x004230fc pop r14 | 0x004230fe jmp 0x437a70 | return void (*0x437a70)() (); | }