; assembly | /* r2dec pseudo code output */ | /* ball_record.t/none @ 0x413a30 */ | #include | ; (fcn) method.BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue__bsl::allocator_BloombergLP::ball::UserFieldValue___::emplace_back_bsl::vector_char__bsl.allocator_char____const__bsl::vector_char__bsl::allocator_char____const_ () | int64_t method_BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue_bsl::allocator_BloombergLP::ball::UserFieldValue_::emplace_back_bsl::vector_char_bsl_allocator_char_const_bsl::vector_char_bsl::allocator_char_const_ (int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_28h; | int64_t var_30h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::ball::UserFieldValue& bsl::vector >::emplace_back > const&>(bsl::vector > const&) */ 0x00413a30 push rbp | 0x00413a31 push r15 | 0x00413a33 push r14 | 0x00413a35 push r13 | 0x00413a37 push r12 | 0x00413a39 push rbx | 0x00413a3a sub rsp, 0x38 | 0x00413a3e mov r14, rsi | r14 = rsi; 0x00413a41 mov rbp, rdi | 0x00413a44 mov rbx, qword [rdi + 8] | rbx = *((rdi + 8)); 0x00413a48 mov rsi, qword [rdi + 0x10] | rsi = *((rdi + 0x10)); 0x00413a4c mov rdi, rbx | rdi = rbx; 0x00413a4f sub rdi, qword [rbp] | rdi -= *(rbp); 0x00413a53 sar rdi, 6 | rdi >>= 6; 0x00413a57 cmp rsi, rdi | | if (rsi > rdi) { 0x00413a5a jbe 0x413ace | 0x00413a5c mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x00413a60 mov dword [rbx + 0x30], 5 | *((rbx + 0x30)) = 5; 0x00413a67 test rax, rax | | if (rax != 0) { 0x00413a6a je 0x413a72 | 0x00413a6c mov qword [rbx + 0x38], rax | *((rbx + 0x38)) = rax; 0x00413a70 jmp 0x413a9d | | } else { 0x00413a72 mov rax, qword [rip + 0x26f457] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00413a79 test rax, rax | | if (rax == 0) { 0x00413a7c jne 0x413a83 | 0x00413a7e call 0x425710 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00413a83 mov qword [rbx + 0x38], rax | *((rbx + 0x38)) = rax; 0x00413a87 test rax, rax | | if (rax != 0) { 0x00413a8a jne 0x413a9d | goto label_6; | } 0x00413a8c mov rax, qword [rip + 0x26f43d] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00413a93 test rax, rax | | if (rax != 0) { 0x00413a96 jne 0x413a9d | goto label_6; | } 0x00413a98 call 0x425710 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_6: 0x00413a9d mov qword [rsp], rax | *(rsp) = rax; 0x00413aa1 mov rdx, rsp | 0x00413aa4 mov rdi, rbx | 0x00413aa7 mov rsi, r14 | 0x00413aaa call 0x434c00 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (rbx, r14, rsp); 0x00413aaf mov rax, qword [rbp + 8] | rax = *((rbp + 8)); 0x00413ab3 add rax, 0x40 | rax += 0x40; 0x00413ab7 mov qword [rbp + 8], rax | *((rbp + 8)) = rax; | label_5: 0x00413abb add rax, 0xffffffffffffffc0 | rax += 0xffffffffffffffc0; 0x00413abf add rsp, 0x38 | 0x00413ac3 pop rbx | 0x00413ac4 pop r12 | 0x00413ac6 pop r13 | 0x00413ac8 pop r14 | 0x00413aca pop r15 | 0x00413acc pop rbp | 0x00413acd ret | return rax; | } 0x00413ace inc rdi | rdi++; 0x00413ad1 movabs rdx, 0x3ffffffffffffff | rdx = 0x3ffffffffffffff; 0x00413adb call 0x431320 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rdi, rsi, rdx); 0x00413ae0 mov rbx, rax | rbx = rax; 0x00413ae3 mov rdi, qword [rbp + 0x18] | rdi = *((rbp + 0x18)); 0x00413ae7 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00413aea movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x00413aee mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00413af7 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x00413afc mov rsi, rax | rsi = rax; 0x00413aff shl rsi, 6 | rsi <<= 6; 0x00413b03 mov rax, qword [rdi] | rax = *(rdi); 0x00413b06 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00413b09 mov r15, rax | r15 = rax; 0x00413b0c mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00413b11 mov qword [rsp], rax | *(rsp) = rax; 0x00413b15 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x00413b1a mov rbx, qword [rbp + 8] | rbx = *((rbp + 8)); 0x00413b1e sub rbx, qword [rbp] | rbx -= *(rbp); 0x00413b22 mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x00413b26 mov r13, rbx | r13 = rbx; 0x00413b29 sar r13, 6 | r13 >>= 6; 0x00413b2d mov dword [r15 + rbx + 0x30], 5 | *((r15 + rbx + 0x30)) = 5; 0x00413b36 test rax, rax | | if (rax != 0) { 0x00413b39 je 0x413b49 | 0x00413b3b mov rcx, r13 | rcx = r13; 0x00413b3e shl rcx, 6 | rcx <<= 6; 0x00413b42 mov qword [r15 + rcx + 0x38], rax | *((r15 + rcx + 0x38)) = rax; 0x00413b47 jmp 0x413b7c | | } else { 0x00413b49 mov rax, qword [rip + 0x26f380] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00413b50 test rax, rax | | if (rax == 0) { 0x00413b53 jne 0x413b5a | 0x00413b55 call 0x425710 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00413b5a mov rcx, r13 | rcx = r13; 0x00413b5d shl rcx, 6 | rcx <<= 6; 0x00413b61 mov qword [r15 + rcx + 0x38], rax | *((r15 + rcx + 0x38)) = rax; 0x00413b66 test rax, rax | | if (rax != 0) { 0x00413b69 jne 0x413b7c | goto label_7; | } 0x00413b6b mov rax, qword [rip + 0x26f35e] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00413b72 test rax, rax | | if (rax != 0) { 0x00413b75 jne 0x413b7c | goto label_7; | } 0x00413b77 call 0x425710 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_7: 0x00413b7c lea r12, [r15 + rbx] | r12 = r15 + rbx; 0x00413b80 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00413b85 lea rdx, [rsp + 0x28] | 0x00413b8a mov rdi, r12 | 0x00413b8d mov rsi, r14 | 0x00413b90 call 0x434c00 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r12, r14, rsp + 0x28); 0x00413b95 mov qword [rsp + 0x30], r13 | *((rsp + 0x30)) = r13; 0x00413b9a lea rbx, [r15 + rbx + 0x30] | rbx = r15 + rbx + 0x30; 0x00413b9f mov rdi, qword [rsp] | 0x00413ba3 mov r14, qword [rbp] | r14 = *(rbp); 0x00413ba7 mov r13, qword [rbp + 8] | r13 = *((rbp + 8)); 0x00413bab mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x00413baf mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00413bb4 lea rcx, [rsp + 0x28] | 0x00413bb9 mov rsi, r14 | 0x00413bbc mov rdx, r13 | 0x00413bbf xor r8d, r8d | r8d = 0; 0x00413bc2 call 0x412a70 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (*(rsp), r14, r13, rsp + 0x28); 0x00413bc7 cmp r14, r13 | | if (r14 != r13) { 0x00413bca jne 0x413c1d | goto label_8; | } | do { 0x00413bcc mov rax, qword [rbp] | rax = *(rbp); 0x00413bd0 mov qword [rbp + 8], rax | *((rbp + 8)) = rax; 0x00413bd4 add r12, 0x40 | r12 += 0x40; 0x00413bd8 mov qword [rsp + 8], r12 | *((rsp + 8)) = r12; 0x00413bdd mov rsi, rsp | 0x00413be0 mov rdi, rbp | 0x00413be3 call 0x431350 | bsl::Vector_Util::swap(void*,void*) (rbp, rsp); 0x00413be8 mov r14, qword [rsp] | r14 = *(rsp); 0x00413bec test r14, r14 | | if (r14 == 0) { 0x00413bef je 0x413cc0 | goto label_9; | } 0x00413bf5 mov rbx, qword [rsp + 8] | rbx = *((rsp + 8)); 0x00413bfa cmp r14, rbx | | if (r14 != rbx) { 0x00413bfd jne 0x413c72 | goto label_10; | } 0x00413bff jmp 0x413cb2 | goto label_11; | label_2: 0x00413c04 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_1: 0x00413c0c mov dword [r14 + 0x30], 0 | *((r14 + 0x30)) = 0; | label_0: 0x00413c14 add r14, 0x40 | r14 += 0x40; 0x00413c18 cmp r13, r14 | 0x00413c1b je 0x413bcc | | } while (r13 == r14); | label_8: 0x00413c1d mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x00413c21 test eax, eax | | if (eax == 0) { 0x00413c23 je 0x413c14 | goto label_0; | } 0x00413c25 cmp eax, 5 | | if (eax == 5) { 0x00413c28 je 0x413c45 | goto label_12; | } 0x00413c2a cmp eax, 3 | | if (eax != 3) { 0x00413c2d jne 0x413c0c | goto label_1; | } 0x00413c2f cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) == 0x17) { 0x00413c34 je 0x413c04 | goto label_2; | } 0x00413c36 mov rsi, qword [r14] | rsi = *(r14); 0x00413c39 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x00413c3d mov rax, qword [rdi] | rax = *(rdi); 0x00413c40 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00413c43 jmp 0x413c04 | goto label_2; | label_12: 0x00413c45 mov rsi, qword [r14] | rsi = *(r14); 0x00413c48 test rsi, rsi | | if (rsi == 0) { 0x00413c4b je 0x413c0c | goto label_1; | } 0x00413c4d mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x00413c51 mov rax, qword [rdi] | rax = *(rdi); 0x00413c54 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00413c57 jmp 0x413c0c | goto label_1; | label_4: 0x00413c59 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_3: 0x00413c61 mov dword [r14 + 0x30], 0 | *((r14 + 0x30)) = 0; | do { 0x00413c69 add r14, 0x40 | r14 += 0x40; 0x00413c6d cmp rbx, r14 | | if (rbx == r14) { 0x00413c70 je 0x413cae | goto label_13; | } | label_10: 0x00413c72 mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x00413c76 test eax, eax | 0x00413c78 je 0x413c69 | | } while (eax == 0); 0x00413c7a cmp eax, 5 | | if (eax == 5) { 0x00413c7d je 0x413c9a | goto label_14; | } 0x00413c7f cmp eax, 3 | | if (eax != 3) { 0x00413c82 jne 0x413c61 | goto label_3; | } 0x00413c84 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) == 0x17) { 0x00413c89 je 0x413c59 | goto label_4; | } 0x00413c8b mov rsi, qword [r14] | rsi = *(r14); 0x00413c8e mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x00413c92 mov rax, qword [rdi] | rax = *(rdi); 0x00413c95 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00413c98 jmp 0x413c59 | goto label_4; | label_14: 0x00413c9a mov rsi, qword [r14] | rsi = *(r14); 0x00413c9d test rsi, rsi | | if (rsi == 0) { 0x00413ca0 je 0x413c61 | goto label_3; | } 0x00413ca2 mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x00413ca6 mov rax, qword [rdi] | rax = *(rdi); 0x00413ca9 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00413cac jmp 0x413c61 | goto label_3; | label_13: 0x00413cae mov r14, qword [rsp] | r14 = *(rsp); | label_11: 0x00413cb2 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x00413cb7 mov rax, qword [rdi] | rax = *(rdi); 0x00413cba mov rsi, r14 | rsi = r14; 0x00413cbd call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_9: 0x00413cc0 mov rax, qword [rbp + 8] | rax = *((rbp + 8)); 0x00413cc4 jmp 0x413abb | goto label_5; | }