; assembly | /* r2dec pseudo code output */ | /* ball_log.t/none @ 0x498940 */ | #include | ; (fcn) method.BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue__bsl::allocator_BloombergLP::ball::UserFieldValue___::emplace_back_std::__1::basic_string_view_char__std::__1.char_traits_char____const__std::__1::basic_string_view_ () | int64_t method_BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue_bsl::allocator_BloombergLP::ball::UserFieldValue_::emplace_back_std::_1::basic_string_view_char_std::_1_char_traits_char_const_std::_1::basic_string_view_ (int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::ball::UserFieldValue& bsl::vector >::emplace_back > const&>(std::__1::basic_string_view > const&) */ 0x00498940 push rbp | 0x00498941 push r15 | 0x00498943 push r14 | 0x00498945 push r13 | 0x00498947 push r12 | 0x00498949 push rbx | 0x0049894a sub rsp, 0x28 | 0x0049894e mov r12, rsi | r12 = rsi; 0x00498951 mov rbx, rdi | rbx = rdi; 0x00498954 mov rax, qword [rdi + 8] | rax = *((rdi + 8)); 0x00498958 mov rsi, qword [rdi + 0x10] | rsi = *((rdi + 0x10)); 0x0049895c mov rdi, rax | rdi = rax; 0x0049895f sub rdi, qword [rbx] | rdi -= *(rbx); 0x00498962 sar rdi, 6 | rdi >>= 6; 0x00498966 cmp rsi, rdi | | if (rsi > rdi) { 0x00498969 jbe 0x498999 | 0x0049896b lea rdi, [rbx + 0x18] | 0x0049896f mov rsi, rax | 0x00498972 mov rdx, r12 | 0x00498975 call 0x498c70 | voidbsl::allocator_traits>::construct>const&>(bsl::allocator&,BloombergLP::ball::UserFieldValue*,std::_1::basic_string_view>const&) (rbx + 0x18, rax, r12); 0x0049897a mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x0049897e add rax, 0x40 | rax += 0x40; 0x00498982 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; | label_5: 0x00498986 add rax, 0xffffffffffffffc0 | rax += 0xffffffffffffffc0; 0x0049898a add rsp, 0x28 | 0x0049898e pop rbx | 0x0049898f pop r12 | 0x00498991 pop r13 | 0x00498993 pop r14 | 0x00498995 pop r15 | 0x00498997 pop rbp | 0x00498998 ret | return rax; | } 0x00498999 inc rdi | rdi++; 0x0049899c movabs rdx, 0x3ffffffffffffff | rdx = 0x3ffffffffffffff; 0x004989a6 call 0x4e94f0 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rdi, rsi, rdx); 0x004989ab mov r14, rax | r14 = rax; 0x004989ae mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x004989b2 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004989b5 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x004989b9 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004989c2 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x004989c7 mov rsi, rax | rsi = rax; 0x004989ca shl rsi, 6 | rsi <<= 6; 0x004989ce mov rax, qword [rdi] | rax = *(rdi); 0x004989d1 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x004989d4 mov r15, rax | r15 = rax; 0x004989d7 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004989dc mov qword [rsp], rax | *(rsp) = rax; 0x004989e0 mov qword [rsp + 0x10], r14 | *((rsp + 0x10)) = r14; 0x004989e5 mov rbp, qword [rbx + 8] | rbp = *((rbx + 8)); 0x004989e9 sub rbp, qword [rbx] | rbp -= *(rbx); 0x004989ec lea r14, [rax + rbp] | r14 = rax + rbp; 0x004989f0 lea rdi, [rbx + 0x18] | 0x004989f4 mov rsi, r14 | 0x004989f7 mov rdx, r12 | 0x004989fa call 0x498c70 | voidbsl::allocator_traits>::construct>const&>(bsl::allocator&,BloombergLP::ball::UserFieldValue*,std::_1::basic_string_view>const&) (rbx + 0x18, r14, r12); 0x004989ff sar rbp, 6 | rbp >>= 6; 0x00498a03 mov rdi, qword [rsp] | 0x00498a07 mov r12, qword [rbx] | r12 = *(rbx); 0x00498a0a mov r13, qword [rbx + 8] | r13 = *((rbx + 8)); 0x00498a0e mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x00498a12 mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x00498a17 lea rcx, [rsp + 0x20] | 0x00498a1c mov rsi, r12 | 0x00498a1f mov rdx, r13 | 0x00498a22 xor r8d, r8d | r8d = 0; 0x00498a25 call 0x498df0 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (*(rsp), r12, r13, rsp + 0x20); 0x00498a2a cmp r12, r13 | | if (r12 != r13) { 0x00498a2d jne 0x498a81 | goto label_6; | } | do { 0x00498a2f mov rax, qword [rbx] | rax = *(rbx); 0x00498a32 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x00498a36 add r14, 0x40 | r14 += 0x40; 0x00498a3a mov qword [rsp + 8], r14 | *((rsp + 8)) = r14; 0x00498a3f mov rsi, rsp | 0x00498a42 mov rdi, rbx | 0x00498a45 call 0x4e9520 | bsl::Vector_Util::swap(void*,void*) (rbx, rsp); 0x00498a4a mov r14, qword [rsp] | r14 = *(rsp); 0x00498a4e test r14, r14 | | if (r14 == 0) { 0x00498a51 je 0x498b2a | goto label_7; | } 0x00498a57 mov rbp, qword [rsp + 8] | rbp = *((rsp + 8)); 0x00498a5c cmp r14, rbp | | if (r14 != rbp) { 0x00498a5f jne 0x498adc | goto label_8; | } 0x00498a61 jmp 0x498b1c | goto label_9; | label_2: 0x00498a66 mov qword [r12 + 0x18], 0xffffffffffffffff | *((r12 + 0x18)) = 0xffffffffffffffff; | label_1: 0x00498a6f mov dword [r12 + 0x30], 0 | *((r12 + 0x30)) = 0; | label_0: 0x00498a78 add r12, 0x40 | r12 += 0x40; 0x00498a7c cmp r13, r12 | 0x00498a7f je 0x498a2f | | } while (r13 == r12); | label_6: 0x00498a81 mov eax, dword [r12 + 0x30] | eax = *((r12 + 0x30)); 0x00498a86 test eax, eax | | if (eax == 0) { 0x00498a88 je 0x498a78 | goto label_0; | } 0x00498a8a cmp eax, 5 | | if (eax == 5) { 0x00498a8d je 0x498aad | goto label_10; | } 0x00498a8f cmp eax, 3 | | if (eax != 3) { 0x00498a92 jne 0x498a6f | goto label_1; | } 0x00498a94 cmp qword [r12 + 0x20], 0x17 | | if (*((r12 + 0x20)) == 0x17) { 0x00498a9a je 0x498a66 | goto label_2; | } 0x00498a9c mov rsi, qword [r12] | rsi = *(r12); 0x00498aa0 mov rdi, qword [r12 + 0x28] | rdi = *((r12 + 0x28)); 0x00498aa5 mov rax, qword [rdi] | rax = *(rdi); 0x00498aa8 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00498aab jmp 0x498a66 | goto label_2; | label_10: 0x00498aad mov rsi, qword [r12] | rsi = *(r12); 0x00498ab1 test rsi, rsi | | if (rsi == 0) { 0x00498ab4 je 0x498a6f | goto label_1; | } 0x00498ab6 mov rdi, qword [r12 + 0x18] | rdi = *((r12 + 0x18)); 0x00498abb mov rax, qword [rdi] | rax = *(rdi); 0x00498abe call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00498ac1 jmp 0x498a6f | goto label_1; | label_4: 0x00498ac3 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_3: 0x00498acb mov dword [r14 + 0x30], 0 | *((r14 + 0x30)) = 0; | do { 0x00498ad3 add r14, 0x40 | r14 += 0x40; 0x00498ad7 cmp rbp, r14 | | if (rbp == r14) { 0x00498ada je 0x498b18 | goto label_11; | } | label_8: 0x00498adc mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x00498ae0 test eax, eax | 0x00498ae2 je 0x498ad3 | | } while (eax == 0); 0x00498ae4 cmp eax, 5 | | if (eax == 5) { 0x00498ae7 je 0x498b04 | goto label_12; | } 0x00498ae9 cmp eax, 3 | | if (eax != 3) { 0x00498aec jne 0x498acb | goto label_3; | } 0x00498aee cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) == 0x17) { 0x00498af3 je 0x498ac3 | goto label_4; | } 0x00498af5 mov rsi, qword [r14] | rsi = *(r14); 0x00498af8 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x00498afc mov rax, qword [rdi] | rax = *(rdi); 0x00498aff call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00498b02 jmp 0x498ac3 | goto label_4; | label_12: 0x00498b04 mov rsi, qword [r14] | rsi = *(r14); 0x00498b07 test rsi, rsi | | if (rsi == 0) { 0x00498b0a je 0x498acb | goto label_3; | } 0x00498b0c mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x00498b10 mov rax, qword [rdi] | rax = *(rdi); 0x00498b13 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00498b16 jmp 0x498acb | goto label_3; | label_11: 0x00498b18 mov r14, qword [rsp] | r14 = *(rsp); | label_9: 0x00498b1c mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x00498b21 mov rax, qword [rdi] | rax = *(rdi); 0x00498b24 mov rsi, r14 | rsi = r14; 0x00498b27 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_7: 0x00498b2a mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x00498b2e jmp 0x498986 | goto label_5; | }