; assembly | /* r2dec pseudo code output */ | /* bslalg_arrayprimitives.t/assume @ 0x4c9650 */ | #include | ; (fcn) sym.void_testCopyConstructWithIterators_int__bool__bool__bool_ () | uint64_t void_testCopyConstructWithIterators_int_bool_bool_bool_ (uint32_t arg3, uint32_t arg2) { | int64_t var_14h; | uint32_t var_18h; | int64_t var_20h; | int64_t var_22h; | int64_t var_28h; | int64_t var_2eh; | int64_t var_30h; | uint32_t var_40h; | int64_t var_48h; | uint32_t var_54h; | int64_t var_58h; | int64_t var_60h; | rdx = arg3; | rsi = arg2; | /* void testCopyConstructWithIterators(bool, bool, bool) */ 0x004c9650 push rbp | 0x004c9651 push r15 | 0x004c9653 push r14 | 0x004c9655 push r13 | 0x004c9657 push r12 | 0x004c9659 push rbx | 0x004c965a sub rsp, 0x68 | 0x004c965e mov dword [rsp + 0x54], edx | *((rsp + 0x54)) = edx; 0x004c9662 mov dword [rsp + 0x40], esi | *((rsp + 0x40)) = esi; 0x004c9666 cmp byte [rip + 0x24f329], 0 | | if (*(obj.verbose) != 0) { 0x004c966d je 0x4c9679 | 0x004c966f mov edi, 0x4f67e9 | 0x004c9674 call 0x401710 | eax = puts ("\t\tfrom same type."); | } 0x004c9679 xor eax, eax | eax = 0; 0x004c967b jmp 0x4c96ac | goto label_5; | label_2: 0x004c9680 mov edi, 0x74f860 | 0x004c9685 mov rsi, rbp | 0x004c9688 call 0x4e2960 | voidverify(int**,char const*) (obj.testCopyConstructWithIterators_int__bool__bool__bool_::u, rbp); 0x004c968d mov edi, 0x74f860 | 0x004c9692 mov rsi, rbp | 0x004c9695 call 0x4e2ba0 | voidcleanup(int**,char const*) (obj.testCopyConstructWithIterators_int__bool__bool__bool_::u, rbp); 0x004c969a mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x004c969f inc rax | rax++; 0x004c96a2 cmp rax, 0x1e | | if (rax == 0x1e) { 0x004c96a6 je 0x4c9be9 | goto label_6; | } | label_5: 0x004c96ac mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x004c96b1 lea rbp, [rax*8] | rbp = rax*8; 0x004c96b9 mov r12, qword [rbp + rbp*4 + 0x4f3b08] | r12 = *((rbp + rbp*4 + 0x4f3b08)); 0x004c96c1 mov rdi, r12 | 0x004c96c4 call 0x401790 | eax = strlen (*((rbp + rbp*4 + 0x4f3b08))); 0x004c96c9 cmp eax, 0x11 | | if (eax >= 0x11) { 0x004c96cc jl 0x4c96f7 | 0x004c96ce mov edi, 0x4f4c78 | 0x004c96d3 mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004c96d8 mov esi, 0xfe6 | esi = 0xfe6; 0x004c96dd xor eax, eax | eax = 0; 0x004c96df call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c96e4 mov eax, dword [rip + 0x24f2ae] | eax = (anonymous namespace)::testStatus; 0x004c96ea cmp eax, 0x64 | | if (eax > 0x64) { 0x004c96ed ja 0x4c96f7 | goto label_7; | } 0x004c96ef inc eax | eax++; 0x004c96f1 mov dword [rip + 0x24f2a1], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_7: 0x004c96f7 mov r13d, dword [rbp + rbp*4 + 0x4f3b00] | r13d = *((rbp + rbp*4 + obj.DATA_3)); 0x004c96ff movsxd r15, dword [rbp + rbp*4 + 0x4f3b10] | r15 = *((rbp + rbp*4 + 0x4f3b10)); 0x004c9707 mov ebx, dword [rbp + rbp*4 + 0x4f3b14] | ebx = *((rbp + rbp*4 + 0x4f3b14)); 0x004c970e movsxd r14, dword [rbp + rbp*4 + 0x4f3b18] | r14 = *((rbp + rbp*4 + 0x4f3b18)); 0x004c9716 mov rbp, qword [rbp + rbp*4 + 0x4f3b20] | rbp = *((rbp + rbp*4 + 0x4f3b20)); 0x004c971e cmp byte [rip + 0x24f26b], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c9725 je 0x4c9746 | 0x004c9727 mov qword [rsp], rbp | *(rsp) = rbp; 0x004c972b mov edi, 0x4f5ab7 | 0x004c9730 mov esi, r13d | esi = r13d; 0x004c9733 mov rdx, r12 | rdx = r12; 0x004c9736 mov ecx, r15d | ecx = r15d; 0x004c9739 mov r8d, ebx | r8d = ebx; 0x004c973c mov r9d, r14d | r9d = r14d; 0x004c973f xor eax, eax | eax = 0; 0x004c9741 call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004c9746 mov qword [rsp + 0x48], rbx | *((rsp + 0x48)) = rbx; 0x004c974b mov edi, 0x74f860 | 0x004c9750 mov rsi, r12 | 0x004c9753 call 0x4e2880 | int*&gg(int**,char const*) (obj.testCopyConstructWithIterators_int__bool__bool__bool_::u, r12); 0x004c9758 mov edi, 0x74f860 | 0x004c975d mov rsi, r12 | 0x004c9760 call 0x4e2960 | voidverify(int**,char const*) (obj.testCopyConstructWithIterators_int__bool__bool__bool_::u, r12); 0x004c9765 mov r12d, dword [rip + 0x24f238] | r12d = numCopyCtorCalls; 0x004c976c mov eax, dword [rip + 0x24f23a] | eax = numCharCtorCalls; 0x004c9772 mov dword [rsp + 0x14], eax | *((rsp + 0x14)) = eax; 0x004c9776 cmp byte [rsp + 0x54], 0 | | if (*((rsp + 0x54)) == 0) { 0x004c977b je 0x4c9860 | goto label_8; | } 0x004c9781 cmp byte [rip + 0x24f208], 0 | 0x004c9788 mov ebx, r13d | ebx = r13d; | if (*(obj.veryVerbose) != 0) { 0x004c978b je 0x4c97a0 | 0x004c978d cmp dword [rip + 0x24ee04], 0 | | if (*(0x00718598) == 0) { 0x004c9794 je 0x4c97a0 | goto label_9; | } 0x004c9796 mov edi, 0x4f425a | 0x004c979b call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_9: 0x004c97a0 mov dword [rip + 0x24edee], 0 | *(0x00718598) = 0; 0x004c97aa cmp byte [rip + 0x24f1e4], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c97b1 je 0x4c97bd | 0x004c97b3 mov edi, 0x4f4281 | 0x004c97b8 call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004c97bd mov rax, qword [rip + 0x24f05c] | rax = Z; 0x004c97c4 mov qword [rsp + 0x20], 0x4f6858 | *((rsp + 0x20)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004c97cd mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x004c97d2 mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004c97da test rax, rax | 0x004c97dd je 0x4c98c9 | | while (rax != 0) { | label_0: 0x004c97e3 lea rsi, [r15*8 + 0x74f860] | rsi = r15*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c97eb mov rax, qword [rsp + 0x48] | rax = *((rsp + 0x48)); 0x004c97f0 add eax, r15d | eax += r15d; 0x004c97f3 cdqe | rax = (int64_t) eax; 0x004c97f5 lea rdx, [rax*8 + 0x74f860] | rdx = rax*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c97fd sub rdx, rsi | rdx -= rsi; | if (rdx != 0) { 0x004c9800 je 0x4c980f | 0x004c9802 lea rdi, [r14*8 + 0x74f860] | 0x004c980a call 0x401930 | memcpy (r14*8 + obj.testCopyConstructWithIterators_int__bool__bool__bool_::u, rsi, rdx); | } 0x004c980f mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x004c9814 lea rdi, [rsp + 0x20] | rdi = rsp + 0x20; 0x004c9819 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004c9820 call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004c9823 cmp byte [rip + 0x24f16b], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c982a je 0x4c9836 | 0x004c982c mov edi, 0x4f43e1 | 0x004c9831 call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004c9836 cmp byte [rip + 0x24f153], 0 | | if (*(obj.veryVerbose) == 0) { 0x004c983d je 0x4c9b0b | goto label_10; | } 0x004c9843 mov edi, 0xa | 0x004c9848 call 0x401720 | putchar (0xa); 0x004c984d jmp 0x4c9ae1 | goto label_11; | label_8: 0x004c9860 cmp qword [rip + 0x24efb8], 0 | 0x004c9868 mov ebx, r13d | ebx = r13d; | if (*(obj.Z) == 0) { 0x004c986b jne 0x4c987d | 0x004c986d mov rax, qword [rip + 0x287a44] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c9874 test rax, rax | | if (rax == 0) { 0x004c9877 je 0x4c9983 | goto label_12; | } | } 0x004c987d cmp qword [rsp + 0x18], 6 | | if (*((rsp + 0x18)) < 6) { 0x004c9883 jb 0x4c9ae1 | goto label_11; | } | label_1: 0x004c9889 lea rax, [r15*8 + 0x74f860] | rax = r15*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c9891 lea rcx, [r14*8 + 0x74f860] | rcx = r14*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c9899 mov rbx, qword [rsp + 0x48] | rbx = *((rsp + 0x48)); 0x004c989e lea edx, [rbx + r15] | edx = rbx + r15; 0x004c98a2 movsxd r9, edx | r9 = (int64_t) edx; 0x004c98a5 shl r9, 3 | r9 <<= 3; 0x004c98a9 lea rdi, [r15*8] | rdi = r15*8; 0x004c98b1 mov r10, r9 | r10 = r9; 0x004c98b4 sub r10, rdi | r10 -= rdi; 0x004c98b7 add r10, 0xfffffffffffffff8 | r10 += 0xfffffffffffffff8; 0x004c98bb cmp r10, 0x18 | | if (r10 >= 0x18) { 0x004c98bf jae 0x4c993d | goto label_13; | } 0x004c98c1 mov ebx, r13d | ebx = r13d; 0x004c98c4 jmp 0x4c9ac0 | goto label_14; 0x004c98c9 mov r13d, 1 | r13d = 1; 0x004c98cf mov rax, qword [rip + 0x2879e2] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c98d6 test rax, rax | 0x004c98d9 jne 0x4c97e3 | | } 0x004c98df call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c98e4 jmp 0x4c97e3 | goto label_0; | label_13: 0x004c993d mov r11, rbp | r11 = rbp; 0x004c9940 lea rsi, [r14*8 + 0x74f860] | rsi = r14*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c9948 lea edx, [rbx + r15] | edx = rbx + r15; 0x004c994c movsxd rdx, edx | rdx = (int64_t) edx; 0x004c994f lea rbp, [rdx*8 + 0x74f860] | rbp = rdx*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c9957 cmp rsi, rbp | | if (rsi >= rbp) { 0x004c995a jae 0x4c9999 | goto label_15; | } 0x004c995c shl rdx, 3 | rdx <<= 3; 0x004c9960 sub rdx, rdi | rdx -= rdi; 0x004c9963 lea rdx, [rdx + r14*8 + 0x74f860] | rdx = rdx + r14*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c996b lea rsi, [r15*8 + 0x74f860] | rsi = r15*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c9973 cmp rsi, rdx | | if (rsi >= rdx) { 0x004c9976 jae 0x4c9999 | goto label_15; | } 0x004c9978 mov rbp, r11 | 0x004c997b mov ebx, r13d | ebx = r13d; 0x004c997e jmp 0x4c9ac0 | goto label_14; | label_12: 0x004c9983 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c9988 cmp qword [rsp + 0x18], 6 | | if (*((rsp + 0x18)) >= 6) { 0x004c998e jae 0x4c9889 | goto label_1; | } 0x004c9994 jmp 0x4c9ae1 | goto label_11; | label_15: 0x004c9999 shr r10, 3 | r10 >>= 3; 0x004c999d inc r10 | r10++; 0x004c99a0 mov r8, r10 | r8 = r10; 0x004c99a3 and r8, 0xfffffffffffffffc | r8 &= 0xfffffffffffffffc; 0x004c99a7 lea rsi, [r8 - 4] | rsi = r8 - 4; 0x004c99ab mov rbp, rsi | 0x004c99ae shr rbp, 2 | rbp >>= 2; 0x004c99b2 inc rbp | rbp++; 0x004c99b5 mov edx, ebp | edx = ebp; 0x004c99b7 and edx, 3 | edx &= 3; 0x004c99ba cmp rsi, 0xc | | if (rsi < 0xc) { 0x004c99be jae 0x4c99c7 | 0x004c99c0 xor ebx, ebx | ebx = 0; 0x004c99c2 jmp 0x4c9a50 | goto label_16; | } 0x004c99c7 and rbp, 0xfffffffffffffffc | rbp &= 0xfffffffffffffffc; 0x004c99cb neg rbp | rbp = -rbp; 0x004c99ce mov esi, 0x74f860 | esi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c99d3 xor ebx, ebx | ebx = 0; 0x004c99d5 nop word cs:[rax + rax] | 0x004c99df nop | | do { 0x004c99e0 movups xmm0, xmmword [rsi + r15*8] | __asm ("movups xmm0, xmmword [rsi + r15*8]"); 0x004c99e5 movups xmm1, xmmword [rsi + r15*8 + 0x10] | __asm ("movups xmm1, xmmword [rsi + r15*8 + 0x10]"); 0x004c99eb movups xmmword [rsi + r14*8], xmm0 | __asm ("movups xmmword [rsi + r14*8], xmm0"); 0x004c99f0 movups xmmword [rsi + r14*8 + 0x10], xmm1 | __asm ("movups xmmword [rsi + r14*8 + 0x10], xmm1"); 0x004c99f6 movups xmm0, xmmword [rsi + r15*8 + 0x20] | __asm ("movups xmm0, xmmword [rsi + r15*8 + 0x20]"); 0x004c99fc movups xmm1, xmmword [rsi + r15*8 + 0x30] | __asm ("movups xmm1, xmmword [rsi + r15*8 + 0x30]"); 0x004c9a02 movups xmmword [rsi + r14*8 + 0x20], xmm0 | __asm ("movups xmmword [rsi + r14*8 + 0x20], xmm0"); 0x004c9a08 movups xmmword [rsi + r14*8 + 0x30], xmm1 | __asm ("movups xmmword [rsi + r14*8 + 0x30], xmm1"); 0x004c9a0e movups xmm0, xmmword [rsi + r15*8 + 0x40] | __asm ("movups xmm0, xmmword [rsi + r15*8 + 0x40]"); 0x004c9a14 movups xmm1, xmmword [rsi + r15*8 + 0x50] | __asm ("movups xmm1, xmmword [rsi + r15*8 + 0x50]"); 0x004c9a1a movups xmmword [rsi + r14*8 + 0x40], xmm0 | __asm ("movups xmmword [rsi + r14*8 + 0x40], xmm0"); 0x004c9a20 movups xmmword [rsi + r14*8 + 0x50], xmm1 | __asm ("movups xmmword [rsi + r14*8 + 0x50], xmm1"); 0x004c9a26 movdqu xmm0, xmmword [rsi + r15*8 + 0x60] | __asm ("movdqu xmm0, xmmword [rsi + r15*8 + 0x60]"); 0x004c9a2d movdqu xmm1, xmmword [rsi + r15*8 + 0x70] | __asm ("movdqu xmm1, xmmword [rsi + r15*8 + 0x70]"); 0x004c9a34 movdqu xmmword [rsi + r14*8 + 0x60], xmm0 | __asm ("movdqu xmmword [rsi + r14*8 + 0x60], xmm0"); 0x004c9a3b movdqu xmmword [rsi + r14*8 + 0x70], xmm1 | __asm ("movdqu xmmword [rsi + r14*8 + 0x70], xmm1"); 0x004c9a42 add rbx, 0x10 | rbx += 0x10; 0x004c9a46 sub rsi, 0xffffffffffffff80 | rsi -= 0xffffffffffffff80; 0x004c9a4a add rbp, 4 | rbp += 4; 0x004c9a4e jne 0x4c99e0 | | } while (rbp != 0); | label_16: 0x004c9a50 test rdx, rdx | | if (rdx == 0) { 0x004c9a53 je 0x4c9aa3 | goto label_17; | } 0x004c9a55 shl r14, 3 | r14 <<= 3; 0x004c9a59 lea rsi, [rbx*8 + 0x74f860] | rsi = rbx*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c9a61 neg rdx | rdx = -rdx; 0x004c9a64 nop word cs:[rax + rax] | 0x004c9a6e nop | | do { 0x004c9a70 movdqu xmm0, xmmword [rdi + rbx*8 + 0x74f860] | __asm ("movdqu xmm0, xmmword [rdi + rbx*8 + obj.testCopyConstructWithIterators_int__bool__bool__bool_::u]"); 0x004c9a79 movdqu xmm1, xmmword [rdi + rbx*8 + 0x74f870] | __asm ("movdqu xmm1, xmmword [rdi + rbx*8 + 0x74f870]"); 0x004c9a82 movdqu xmmword [r14 + rbx*8 + 0x74f860], xmm0 | __asm ("movdqu xmmword [r14 + rbx*8 + obj.testCopyConstructWithIterators_int__bool__bool__bool_::u], xmm0"); 0x004c9a8c movdqu xmmword [r14 + rbx*8 + 0x74f870], xmm1 | __asm ("movdqu xmmword [r14 + rbx*8 + 0x74f870], xmm1"); 0x004c9a96 add rbx, 4 | rbx += 4; 0x004c9a9a add rsi, 0x20 | rsi += 0x20; 0x004c9a9e inc rdx | rdx++; 0x004c9aa1 jne 0x4c9a70 | | } while (rdx != 0); | label_17: 0x004c9aa3 cmp r10, r8 | 0x004c9aa6 mov rbp, r11 | 0x004c9aa9 mov ebx, r13d | ebx = r13d; | if (r10 == r8) { 0x004c9aac je 0x4c9ae1 | goto label_11; | } 0x004c9aae lea rax, [rax + r8*8] | rax = rax + r8*8; 0x004c9ab2 lea rcx, [rcx + r8*8] | rcx = rcx + r8*8; 0x004c9ab6 nop word cs:[rax + rax] | | label_14: 0x004c9ac0 sub r9, rax | r9 -= rax; 0x004c9ac3 lea rdx, [r9 + 0x74f860] | rdx = r9 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c9aca xor esi, esi | esi = 0; 0x004c9acc nop dword [rax] | | do { 0x004c9ad0 mov rdi, qword [rax + rsi] | rdi = *((rax + rsi)); 0x004c9ad4 mov qword [rcx + rsi], rdi | *((rcx + rsi)) = rdi; 0x004c9ad8 add rsi, 8 | rsi += 8; 0x004c9adc cmp rdx, rsi | 0x004c9adf jne 0x4c9ad0 | | } while (rdx != rsi); | label_11: 0x004c9ae1 cmp byte [rip + 0x24eea8], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c9ae8 je 0x4c9b0b | 0x004c9aea mov edx, dword [rip + 0x24eeb4] | edx = numCopyCtorCalls; 0x004c9af0 sub edx, r12d | edx -= r12d; 0x004c9af3 mov ecx, dword [rip + 0x24eeb3] | ecx = numCharCtorCalls; 0x004c9af9 sub ecx, dword [rsp + 0x14] | ecx -= *((rsp + 0x14)); 0x004c9afd mov edi, 0x4f5c2a | 0x004c9b02 mov esi, ebx | esi = ebx; 0x004c9b04 xor eax, eax | eax = 0; 0x004c9b06 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_10: 0x004c9b0b cmp byte [rsp + 0x40], 0 | | if (*((rsp + 0x40)) == 0) { 0x004c9b10 je 0x4c9b70 | goto label_18; | } 0x004c9b12 cmp r12d, dword [rip + 0x24ee8b] | | if (r12d != *(obj.numCopyCtorCalls)) { 0x004c9b19 je 0x4c9b44 | 0x004c9b1b mov edi, 0x4f4c78 | 0x004c9b20 mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004c9b25 mov esi, 0x1005 | esi = 0x1005; 0x004c9b2a xor eax, eax | eax = 0; 0x004c9b2c call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c9b31 mov eax, dword [rip + 0x24ee61] | eax = (anonymous namespace)::testStatus; 0x004c9b37 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c9b3a ja 0x4c9b44 | goto label_19; | } 0x004c9b3c inc eax | eax++; 0x004c9b3e mov dword [rip + 0x24ee54], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_19: 0x004c9b44 mov eax, dword [rsp + 0x14] | eax = *((rsp + 0x14)); 0x004c9b48 cmp eax, dword [rip + 0x24ee5e] | | if (eax == *(obj.numCharCtorCalls)) { 0x004c9b4e je 0x4c9680 | goto label_2; | } 0x004c9b54 mov edi, 0x4f4c78 | edi = "Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"; 0x004c9b59 mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004c9b5e mov esi, 0x1006 | esi = 0x1006; 0x004c9b63 jmp 0x4c9bc6 | goto label_20; | label_18: 0x004c9b70 add r12d, dword [rsp + 0x48] | r12d += *((rsp + 0x48)); 0x004c9b75 cmp r12d, dword [rip + 0x24ee28] | | if (r12d > *(obj.numCopyCtorCalls)) { 0x004c9b7c jle 0x4c9ba7 | 0x004c9b7e mov edi, 0x4f4c78 | 0x004c9b83 mov edx, 0x4f5c78 | edx = "NUM_COPIES + NE <= numCopyCtorCalls"; 0x004c9b88 mov esi, 0x1009 | esi = 0x1009; 0x004c9b8d xor eax, eax | eax = 0; 0x004c9b8f call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c9b94 mov eax, dword [rip + 0x24edfe] | eax = (anonymous namespace)::testStatus; 0x004c9b9a cmp eax, 0x64 | | if (eax > 0x64) { 0x004c9b9d ja 0x4c9ba7 | goto label_21; | } 0x004c9b9f inc eax | eax++; 0x004c9ba1 mov dword [rip + 0x24edf1], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_21: 0x004c9ba7 mov eax, dword [rsp + 0x14] | eax = *((rsp + 0x14)); 0x004c9bab cmp eax, dword [rip + 0x24edfb] | | if (eax == *(obj.numCharCtorCalls)) { 0x004c9bb1 je 0x4c9680 | goto label_2; | } 0x004c9bb7 mov edi, 0x4f4c78 | 0x004c9bbc mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004c9bc1 mov esi, 0x100a | esi = 0x100a; | label_20: 0x004c9bc6 xor eax, eax | eax = 0; 0x004c9bc8 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c9bcd mov eax, dword [rip + 0x24edc5] | eax = (anonymous namespace)::testStatus; 0x004c9bd3 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c9bd6 ja 0x4c9680 | goto label_2; | } 0x004c9bdc inc eax | eax++; 0x004c9bde mov dword [rip + 0x24edb4], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004c9be4 jmp 0x4c9680 | goto label_2; | label_6: 0x004c9be9 cmp byte [rip + 0x24eda6], 0 | | if (*(obj.verbose) != 0) { 0x004c9bf0 je 0x4c9bfc | 0x004c9bf2 mov edi, 0x4f67d2 | 0x004c9bf7 call 0x401710 | puts ("\t\tfrom different type."); | } 0x004c9bfc xor r12d, r12d | r12d = 0; 0x004c9bff jmp 0x4c9c37 | goto label_22; | label_4: 0x004c9c10 mov edi, 0x74f860 | 0x004c9c15 mov rsi, rbx | 0x004c9c18 call 0x4e2960 | voidverify(int**,char const*) (obj.testCopyConstructWithIterators_int__bool__bool__bool_::u, rbx); 0x004c9c1d mov edi, 0x74f860 | 0x004c9c22 mov rsi, rbx | 0x004c9c25 call 0x4e2ba0 | voidcleanup(int**,char const*) (obj.testCopyConstructWithIterators_int__bool__bool__bool_::u, rbx); 0x004c9c2a inc r12 | r12++; 0x004c9c2d cmp r12, 0x1e | | if (r12 == 0x1e) { 0x004c9c31 je 0x4ca25d | goto label_23; | } | label_22: 0x004c9c37 lea rbx, [r12*8] | rbx = r12*8; 0x004c9c3f mov rbp, qword [rbx + rbx*4 + 0x4f3b08] | rbp = *((rbx + rbx*4 + 0x4f3b08)); 0x004c9c47 mov rdi, rbp | 0x004c9c4a call 0x401790 | eax = strlen (*((rbx + rbx*4 + 0x4f3b08))); 0x004c9c4f cmp eax, 0x11 | | if (eax >= 0x11) { 0x004c9c52 jl 0x4c9c7d | 0x004c9c54 mov edi, 0x4f4c78 | 0x004c9c59 mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004c9c5e mov esi, 0x1019 | esi = 0x1019; 0x004c9c63 xor eax, eax | eax = 0; 0x004c9c65 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c9c6a mov eax, dword [rip + 0x24ed28] | eax = (anonymous namespace)::testStatus; 0x004c9c70 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c9c73 ja 0x4c9c7d | goto label_24; | } 0x004c9c75 inc eax | eax++; 0x004c9c77 mov dword [rip + 0x24ed1b], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_24: 0x004c9c7d mov rdi, rbp | 0x004c9c80 call 0x401790 | rax = strlen (rbp); 0x004c9c85 cmp rax, 0x14 | | if (rax >= 0x14) { 0x004c9c89 jb 0x4c9cb4 | 0x004c9c8b mov edi, 0x4f4c78 | 0x004c9c90 mov edx, 0x4f5c9c | edx = "SPEC_CE_LEN > std::strlen(SPEC)"; 0x004c9c95 mov esi, 0x101c | esi = 0x101c; 0x004c9c9a xor eax, eax | eax = 0; 0x004c9c9c call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c9ca1 mov eax, dword [rip + 0x24ecf1] | eax = (anonymous namespace)::testStatus; 0x004c9ca7 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c9caa ja 0x4c9cb4 | goto label_25; | } 0x004c9cac inc eax | eax++; 0x004c9cae mov dword [rip + 0x24ece4], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_25: 0x004c9cb4 mov qword [rsp + 0x18], r12 | *((rsp + 0x18)) = r12; 0x004c9cb9 pxor xmm0, xmm0 | xmm0 = 0; 0x004c9cbd movdqa xmmword [rsp + 0x20], xmm0 | __asm ("movdqa xmmword [rsp + 0x20], xmm0"); 0x004c9cc3 mov dword [rsp + 0x30], 0 | *((rsp + 0x30)) = 0; 0x004c9ccb mov al, byte [rbp] | al = *(rbp); 0x004c9cce test al, al | | if (al == 0) { 0x004c9cd0 je 0x4c9cf0 | goto label_26; | } 0x004c9cd2 xor ecx, ecx | ecx = 0; 0x004c9cd4 nop word cs:[rax + rax] | 0x004c9cde nop | | do { 0x004c9ce0 mov byte [rsp + rcx + 0x20], al | *((rsp + rcx + 0x20)) = al; 0x004c9ce4 movzx eax, byte [rbp + rcx + 1] | eax = *((rbp + rcx + 1)); 0x004c9ce9 inc rcx | rcx++; 0x004c9cec test al, al | 0x004c9cee jne 0x4c9ce0 | | } while (al != 0); | label_26: 0x004c9cf0 mov r14d, dword [rbx + rbx*4 + 0x4f3b00] | r14d = *((rbx + rbx*4 + obj.DATA_3)); 0x004c9cf8 movsxd r13, dword [rbx + rbx*4 + 0x4f3b10] | r13 = *((rbx + rbx*4 + 0x4f3b10)); 0x004c9d00 movsxd r12, dword [rbx + rbx*4 + 0x4f3b14] | r12 = *((rbx + rbx*4 + 0x4f3b14)); 0x004c9d08 movsxd r15, dword [rbx + rbx*4 + 0x4f3b18] | r15 = *((rbx + rbx*4 + 0x4f3b18)); 0x004c9d10 mov rbx, qword [rbx + rbx*4 + 0x4f3b20] | rbx = *((rbx + rbx*4 + 0x4f3b20)); 0x004c9d18 cmp byte [rip + 0x24ec71], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c9d1f je 0x4c9d40 | 0x004c9d21 mov qword [rsp], rbx | *(rsp) = rbx; 0x004c9d25 mov edi, 0x4f5ab7 | 0x004c9d2a mov esi, r14d | esi = r14d; 0x004c9d2d mov rdx, rbp | rdx = rbp; 0x004c9d30 mov ecx, r13d | ecx = r13d; 0x004c9d33 mov r8d, r12d | r8d = r12d; 0x004c9d36 mov r9d, r15d | r9d = r15d; 0x004c9d39 xor eax, eax | eax = 0; 0x004c9d3b call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004c9d40 mov edi, 0x74f860 | 0x004c9d45 mov rsi, rbp | 0x004c9d48 call 0x4e2880 | int*&gg(int**,char const*) (obj.testCopyConstructWithIterators_int__bool__bool__bool_::u, rbp); 0x004c9d4d mov edi, 0x74f860 | 0x004c9d52 mov rsi, rbp | 0x004c9d55 call 0x4e2960 | voidverify(int**,char const*) (obj.testCopyConstructWithIterators_int__bool__bool__bool_::u, rbp); 0x004c9d5a mov eax, dword [rip + 0x24ec44] | eax = numCopyCtorCalls; 0x004c9d60 mov dword [rsp + 0x14], eax | *((rsp + 0x14)) = eax; 0x004c9d64 mov eax, dword [rip + 0x24ec42] | eax = numCharCtorCalls; 0x004c9d6a mov dword [rsp + 0x48], eax | *((rsp + 0x48)) = eax; 0x004c9d6e cmp byte [rsp + 0x54], 0 | | if (*((rsp + 0x54)) == 0) { 0x004c9d73 je 0x4c9e40 | goto label_27; | } 0x004c9d79 cmp byte [rip + 0x24ec10], 0 | 0x004c9d80 mov ebp, r14d | | if (*(obj.veryVerbose) != 0) { 0x004c9d83 je 0x4c9d98 | 0x004c9d85 cmp dword [rip + 0x24e810], 0 | | if (*(obj.testCopyConstructWithIterators_int__bool__bool__bool_::firstTime) == 0) { 0x004c9d8c je 0x4c9d98 | goto label_28; | } 0x004c9d8e mov edi, 0x4f425a | 0x004c9d93 call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_28: 0x004c9d98 mov dword [rip + 0x24e7fa], 0 | *(obj.testCopyConstructWithIterators_int__bool__bool__bool_::firstTime) = 0; 0x004c9da2 cmp byte [rip + 0x24ebec], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c9da9 je 0x4c9db5 | 0x004c9dab mov edi, 0x4f4281 | 0x004c9db0 call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004c9db5 mov rax, qword [rip + 0x24ea64] | rax = Z; 0x004c9dbc mov qword [rsp + 0x58], 0x4f6858 | *((rsp + 0x58)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004c9dc5 mov qword [rsp + 0x60], rax | *((rsp + 0x60)) = rax; 0x004c9dca mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004c9dd2 test rax, rax | 0x004c9dd5 je 0x4c9ecd | | while (rax != 0) { | label_3: 0x004c9ddb cmp qword [rsp + 0x18], 6 | | if (*((rsp + 0x18)) < 6) { 0x004c9de1 jb 0x4ca1b1 | goto label_29; | } 0x004c9de7 lea rcx, [rsp + r13 + 0x20] | rcx = rsp + r13 + 0x20; 0x004c9dec lea rsi, [r15*8 + 0x74f860] | rsi = r15*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c9df4 lea eax, [r13 + r12] | eax = r13 + r12; 0x004c9df9 movsxd r9, eax | r9 = (int64_t) eax; 0x004c9dfc mov r10, r9 | r10 = r9; 0x004c9dff sub r10, r13 | r10 -= r13; 0x004c9e02 cmp r10, 4 | | if (r10 < 4) { 0x004c9e06 jb 0x4ca196 | goto label_30; | } 0x004c9e0c mov r11, rbx | r11 = rbx; 0x004c9e0f mov r8, r10 | r8 = r10; 0x004c9e12 and r8, 0xfffffffffffffffc | r8 &= 0xfffffffffffffffc; 0x004c9e16 lea rax, [r8 - 4] | rax = r8 - 4; 0x004c9e1a mov rbp, rax | 0x004c9e1d shr rbp, 2 | rbp >>= 2; 0x004c9e21 inc rbp | rbp++; 0x004c9e24 mov edi, ebp | edi = ebp; 0x004c9e26 and edi, 3 | edi &= 3; 0x004c9e29 cmp rax, 0xc | | if (rax >= 0xc) { 0x004c9e2d jae 0x4ca086 | goto label_31; | } 0x004c9e33 xor ebx, ebx | ebx = 0; 0x004c9e35 jmp 0x4ca135 | goto label_32; | label_27: 0x004c9e40 cmp qword [rip + 0x24e9d8], 0 | 0x004c9e48 mov ebp, r14d | 0x004c9e4b mov r11, r12 | r11 = r12; | if (*(obj.Z) == 0) { 0x004c9e4e jne 0x4c9e70 | 0x004c9e50 mov rax, qword [rip + 0x287461] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c9e57 test rax, rax | | if (rax != 0) { 0x004c9e5a jne 0x4c9e70 | goto label_33; | } 0x004c9e5c call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c9e61 mov r11, r12 | r11 = r12; 0x004c9e64 nop word cs:[rax + rax] | 0x004c9e6e nop | | } | label_33: 0x004c9e70 mov r12, qword [rsp + 0x18] | r12 = *((rsp + 0x18)); 0x004c9e75 cmp r12, 6 | | if (r12 < 6) { 0x004c9e79 jb 0x4ca1f0 | goto label_34; | } 0x004c9e7f lea rax, [r15*8 + 0x74f860] | rax = r15*8 + obj_testCopyConstructWithIterators_int__bool__bool__bool_::u; 0x004c9e87 lea rcx, [rsp + r13 + 0x20] | rcx = rsp + r13 + 0x20; 0x004c9e8c add r11, r13 | r11 += r13; 0x004c9e8f mov r9, r11 | r9 = r11; 0x004c9e92 sub r9, r13 | r9 -= r13; 0x004c9e95 cmp r9, 4 | | if (r9 < 4) { 0x004c9e99 jb 0x4ca05a | goto label_35; | } 0x004c9e9f mov r10, rbx | r10 = rbx; 0x004c9ea2 mov r8, r9 | r8 = r9; 0x004c9ea5 and r8, 0xfffffffffffffffc | r8 &= 0xfffffffffffffffc; 0x004c9ea9 lea rsi, [r8 - 4] | rsi = r8 - 4; 0x004c9ead mov rdi, rsi | rdi = rsi; 0x004c9eb0 shr rdi, 2 | rdi >>= 2; 0x004c9eb4 inc rdi | rdi++; 0x004c9eb7 mov ebp, edi | 0x004c9eb9 and ebp, 3 | ebp &= 3; 0x004c9ebc cmp rsi, 0xc | | if (rsi >= 0xc) { 0x004c9ec0 jae 0x4c9f4d | goto label_36; | } 0x004c9ec6 xor ebx, ebx | ebx = 0; 0x004c9ec8 jmp 0x4c9ff5 | goto label_37; 0x004c9ecd mov eax, 1 | eax = 1; 0x004c9ed2 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x004c9ed7 mov rax, qword [rip + 0x2873da] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c9ede test rax, rax | 0x004c9ee1 jne 0x4c9ddb | | } 0x004c9ee7 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c9eec jmp 0x4c9ddb | goto label_3; | label_36: 0x004c9f4d lea rdx, [rsp + 0x2e] | rdx = rsp + 0x2e; 0x004c9f52 lea rsi, [rdx + r13] | rsi = rdx + r13; 0x004c9f56 and rdi, 0xfffffffffffffffc | rdi &= 0xfffffffffffffffc; 0x004c9f5a neg rdi | rdi = -rdi; 0x004c9f5d xor ebx, ebx | ebx = 0; 0x004c9f5f nop | | do { 0x004c9f60 pmovsxbq xmm0, word [rsi + rbx - 0xe] | __asm ("pmovsxbq xmm0, word [rsi + rbx - 0xe]"); 0x004c9f67 pmovsxbq xmm1, word [rsi + rbx - 0xc] | __asm ("pmovsxbq xmm1, word [rsi + rbx - 0xc]"); 0x004c9f6e lea rdx, [r15*8] | rdx = r15*8; 0x004c9f76 movdqu xmmword [rdx + rbx*8 + 0x74f860], xmm0 | __asm ("movdqu xmmword [rdx + rbx*8 + obj.testCopyConstructWithIterators_int__bool__bool__bool_::u], xmm0"); 0x004c9f7f movdqu xmmword [rdx + rbx*8 + 0x74f870], xmm1 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f870], xmm1"); 0x004c9f88 pmovsxbq xmm0, word [rsi + rbx - 0xa] | __asm ("pmovsxbq xmm0, word [rsi + rbx - 0xa]"); 0x004c9f8f pmovsxbq xmm1, word [rsi + rbx - 8] | __asm ("pmovsxbq xmm1, word [rsi + rbx - 8]"); 0x004c9f96 movdqu xmmword [rdx + rbx*8 + 0x74f880], xmm0 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f880], xmm0"); 0x004c9f9f movdqu xmmword [rdx + rbx*8 + 0x74f890], xmm1 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f890], xmm1"); 0x004c9fa8 pmovsxbq xmm0, word [rsi + rbx - 6] | __asm ("pmovsxbq xmm0, word [rsi + rbx - 6]"); 0x004c9faf pmovsxbq xmm1, word [rsi + rbx - 4] | __asm ("pmovsxbq xmm1, word [rsi + rbx - 4]"); 0x004c9fb6 movdqu xmmword [rdx + rbx*8 + 0x74f8a0], xmm0 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f8a0], xmm0"); 0x004c9fbf movdqu xmmword [rdx + rbx*8 + 0x74f8b0], xmm1 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f8b0], xmm1"); 0x004c9fc8 pmovsxbq xmm0, word [rsi + rbx - 2] | __asm ("pmovsxbq xmm0, word [rsi + rbx - 2]"); 0x004c9fcf pmovsxbq xmm1, word [rsi + rbx] | __asm ("pmovsxbq xmm1, word [rsi + rbx]"); 0x004c9fd5 movdqu xmmword [rdx + rbx*8 + 0x74f8c0], xmm0 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f8c0], xmm0"); 0x004c9fde movdqu xmmword [rdx + rbx*8 + 0x74f8d0], xmm1 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f8d0], xmm1"); 0x004c9fe7 add rbx, 0x10 | rbx += 0x10; 0x004c9feb add rdi, 4 | rdi += 4; 0x004c9fef jne 0x4c9f60 | | } while (rdi != 0); | label_37: 0x004c9ff5 test rbp, rbp | | if (rbp == 0) { 0x004c9ff8 je 0x4ca044 | goto label_38; | } 0x004c9ffa add r13, rbx | r13 += rbx; 0x004c9ffd lea rdx, [rsp + 0x22] | rdx = rsp + 0x22; 0x004ca002 add r13, rdx | r13 += rdx; 0x004ca005 shl r15, 3 | r15 <<= 3; 0x004ca009 lea rsi, [r15 + rbx*8 + 0x74f870] | rsi = r15 + rbx*8 + 0x74f870; 0x004ca011 shl rbp, 2 | rbp <<= 2; 0x004ca015 xor edi, edi | edi = 0; 0x004ca017 nop word [rax + rax] | | do { 0x004ca020 pmovsxbq xmm0, word [r13 + rdi - 2] | __asm ("pmovsxbq xmm0, word [r13 + rdi - 2]"); 0x004ca028 pmovsxbq xmm1, word [r13 + rdi] | __asm ("pmovsxbq xmm1, word [r13 + rdi]"); 0x004ca030 movdqu xmmword [rsi + rdi*8 - 0x10], xmm0 | __asm ("movdqu xmmword [rsi + rdi*8 - 0x10], xmm0"); 0x004ca036 movdqu xmmword [rsi + rdi*8], xmm1 | __asm ("movdqu xmmword [rsi + rdi*8], xmm1"); 0x004ca03b add rdi, 4 | rdi += 4; 0x004ca03f cmp rbp, rdi | 0x004ca042 jne 0x4ca020 | | } while (rbp != rdi); | label_38: 0x004ca044 cmp r9, r8 | 0x004ca047 mov rbx, r10 | rbx = r10; 0x004ca04a mov ebp, r14d | | if (r9 == r8) { 0x004ca04d je 0x4ca1f0 | goto label_34; | } 0x004ca053 add rcx, r8 | rcx += r8; 0x004ca056 lea rax, [rax + r8*8] | rax = rax + r8*8; | label_35: 0x004ca05a sub r11, rcx | r11 -= rcx; 0x004ca05d lea rdx, [rsp + r11 + 0x20] | rdx = rsp + r11 + 0x20; 0x004ca062 xor esi, esi | esi = 0; 0x004ca064 nop word cs:[rax + rax] | 0x004ca06e nop | | do { 0x004ca070 movsx rdi, byte [rcx + rsi] | rdi = *((rcx + rsi)); 0x004ca075 mov qword [rax + rsi*8], rdi | *((rax + rsi*8)) = rdi; 0x004ca079 inc rsi | rsi++; 0x004ca07c cmp rdx, rsi | 0x004ca07f jne 0x4ca070 | | } while (rdx != rsi); 0x004ca081 jmp 0x4ca1f0 | goto label_34; | label_31: 0x004ca086 lea rax, [rsp + 0x2e] | rax = rsp + 0x2e; 0x004ca08b add rax, r13 | rax += r13; 0x004ca08e and rbp, 0xfffffffffffffffc | rbp &= 0xfffffffffffffffc; 0x004ca092 neg rbp | rbp = -rbp; 0x004ca095 xor ebx, ebx | ebx = 0; 0x004ca097 nop word [rax + rax] | | do { 0x004ca0a0 pmovsxbq xmm0, word [rax + rbx - 0xe] | __asm ("pmovsxbq xmm0, word [rax + rbx - 0xe]"); 0x004ca0a7 pmovsxbq xmm1, word [rax + rbx - 0xc] | __asm ("pmovsxbq xmm1, word [rax + rbx - 0xc]"); 0x004ca0ae lea rdx, [r15*8] | rdx = r15*8; 0x004ca0b6 movdqu xmmword [rdx + rbx*8 + 0x74f860], xmm0 | __asm ("movdqu xmmword [rdx + rbx*8 + obj.testCopyConstructWithIterators_int__bool__bool__bool_::u], xmm0"); 0x004ca0bf movdqu xmmword [rdx + rbx*8 + 0x74f870], xmm1 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f870], xmm1"); 0x004ca0c8 pmovsxbq xmm0, word [rax + rbx - 0xa] | __asm ("pmovsxbq xmm0, word [rax + rbx - 0xa]"); 0x004ca0cf pmovsxbq xmm1, word [rax + rbx - 8] | __asm ("pmovsxbq xmm1, word [rax + rbx - 8]"); 0x004ca0d6 movdqu xmmword [rdx + rbx*8 + 0x74f880], xmm0 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f880], xmm0"); 0x004ca0df movdqu xmmword [rdx + rbx*8 + 0x74f890], xmm1 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f890], xmm1"); 0x004ca0e8 pmovsxbq xmm0, word [rax + rbx - 6] | __asm ("pmovsxbq xmm0, word [rax + rbx - 6]"); 0x004ca0ef pmovsxbq xmm1, word [rax + rbx - 4] | __asm ("pmovsxbq xmm1, word [rax + rbx - 4]"); 0x004ca0f6 movdqu xmmword [rdx + rbx*8 + 0x74f8a0], xmm0 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f8a0], xmm0"); 0x004ca0ff movdqu xmmword [rdx + rbx*8 + 0x74f8b0], xmm1 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f8b0], xmm1"); 0x004ca108 pmovsxbq xmm0, word [rax + rbx - 2] | __asm ("pmovsxbq xmm0, word [rax + rbx - 2]"); 0x004ca10f pmovsxbq xmm1, word [rax + rbx] | __asm ("pmovsxbq xmm1, word [rax + rbx]"); 0x004ca115 movdqu xmmword [rdx + rbx*8 + 0x74f8c0], xmm0 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f8c0], xmm0"); 0x004ca11e movdqu xmmword [rdx + rbx*8 + 0x74f8d0], xmm1 | __asm ("movdqu xmmword [rdx + rbx*8 + 0x74f8d0], xmm1"); 0x004ca127 add rbx, 0x10 | rbx += 0x10; 0x004ca12b add rbp, 4 | rbp += 4; 0x004ca12f jne 0x4ca0a0 | | } while (rbp != 0); | label_32: 0x004ca135 test rdi, rdi | | if (rdi == 0) { 0x004ca138 je 0x4ca184 | goto label_39; | } 0x004ca13a add r13, rbx | r13 += rbx; 0x004ca13d lea rax, [rsp + 0x22] | rax = rsp + 0x22; 0x004ca142 add r13, rax | r13 += rax; 0x004ca145 shl r15, 3 | r15 <<= 3; 0x004ca149 lea rax, [r15 + rbx*8 + 0x74f870] | rax = r15 + rbx*8 + 0x74f870; 0x004ca151 shl rdi, 2 | rdi <<= 2; 0x004ca155 xor ebp, ebp | ebp = 0; 0x004ca157 nop word [rax + rax] | | do { 0x004ca160 pmovsxbq xmm0, word [r13 + rbp - 2] | __asm ("pmovsxbq xmm0, word [r13 + rbp - 2]"); 0x004ca168 pmovsxbq xmm1, word [r13 + rbp] | __asm ("pmovsxbq xmm1, word [r13 + rbp]"); 0x004ca170 movdqu xmmword [rax + rbp*8 - 0x10], xmm0 | __asm ("movdqu xmmword [rax + rbp*8 - 0x10], xmm0"); 0x004ca176 movdqu xmmword [rax + rbp*8], xmm1 | __asm ("movdqu xmmword [rax + rbp*8], xmm1"); 0x004ca17b add rbp, 4 | rbp += 4; 0x004ca17f cmp rdi, rbp | 0x004ca182 jne 0x4ca160 | | } while (rdi != rbp); | label_39: 0x004ca184 cmp r10, r8 | 0x004ca187 mov rbx, r11 | rbx = r11; 0x004ca18a mov ebp, r14d | | if (r10 == r8) { 0x004ca18d je 0x4ca1b1 | goto label_29; | } 0x004ca18f add rcx, r8 | rcx += r8; 0x004ca192 lea rsi, [rsi + r8*8] | rsi = rsi + r8*8; | label_30: 0x004ca196 sub r9, rcx | r9 -= rcx; 0x004ca199 lea rax, [rsp + r9 + 0x20] | rax = rsp + r9 + 0x20; 0x004ca19e xor edi, edi | edi = 0; | do { 0x004ca1a0 movsx rdx, byte [rcx + rdi] | rdx = *((rcx + rdi)); 0x004ca1a5 mov qword [rsi + rdi*8], rdx | *((rsi + rdi*8)) = rdx; 0x004ca1a9 inc rdi | rdi++; 0x004ca1ac cmp rax, rdi | 0x004ca1af jne 0x4ca1a0 | | } while (rax != rdi); | label_29: 0x004ca1b1 mov rax, qword [rsp + 0x58] | rax = *((rsp + 0x58)); 0x004ca1b6 lea rdi, [rsp + 0x58] | rdi = rsp + 0x58; 0x004ca1bb mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004ca1c2 call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004ca1c5 cmp byte [rip + 0x24e7c9], 0 | 0x004ca1cc mov r12, qword [rsp + 0x18] | r12 = *((rsp + 0x18)); | if (*(obj.veryVeryVerbose) != 0) { 0x004ca1d1 je 0x4ca1dd | 0x004ca1d3 mov edi, 0x4f43e1 | 0x004ca1d8 call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004ca1dd cmp byte [rip + 0x24e7ac], 0 | | if (*(obj.veryVerbose) != 0) { 0x004ca1e4 je 0x4ca21b | 0x004ca1e6 mov edi, 0xa | 0x004ca1eb call 0x401720 | eax = putchar (0xa); | label_34: 0x004ca1f0 cmp byte [rip + 0x24e799], 0 | | if (*(obj.veryVerbose) == 0) { 0x004ca1f7 je 0x4ca21b | goto label_40; | } 0x004ca1f9 mov edx, dword [rip + 0x24e7a5] | edx = numCopyCtorCalls; 0x004ca1ff sub edx, dword [rsp + 0x14] | edx -= *((rsp + 0x14)); 0x004ca203 mov ecx, dword [rip + 0x24e7a3] | ecx = numCharCtorCalls; 0x004ca209 sub ecx, dword [rsp + 0x48] | ecx -= *((rsp + 0x48)); 0x004ca20d mov edi, 0x4f5c2a | 0x004ca212 mov esi, ebp | esi = ebp; 0x004ca214 xor eax, eax | eax = 0; 0x004ca216 call 0x401680 | printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_40: 0x004ca21b mov eax, dword [rsp + 0x14] | eax = *((rsp + 0x14)); 0x004ca21f cmp eax, dword [rip + 0x24e77f] | | if (eax == *(obj.numCopyCtorCalls)) { 0x004ca225 je 0x4c9c10 | goto label_4; | } 0x004ca22b mov edi, 0x4f4c78 | 0x004ca230 mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004ca235 mov esi, 0x103f | esi = 0x103f; 0x004ca23a xor eax, eax | eax = 0; 0x004ca23c call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004ca241 mov eax, dword [rip + 0x24e751] | eax = (anonymous namespace)::testStatus; 0x004ca247 cmp eax, 0x64 | | if (eax > 0x64) { 0x004ca24a ja 0x4c9c10 | goto label_4; | } 0x004ca250 inc eax | eax++; 0x004ca252 mov dword [rip + 0x24e740], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004ca258 jmp 0x4c9c10 | goto label_4; | label_23: 0x004ca25d add rsp, 0x68 | 0x004ca261 pop rbx | 0x004ca262 pop r12 | 0x004ca264 pop r13 | 0x004ca266 pop r14 | 0x004ca268 pop r15 | 0x004ca26a pop rbp | 0x004ca26b ret | return rax; | }