; assembly | /* r2dec pseudo code output */ | /* ball_recordjsonformatter.t/none @ 0x4163e0 */ | #include | ; (fcn) method.BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue__bsl::allocator_BloombergLP::ball::UserFieldValue___.emplace_back____ () | int64_t method_BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue_bsl::allocator_BloombergLP::ball::UserFieldValue_emplace_back_ (int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_28h; | int64_t var_30h; | rdi = arg1; | /* BloombergLP::ball::UserFieldValue& bsl::vector >::emplace_back<>() */ 0x004163e0 push rbp | 0x004163e1 push r15 | 0x004163e3 push r14 | 0x004163e5 push r13 | 0x004163e7 push r12 | 0x004163e9 push rbx | 0x004163ea sub rsp, 0x38 | 0x004163ee mov rbx, rdi | rbx = rdi; 0x004163f1 mov rbp, qword [rdi + 8] | rbp = *((rdi + 8)); 0x004163f5 mov rsi, qword [rdi + 0x10] | rsi = *((rdi + 0x10)); 0x004163f9 mov rdi, rbp | rdi = rbp; 0x004163fc sub rdi, qword [rbx] | rdi -= *(rbx); 0x004163ff sar rdi, 6 | rdi >>= 6; 0x00416403 cmp rsi, rdi | | if (rsi > rdi) { 0x00416406 jbe 0x41644c | 0x00416408 mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x0041640c mov dword [rbp + 0x30], 0 | *((rbp + 0x30)) = 0; 0x00416413 test rax, rax | | if (rax == 0) { 0x00416416 jne 0x416429 | 0x00416418 mov rax, qword [rip + 0x2d7701] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0041641f test rax, rax | | if (rax != 0) { 0x00416422 jne 0x416429 | goto label_6; | } 0x00416424 call 0x472d60 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_6: 0x00416429 mov qword [rbp + 0x38], rax | *((rbp + 0x38)) = rax; 0x0041642d mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x00416431 add rax, 0x40 | rax += 0x40; 0x00416435 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; | label_5: 0x00416439 add rax, 0xffffffffffffffc0 | rax += 0xffffffffffffffc0; 0x0041643d add rsp, 0x38 | 0x00416441 pop rbx | 0x00416442 pop r12 | 0x00416444 pop r13 | 0x00416446 pop r14 | 0x00416448 pop r15 | 0x0041644a pop rbp | 0x0041644b ret | return rax; | } 0x0041644c inc rdi | rdi++; 0x0041644f movabs rdx, 0x3ffffffffffffff | rdx = 0x3ffffffffffffff; 0x00416459 call 0x47ee80 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rdi, rsi, rdx); 0x0041645e mov r15, rax | r15 = rax; 0x00416461 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x00416465 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00416468 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0041646c mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00416475 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x0041647a mov rsi, rax | rsi = rax; 0x0041647d shl rsi, 6 | rsi <<= 6; 0x00416481 mov rax, qword [rdi] | rax = *(rdi); 0x00416484 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00416487 mov r14, rax | r14 = rax; 0x0041648a mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0041648f mov qword [rsp], rax | *(rsp) = rax; 0x00416493 mov qword [rsp + 0x10], r15 | *((rsp + 0x10)) = r15; 0x00416498 mov rbp, qword [rbx + 8] | rbp = *((rbx + 8)); 0x0041649c mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x004164a0 sub rbp, qword [rbx] | rbp -= *(rbx); 0x004164a3 mov dword [r14 + rbp + 0x30], 0 | *((r14 + rbp + 0x30)) = 0; 0x004164ac test rax, rax | | if (rax == 0) { 0x004164af jne 0x4164c2 | 0x004164b1 mov rax, qword [rip + 0x2d7668] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004164b8 test rax, rax | | if (rax != 0) { 0x004164bb jne 0x4164c2 | goto label_7; | } 0x004164bd call 0x472d60 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_7: 0x004164c2 mov r13, rbp | r13 = rbp; 0x004164c5 sar r13, 6 | r13 >>= 6; 0x004164c9 lea rcx, [r14 + rbp] | rcx = r14 + rbp; 0x004164cd mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x004164d2 lea rbp, [r14 + rbp + 0x30] | rbp = r14 + rbp + 0x30; 0x004164d7 shl r13, 6 | r13 <<= 6; 0x004164db mov qword [r14 + r13 + 0x38], rax | *((r14 + r13 + 0x38)) = rax; 0x004164e0 mov rdi, qword [rsp] | 0x004164e4 mov r15, qword [rbx] | r15 = *(rbx); 0x004164e7 mov r12, qword [rbx + 8] | r12 = *((rbx + 8)); 0x004164eb mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x004164ef mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x004164f4 lea rcx, [rsp + 0x30] | 0x004164f9 mov rsi, r15 | 0x004164fc mov rdx, r12 | 0x004164ff xor r8d, r8d | r8d = 0; 0x00416502 call 0x416750 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (*(rsp), r15, r12, rsp + 0x30); 0x00416507 cmp r15, r12 | | if (r15 != r12) { 0x0041650a jne 0x416561 | goto label_8; | } | do { 0x0041650c mov rax, qword [rbx] | rax = *(rbx); 0x0041650f mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x00416513 mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x00416518 add rax, 0x40 | rax += 0x40; 0x0041651c mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00416521 mov rsi, rsp | 0x00416524 mov rdi, rbx | 0x00416527 call 0x47eeb0 | bsl::Vector_Util::swap(void*,void*) (rbx, rsp); 0x0041652c mov r14, qword [rsp] | r14 = *(rsp); 0x00416530 test r14, r14 | | if (r14 == 0) { 0x00416533 je 0x416604 | goto label_9; | } 0x00416539 mov rbp, qword [rsp + 8] | rbp = *((rsp + 8)); 0x0041653e cmp r14, rbp | | if (r14 != rbp) { 0x00416541 jne 0x4165b6 | goto label_10; | } 0x00416543 jmp 0x4165f6 | goto label_11; | label_2: 0x00416548 mov qword [r15 + 0x18], 0xffffffffffffffff | *((r15 + 0x18)) = 0xffffffffffffffff; | label_1: 0x00416550 mov dword [r15 + 0x30], 0 | *((r15 + 0x30)) = 0; | label_0: 0x00416558 add r15, 0x40 | r15 += 0x40; 0x0041655c cmp r12, r15 | 0x0041655f je 0x41650c | | } while (r12 == r15); | label_8: 0x00416561 mov eax, dword [r15 + 0x30] | eax = *((r15 + 0x30)); 0x00416565 test eax, eax | | if (eax == 0) { 0x00416567 je 0x416558 | goto label_0; | } 0x00416569 cmp eax, 5 | | if (eax == 5) { 0x0041656c je 0x416589 | goto label_12; | } 0x0041656e cmp eax, 3 | | if (eax != 3) { 0x00416571 jne 0x416550 | goto label_1; | } 0x00416573 cmp qword [r15 + 0x20], 0x17 | | if (*((r15 + 0x20)) == 0x17) { 0x00416578 je 0x416548 | goto label_2; | } 0x0041657a mov rsi, qword [r15] | rsi = *(r15); 0x0041657d mov rdi, qword [r15 + 0x28] | rdi = *((r15 + 0x28)); 0x00416581 mov rax, qword [rdi] | rax = *(rdi); 0x00416584 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00416587 jmp 0x416548 | goto label_2; | label_12: 0x00416589 mov rsi, qword [r15] | rsi = *(r15); 0x0041658c test rsi, rsi | | if (rsi == 0) { 0x0041658f je 0x416550 | goto label_1; | } 0x00416591 mov rdi, qword [r15 + 0x18] | rdi = *((r15 + 0x18)); 0x00416595 mov rax, qword [rdi] | rax = *(rdi); 0x00416598 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0041659b jmp 0x416550 | goto label_1; | label_4: 0x0041659d mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_3: 0x004165a5 mov dword [r14 + 0x30], 0 | *((r14 + 0x30)) = 0; | do { 0x004165ad add r14, 0x40 | r14 += 0x40; 0x004165b1 cmp rbp, r14 | | if (rbp == r14) { 0x004165b4 je 0x4165f2 | goto label_13; | } | label_10: 0x004165b6 mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x004165ba test eax, eax | 0x004165bc je 0x4165ad | | } while (eax == 0); 0x004165be cmp eax, 5 | | if (eax == 5) { 0x004165c1 je 0x4165de | goto label_14; | } 0x004165c3 cmp eax, 3 | | if (eax != 3) { 0x004165c6 jne 0x4165a5 | goto label_3; | } 0x004165c8 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) == 0x17) { 0x004165cd je 0x41659d | goto label_4; | } 0x004165cf mov rsi, qword [r14] | rsi = *(r14); 0x004165d2 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004165d6 mov rax, qword [rdi] | rax = *(rdi); 0x004165d9 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004165dc jmp 0x41659d | goto label_4; | label_14: 0x004165de mov rsi, qword [r14] | rsi = *(r14); 0x004165e1 test rsi, rsi | | if (rsi == 0) { 0x004165e4 je 0x4165a5 | goto label_3; | } 0x004165e6 mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x004165ea mov rax, qword [rdi] | rax = *(rdi); 0x004165ed call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004165f0 jmp 0x4165a5 | goto label_3; | label_13: 0x004165f2 mov r14, qword [rsp] | r14 = *(rsp); | label_11: 0x004165f6 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x004165fb mov rax, qword [rdi] | rax = *(rdi); 0x004165fe mov rsi, r14 | rsi = r14; 0x00416601 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_9: 0x00416604 mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x00416608 jmp 0x416439 | goto label_5; | }