; assembly | /* r2dec pseudo code output */ | /* bslalg_arrayprimitives.t/assume @ 0x4bff70 */ | #include | ; (fcn) sym.void_testCopyConstructWithIterators_short__bool__bool__bool_ () | uint64_t void_testCopyConstructWithIterators_short_bool_bool_bool_ (uint32_t arg3, uint32_t arg2) { | int64_t var_10h; | uint32_t var_18h; | int64_t var_20h; | int64_t var_28h; | int64_t var_30h; | int64_t var_38h; | uint32_t var_3ch; | uint32_t var_40h; | uint32_t var_4ch; | int64_t var_50h; | int64_t var_58h; | int64_t var_60h; | rdx = arg3; | rsi = arg2; | /* void testCopyConstructWithIterators(bool, bool, bool) */ 0x004bff70 push rbp | 0x004bff71 push r15 | 0x004bff73 push r14 | 0x004bff75 push r13 | 0x004bff77 push r12 | 0x004bff79 push rbx | 0x004bff7a sub rsp, 0x68 | 0x004bff7e mov dword [rsp + 0x3c], edx | *((rsp + 0x3c)) = edx; 0x004bff82 mov dword [rsp + 0x4c], esi | *((rsp + 0x4c)) = esi; 0x004bff86 cmp byte [rip + 0x258a09], 0 | | if (*(obj.verbose) != 0) { 0x004bff8d je 0x4bff99 | 0x004bff8f mov edi, 0x4f67e9 | 0x004bff94 call 0x401710 | eax = puts ("\t\tfrom same type."); | } 0x004bff99 xor eax, eax | eax = 0; 0x004bff9b jmp 0x4bffcc | goto label_8; | label_1: 0x004bffa0 mov edi, 0x74f2e0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bffa5 mov rsi, rbx | rsi = rbx; 0x004bffa8 call 0x4de780 | voidverify(short*,char const*) (); 0x004bffad mov edi, 0x74f2e0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bffb2 mov rsi, rbx | rsi = rbx; 0x004bffb5 call 0x4de9c0 | voidcleanup(short*,char const*) (); 0x004bffba mov rax, qword [rsp + 0x40] | rax = *((rsp + 0x40)); 0x004bffbf inc rax | rax++; 0x004bffc2 cmp rax, 0x1e | | if (rax == 0x1e) { 0x004bffc6 je 0x4c04e9 | goto label_9; | } | label_8: 0x004bffcc mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x004bffd1 lea rbx, [rax*8] | rbx = rax*8; 0x004bffd9 mov r12, qword [rbx + rbx*4 + 0x4f3b08] | r12 = *((rbx + rbx*4 + 0x4f3b08)); 0x004bffe1 mov rdi, r12 | 0x004bffe4 call 0x401790 | eax = strlen (*((rbx + rbx*4 + 0x4f3b08))); 0x004bffe9 cmp eax, 0x11 | | if (eax >= 0x11) { 0x004bffec jl 0x4c0017 | 0x004bffee mov edi, 0x4f4c78 | 0x004bfff3 mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004bfff8 mov esi, 0xfe6 | esi = 0xfe6; 0x004bfffd xor eax, eax | eax = 0; 0x004bffff call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c0004 mov eax, dword [rip + 0x25898e] | eax = (anonymous namespace)::testStatus; 0x004c000a cmp eax, 0x64 | | if (eax > 0x64) { 0x004c000d ja 0x4c0017 | goto label_10; | } 0x004c000f inc eax | eax++; 0x004c0011 mov dword [rip + 0x258981], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_10: 0x004c0017 mov r13d, dword [rbx + rbx*4 + 0x4f3b00] | r13d = *((rbx + rbx*4 + obj.DATA_3)); 0x004c001f movsxd r15, dword [rbx + rbx*4 + 0x4f3b10] | r15 = *((rbx + rbx*4 + 0x4f3b10)); 0x004c0027 mov ebp, dword [rbx + rbx*4 + 0x4f3b14] | ebp = *((rbx + rbx*4 + 0x4f3b14)); 0x004c002e movsxd r14, dword [rbx + rbx*4 + 0x4f3b18] | r14 = *((rbx + rbx*4 + 0x4f3b18)); 0x004c0036 mov rbx, qword [rbx + rbx*4 + 0x4f3b20] | rbx = *((rbx + rbx*4 + 0x4f3b20)); 0x004c003e cmp byte [rip + 0x25894b], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c0045 je 0x4c0066 | 0x004c0047 mov qword [rsp], rbx | *(rsp) = rbx; 0x004c004b mov edi, 0x4f5ab7 | 0x004c0050 mov esi, r13d | esi = r13d; 0x004c0053 mov rdx, r12 | rdx = r12; 0x004c0056 mov ecx, r15d | ecx = r15d; 0x004c0059 mov r8d, ebp | r8d = ebp; 0x004c005c mov r9d, r14d | r9d = r14d; 0x004c005f xor eax, eax | eax = 0; 0x004c0061 call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004c0066 mov qword [rsp + 0x10], rbp | *((rsp + 0x10)) = rbp; 0x004c006b mov edi, 0x74f2e0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c0070 mov rsi, r12 | rsi = r12; 0x004c0073 call 0x4de690 | short&gg(short*,char const*) (); 0x004c0078 mov edi, 0x74f2e0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c007d mov rsi, r12 | rsi = r12; 0x004c0080 call 0x4de780 | voidverify(short*,char const*) (); 0x004c0085 mov r12d, dword [rip + 0x258918] | r12d = numCopyCtorCalls; 0x004c008c mov eax, dword [rip + 0x25891a] | eax = numCharCtorCalls; 0x004c0092 mov dword [rsp + 0x18], eax | *((rsp + 0x18)) = eax; 0x004c0096 cmp byte [rsp + 0x3c], 0 | | if (*((rsp + 0x3c)) == 0) { 0x004c009b je 0x4c0180 | goto label_11; | } 0x004c00a1 cmp byte [rip + 0x2588e8], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c00a8 je 0x4c00bd | 0x004c00aa cmp dword [rip + 0x25847f], 0 | | if (*(0x00718530) == 0) { 0x004c00b1 je 0x4c00bd | goto label_12; | } 0x004c00b3 mov edi, 0x4f425a | 0x004c00b8 call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_12: 0x004c00bd mov dword [rip + 0x258469], 0 | *(0x00718530) = 0; 0x004c00c7 cmp byte [rip + 0x2588c7], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c00ce je 0x4c00da | 0x004c00d0 mov edi, 0x4f4281 | 0x004c00d5 call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004c00da mov rax, qword [rip + 0x25873f] | rax = Z; 0x004c00e1 mov qword [rsp + 0x20], 0x4f6858 | *((rsp + 0x20)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004c00ea mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x004c00ef mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004c00f7 test rax, rax | 0x004c00fa je 0x4c0229 | | while (rax != 0) { | label_0: 0x004c0100 lea rsi, [r15 + r15 + 0x74f2e0] | rsi = r15 + r15 + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c0108 mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x004c010d add eax, r15d | eax += r15d; 0x004c0110 cdqe | rax = (int64_t) eax; 0x004c0112 lea rdx, [rax + rax + 0x74f2e0] | rdx = rax + rax + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c011a sub rdx, rsi | rdx -= rsi; | if (rdx != 0) { 0x004c011d je 0x4c012c | 0x004c011f lea rdi, [r14 + r14 + 0x74f2e0] | 0x004c0127 call 0x401930 | memcpy (r14 + r14 + obj.testCopyConstructWithIterators_short__bool__bool__bool_::u, rsi, rdx); | } 0x004c012c mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x004c0131 lea rdi, [rsp + 0x20] | rdi = rsp + 0x20; 0x004c0136 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004c013d call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004c0140 cmp byte [rip + 0x25884e], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c0147 je 0x4c0153 | 0x004c0149 mov edi, 0x4f43e1 | 0x004c014e call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004c0153 cmp byte [rip + 0x258836], 0 | | if (*(obj.veryVerbose) == 0) { 0x004c015a je 0x4c040b | goto label_13; | } 0x004c0160 mov edi, 0xa | 0x004c0165 call 0x401720 | putchar (0xa); 0x004c016a mov ebp, r13d | 0x004c016d jmp 0x4c03e1 | goto label_14; | label_11: 0x004c0180 cmp qword [rip + 0x258698], 0 | | if (*(obj.Z) == 0) { 0x004c0188 jne 0x4c01a0 | 0x004c018a mov rax, qword [rip + 0x291127] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c0191 test rax, rax | | if (rax != 0) { 0x004c0194 jne 0x4c01a0 | goto label_15; | } 0x004c0196 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c019b nop dword [rax + rax] | | } | label_15: 0x004c01a0 cmp qword [rsp + 0x40], 6 | 0x004c01a6 mov ebp, r13d | | if (*((rsp + 0x40)) < 6) { 0x004c01a9 jb 0x4c03e1 | goto label_14; | } 0x004c01af lea rax, [r15 + r15 + 0x74f2e0] | rax = r15 + r15 + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c01b7 lea rcx, [r14 + r14 + 0x74f2e0] | rcx = r14 + r14 + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c01bf mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x004c01c4 lea edx, [rsi + r15] | edx = rsi + r15; 0x004c01c8 movsxd r9, edx | r9 = (int64_t) edx; 0x004c01cb add r9, r9 | r9 += r9; 0x004c01ce lea rdi, [r15 + r15] | rdi = r15 + r15; 0x004c01d2 mov r10, r9 | r10 = r9; 0x004c01d5 sub r10, rdi | r10 -= rdi; 0x004c01d8 add r10, 0xfffffffffffffffe | r10 += 0xfffffffffffffffe; 0x004c01dc cmp r10, 0x1e | | if (r10 < 0x1e) { 0x004c01e0 jb 0x4c03c0 | goto label_16; | } 0x004c01e6 lea r8, [r14 + r14 + 0x74f2e0] | r8 = r14 + r14 + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c01ee lea edx, [rsi + r15] | edx = rsi + r15; 0x004c01f2 movsxd rdx, edx | rdx = (int64_t) edx; 0x004c01f5 lea rbp, [rdx + rdx + 0x74f2e0] | rbp = rdx + rdx + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c01fd cmp r8, rbp | | if (r8 >= rbp) { 0x004c0200 jae 0x4c029b | goto label_17; | } 0x004c0206 add rdx, rdx | rdx += rdx; 0x004c0209 sub rdx, rdi | rdx -= rdi; 0x004c020c lea rdx, [rdx + r14*2 + 0x74f2e0] | rdx = rdx + r14*2 + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c0214 lea rsi, [r15 + r15 + 0x74f2e0] | rsi = r15 + r15 + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c021c cmp rsi, rdx | | if (rsi >= rdx) { 0x004c021f jae 0x4c029b | goto label_17; | } 0x004c0221 mov ebp, r13d | 0x004c0224 jmp 0x4c03c0 | goto label_16; 0x004c0229 mov ebp, 1 | 0x004c022e mov rax, qword [rip + 0x291083] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c0235 test rax, rax | 0x004c0238 jne 0x4c0100 | | } 0x004c023e call 0x4eec50 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c0243 jmp 0x4c0100 | goto label_0; | label_17: 0x004c029b mov qword [rsp + 0x60], rbx | *((rsp + 0x60)) = rbx; 0x004c02a0 shr r10, 1 | r10 >>= 1; 0x004c02a3 inc r10 | r10++; 0x004c02a6 mov r8, r10 | r8 = r10; 0x004c02a9 and r8, 0xfffffffffffffff0 | r8 &= 0xfffffffffffffff0; 0x004c02ad lea rsi, [r8 - 0x10] | rsi = r8 - 0x10; 0x004c02b1 mov rbx, rsi | rbx = rsi; 0x004c02b4 shr rbx, 4 | rbx >>= 4; 0x004c02b8 inc rbx | rbx++; 0x004c02bb mov edx, ebx | edx = ebx; 0x004c02bd and edx, 3 | edx &= 3; 0x004c02c0 cmp rsi, 0x30 | | if (rsi < 0x30) { 0x004c02c4 jae 0x4c02cd | 0x004c02c6 xor ebp, ebp | ebp = 0; 0x004c02c8 jmp 0x4c0350 | goto label_18; | } 0x004c02cd and rbx, 0xfffffffffffffffc | rbx &= 0xfffffffffffffffc; 0x004c02d1 neg rbx | rbx = -rbx; 0x004c02d4 mov esi, 0x74f2e0 | esi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c02d9 xor ebp, ebp | ebp = 0; 0x004c02db nop dword [rax + rax] | | do { 0x004c02e0 movups xmm0, xmmword [rsi + r15*2] | __asm ("movups xmm0, xmmword [rsi + r15*2]"); 0x004c02e5 movups xmm1, xmmword [rsi + r15*2 + 0x10] | __asm ("movups xmm1, xmmword [rsi + r15*2 + 0x10]"); 0x004c02eb movups xmmword [rsi + r14*2], xmm0 | __asm ("movups xmmword [rsi + r14*2], xmm0"); 0x004c02f0 movups xmmword [rsi + r14*2 + 0x10], xmm1 | __asm ("movups xmmword [rsi + r14*2 + 0x10], xmm1"); 0x004c02f6 movups xmm0, xmmword [rsi + r15*2 + 0x20] | __asm ("movups xmm0, xmmword [rsi + r15*2 + 0x20]"); 0x004c02fc movups xmm1, xmmword [rsi + r15*2 + 0x30] | __asm ("movups xmm1, xmmword [rsi + r15*2 + 0x30]"); 0x004c0302 movups xmmword [rsi + r14*2 + 0x20], xmm0 | __asm ("movups xmmword [rsi + r14*2 + 0x20], xmm0"); 0x004c0308 movups xmmword [rsi + r14*2 + 0x30], xmm1 | __asm ("movups xmmword [rsi + r14*2 + 0x30], xmm1"); 0x004c030e movups xmm0, xmmword [rsi + r15*2 + 0x40] | __asm ("movups xmm0, xmmword [rsi + r15*2 + 0x40]"); 0x004c0314 movups xmm1, xmmword [rsi + r15*2 + 0x50] | __asm ("movups xmm1, xmmword [rsi + r15*2 + 0x50]"); 0x004c031a movups xmmword [rsi + r14*2 + 0x40], xmm0 | __asm ("movups xmmword [rsi + r14*2 + 0x40], xmm0"); 0x004c0320 movups xmmword [rsi + r14*2 + 0x50], xmm1 | __asm ("movups xmmword [rsi + r14*2 + 0x50], xmm1"); 0x004c0326 movdqu xmm0, xmmword [rsi + r15*2 + 0x60] | __asm ("movdqu xmm0, xmmword [rsi + r15*2 + 0x60]"); 0x004c032d movdqu xmm1, xmmword [rsi + r15*2 + 0x70] | __asm ("movdqu xmm1, xmmword [rsi + r15*2 + 0x70]"); 0x004c0334 movdqu xmmword [rsi + r14*2 + 0x60], xmm0 | __asm ("movdqu xmmword [rsi + r14*2 + 0x60], xmm0"); 0x004c033b movdqu xmmword [rsi + r14*2 + 0x70], xmm1 | __asm ("movdqu xmmword [rsi + r14*2 + 0x70], xmm1"); 0x004c0342 add rbp, 0x40 | rbp += 0x40; 0x004c0346 sub rsi, 0xffffffffffffff80 | rsi -= 0xffffffffffffff80; 0x004c034a add rbx, 4 | rbx += 4; 0x004c034e jne 0x4c02e0 | | } while (rbx != 0); | label_18: 0x004c0350 test rdx, rdx | | if (rdx == 0) { 0x004c0353 je 0x4c03a3 | goto label_19; | } 0x004c0355 add r14, r14 | r14 += r14; 0x004c0358 lea rsi, [rbp + rbp + 0x74f2e0] | rsi = rbp + rbp + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c0360 neg rdx | rdx = -rdx; 0x004c0363 nop word cs:[rax + rax] | 0x004c036d nop dword [rax] | | do { 0x004c0370 movdqu xmm0, xmmword [rdi + rbp*2 + 0x74f2e0] | __asm ("movdqu xmm0, xmmword [rdi + rbp*2 + obj.testCopyConstructWithIterators_short__bool__bool__bool_::u]"); 0x004c0379 movdqu xmm1, xmmword [rdi + rbp*2 + 0x74f2f0] | __asm ("movdqu xmm1, xmmword [rdi + rbp*2 + 0x74f2f0]"); 0x004c0382 movdqu xmmword [r14 + rbp*2 + 0x74f2e0], xmm0 | __asm ("movdqu xmmword [r14 + rbp*2 + obj.testCopyConstructWithIterators_short__bool__bool__bool_::u], xmm0"); 0x004c038c movdqu xmmword [r14 + rbp*2 + 0x74f2f0], xmm1 | __asm ("movdqu xmmword [r14 + rbp*2 + 0x74f2f0], xmm1"); 0x004c0396 add rbp, 0x10 | rbp += 0x10; 0x004c039a add rsi, 0x20 | rsi += 0x20; 0x004c039e inc rdx | rdx++; 0x004c03a1 jne 0x4c0370 | | } while (rdx != 0); | label_19: 0x004c03a3 cmp r10, r8 | 0x004c03a6 mov rbx, qword [rsp + 0x60] | rbx = *((rsp + 0x60)); 0x004c03ab mov ebp, r13d | | if (r10 == r8) { 0x004c03ae je 0x4c03e1 | goto label_14; | } 0x004c03b0 lea rax, [rax + r8*2] | rax = rax + r8*2; 0x004c03b4 lea rcx, [rcx + r8*2] | rcx = rcx + r8*2; 0x004c03b8 nop dword [rax + rax] | | label_16: 0x004c03c0 sub r9, rax | r9 -= rax; 0x004c03c3 lea rdx, [r9 + 0x74f2e0] | rdx = r9 + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c03ca xor esi, esi | esi = 0; 0x004c03cc nop dword [rax] | | do { 0x004c03d0 movzx edi, word [rax + rsi] | edi = *((rax + rsi)); 0x004c03d4 mov word [rcx + rsi], di | *((rcx + rsi)) = di; 0x004c03d8 add rsi, 2 | rsi += 2; 0x004c03dc cmp rdx, rsi | 0x004c03df jne 0x4c03d0 | | } while (rdx != rsi); | label_14: 0x004c03e1 cmp byte [rip + 0x2585a8], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c03e8 je 0x4c040b | 0x004c03ea mov edx, dword [rip + 0x2585b4] | edx = numCopyCtorCalls; 0x004c03f0 sub edx, r12d | edx -= r12d; 0x004c03f3 mov ecx, dword [rip + 0x2585b3] | ecx = numCharCtorCalls; 0x004c03f9 sub ecx, dword [rsp + 0x18] | ecx -= *((rsp + 0x18)); 0x004c03fd mov edi, 0x4f5c2a | 0x004c0402 mov esi, ebp | esi = ebp; 0x004c0404 xor eax, eax | eax = 0; 0x004c0406 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_13: 0x004c040b cmp byte [rsp + 0x4c], 0 | | if (*((rsp + 0x4c)) == 0) { 0x004c0410 je 0x4c0470 | goto label_20; | } 0x004c0412 cmp r12d, dword [rip + 0x25858b] | | if (r12d != *(obj.numCopyCtorCalls)) { 0x004c0419 je 0x4c0444 | 0x004c041b mov edi, 0x4f4c78 | 0x004c0420 mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004c0425 mov esi, 0x1005 | esi = 0x1005; 0x004c042a xor eax, eax | eax = 0; 0x004c042c call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c0431 mov eax, dword [rip + 0x258561] | eax = (anonymous namespace)::testStatus; 0x004c0437 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c043a ja 0x4c0444 | goto label_21; | } 0x004c043c inc eax | eax++; 0x004c043e mov dword [rip + 0x258554], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_21: 0x004c0444 mov eax, dword [rsp + 0x18] | eax = *((rsp + 0x18)); 0x004c0448 cmp eax, dword [rip + 0x25855e] | | if (eax == *(obj.numCharCtorCalls)) { 0x004c044e je 0x4bffa0 | goto label_1; | } 0x004c0454 mov edi, 0x4f4c78 | edi = "Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"; 0x004c0459 mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004c045e mov esi, 0x1006 | esi = 0x1006; 0x004c0463 jmp 0x4c04c6 | goto label_22; | label_20: 0x004c0470 add r12d, dword [rsp + 0x10] | r12d += *((rsp + 0x10)); 0x004c0475 cmp r12d, dword [rip + 0x258528] | | if (r12d > *(obj.numCopyCtorCalls)) { 0x004c047c jle 0x4c04a7 | 0x004c047e mov edi, 0x4f4c78 | 0x004c0483 mov edx, 0x4f5c78 | edx = "NUM_COPIES + NE <= numCopyCtorCalls"; 0x004c0488 mov esi, 0x1009 | esi = 0x1009; 0x004c048d xor eax, eax | eax = 0; 0x004c048f call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c0494 mov eax, dword [rip + 0x2584fe] | eax = (anonymous namespace)::testStatus; 0x004c049a cmp eax, 0x64 | | if (eax > 0x64) { 0x004c049d ja 0x4c04a7 | goto label_23; | } 0x004c049f inc eax | eax++; 0x004c04a1 mov dword [rip + 0x2584f1], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_23: 0x004c04a7 mov eax, dword [rsp + 0x18] | eax = *((rsp + 0x18)); 0x004c04ab cmp eax, dword [rip + 0x2584fb] | | if (eax == *(obj.numCharCtorCalls)) { 0x004c04b1 je 0x4bffa0 | goto label_1; | } 0x004c04b7 mov edi, 0x4f4c78 | 0x004c04bc mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004c04c1 mov esi, 0x100a | esi = 0x100a; | label_22: 0x004c04c6 xor eax, eax | eax = 0; 0x004c04c8 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c04cd mov eax, dword [rip + 0x2584c5] | eax = (anonymous namespace)::testStatus; 0x004c04d3 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c04d6 ja 0x4bffa0 | goto label_1; | } 0x004c04dc inc eax | eax++; 0x004c04de mov dword [rip + 0x2584b4], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004c04e4 jmp 0x4bffa0 | goto label_1; | label_9: 0x004c04e9 cmp byte [rip + 0x2584a6], 0 | | if (*(obj.verbose) != 0) { 0x004c04f0 je 0x4c04fc | 0x004c04f2 mov edi, 0x4f67d2 | 0x004c04f7 call 0x401710 | puts ("\t\tfrom different type."); | } 0x004c04fc xor ebx, ebx | ebx = 0; 0x004c04fe jmp 0x4c052c | goto label_24; | label_2: 0x004c0500 mov edi, 0x74f2e0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c0505 mov rsi, rbp | rsi = rbp; 0x004c0508 call 0x4de780 | voidverify(short*,char const*) (); 0x004c050d mov edi, 0x74f2e0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c0512 mov rsi, rbp | rsi = rbp; 0x004c0515 call 0x4de9c0 | voidcleanup(short*,char const*) (); 0x004c051a mov rbx, qword [rsp + 0x18] | rbx = *((rsp + 0x18)); 0x004c051f inc rbx | rbx++; 0x004c0522 cmp rbx, 0x1e | | if (rbx == 0x1e) { 0x004c0526 je 0x4c0a5c | goto label_25; | } | label_24: 0x004c052c lea rbp, [rbx*8] | rbp = rbx*8; 0x004c0534 mov r12, qword [rbp + rbp*4 + 0x4f3b08] | r12 = *((rbp + rbp*4 + 0x4f3b08)); 0x004c053c mov rdi, r12 | 0x004c053f call 0x401790 | eax = strlen (*((rbp + rbp*4 + 0x4f3b08))); 0x004c0544 cmp eax, 0x11 | | if (eax >= 0x11) { 0x004c0547 jl 0x4c0572 | 0x004c0549 mov edi, 0x4f4c78 | 0x004c054e mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004c0553 mov esi, 0x1019 | esi = 0x1019; 0x004c0558 xor eax, eax | eax = 0; 0x004c055a call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c055f mov eax, dword [rip + 0x258433] | eax = (anonymous namespace)::testStatus; 0x004c0565 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c0568 ja 0x4c0572 | goto label_26; | } 0x004c056a inc eax | eax++; 0x004c056c mov dword [rip + 0x258426], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_26: 0x004c0572 mov rdi, r12 | 0x004c0575 call 0x401790 | rax = strlen (r12); 0x004c057a cmp rax, 0x14 | | if (rax >= 0x14) { 0x004c057e jb 0x4c05a9 | 0x004c0580 mov edi, 0x4f4c78 | 0x004c0585 mov edx, 0x4f5c9c | edx = "SPEC_CE_LEN > std::strlen(SPEC)"; 0x004c058a mov esi, 0x101c | esi = 0x101c; 0x004c058f xor eax, eax | eax = 0; 0x004c0591 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c0596 mov eax, dword [rip + 0x2583fc] | eax = (anonymous namespace)::testStatus; 0x004c059c cmp eax, 0x64 | | if (eax > 0x64) { 0x004c059f ja 0x4c05a9 | goto label_27; | } 0x004c05a1 inc eax | eax++; 0x004c05a3 mov dword [rip + 0x2583ef], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_27: 0x004c05a9 mov qword [rsp + 0x18], rbx | *((rsp + 0x18)) = rbx; 0x004c05ae pxor xmm0, xmm0 | xmm0 = 0; 0x004c05b2 movdqa xmmword [rsp + 0x20], xmm0 | __asm ("movdqa xmmword [rsp + 0x20], xmm0"); 0x004c05b8 mov dword [rsp + 0x30], 0 | *((rsp + 0x30)) = 0; 0x004c05c0 mov al, byte [r12] | al = *(r12); 0x004c05c4 test al, al | | if (al == 0) { 0x004c05c6 je 0x4c05e1 | goto label_28; | } 0x004c05c8 xor ecx, ecx | ecx = 0; 0x004c05ca nop word [rax + rax] | | do { 0x004c05d0 mov byte [rsp + rcx + 0x20], al | *((rsp + rcx + 0x20)) = al; 0x004c05d4 movzx eax, byte [r12 + rcx + 1] | eax = *((r12 + rcx + 1)); 0x004c05da inc rcx | rcx++; 0x004c05dd test al, al | 0x004c05df jne 0x4c05d0 | | } while (al != 0); | label_28: 0x004c05e1 mov r14d, dword [rbp + rbp*4 + 0x4f3b00] | r14d = *((rbp + rbp*4 + obj.DATA_3)); 0x004c05e9 movsxd rbx, dword [rbp + rbp*4 + 0x4f3b10] | rbx = *((rbp + rbp*4 + 0x4f3b10)); 0x004c05f1 movsxd r15, dword [rbp + rbp*4 + 0x4f3b14] | r15 = *((rbp + rbp*4 + 0x4f3b14)); 0x004c05f9 movsxd r13, dword [rbp + rbp*4 + 0x4f3b18] | r13 = *((rbp + rbp*4 + 0x4f3b18)); 0x004c0601 mov rbp, qword [rbp + rbp*4 + 0x4f3b20] | rbp = *((rbp + rbp*4 + 0x4f3b20)); 0x004c0609 cmp byte [rip + 0x258380], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c0610 je 0x4c0630 | 0x004c0612 mov qword [rsp], rbp | *(rsp) = rbp; 0x004c0616 mov edi, 0x4f5ab7 | 0x004c061b mov esi, r14d | esi = r14d; 0x004c061e mov rdx, r12 | rdx = r12; 0x004c0621 mov ecx, ebx | ecx = ebx; 0x004c0623 mov r8d, r15d | r8d = r15d; 0x004c0626 mov r9d, r13d | r9d = r13d; 0x004c0629 xor eax, eax | eax = 0; 0x004c062b call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004c0630 mov edi, 0x74f2e0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c0635 mov rsi, r12 | rsi = r12; 0x004c0638 call 0x4de690 | short&gg(short*,char const*) (); 0x004c063d mov edi, 0x74f2e0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c0642 mov rsi, r12 | rsi = r12; 0x004c0645 call 0x4de780 | voidverify(short*,char const*) (); 0x004c064a mov r12d, dword [rip + 0x258353] | r12d = numCopyCtorCalls; 0x004c0651 mov eax, dword [rip + 0x258355] | eax = numCharCtorCalls; 0x004c0657 mov dword [rsp + 0x40], eax | *((rsp + 0x40)) = eax; 0x004c065b cmp byte [rsp + 0x3c], 0 | | if (*((rsp + 0x3c)) == 0) { 0x004c0660 je 0x4c0820 | goto label_29; | } 0x004c0666 cmp byte [rip + 0x258323], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c066d je 0x4c0682 | 0x004c066f cmp dword [rip + 0x257ebe], 0 | | if (*(obj.testCopyConstructWithIterators_short__bool__bool__bool_::firstTime) == 0) { 0x004c0676 je 0x4c0682 | goto label_30; | } 0x004c0678 mov edi, 0x4f425a | 0x004c067d call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_30: 0x004c0682 mov dword [rip + 0x257ea8], 0 | *(obj.testCopyConstructWithIterators_short__bool__bool__bool_::firstTime) = 0; 0x004c068c cmp byte [rip + 0x258302], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c0693 je 0x4c069f | 0x004c0695 mov edi, 0x4f4281 | 0x004c069a call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004c069f mov rax, qword [rip + 0x25817a] | rax = Z; 0x004c06a6 mov qword [rsp + 0x50], 0x4f6858 | *((rsp + 0x50)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004c06af mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; 0x004c06b4 mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004c06bc test rax, rax | | if (rax == 0) { 0x004c06bf je 0x4c09ba | goto label_31; | } | label_3: 0x004c06c5 cmp qword [rsp + 0x18], 6 | | if (*((rsp + 0x18)) < 6) { 0x004c06cb jb 0x4c07d0 | goto label_32; | } 0x004c06d1 lea rcx, [rsp + rbx + 0x20] | rcx = rsp + rbx + 0x20; 0x004c06d6 lea rsi, [r13 + r13 + 0x74f2e0] | rsi = r13 + r13 + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c06de lea eax, [rbx + r15] | eax = rbx + r15; 0x004c06e2 movsxd r9, eax | r9 = (int64_t) eax; 0x004c06e5 mov rdx, r9 | rdx = r9; 0x004c06e8 sub rdx, rbx | rdx -= rbx; 0x004c06eb cmp rdx, 0x10 | | if (rdx < 0x10) { 0x004c06ef jb 0x4c07ab | goto label_33; | } 0x004c06f5 mov r11, rbp | r11 = rbp; 0x004c06f8 mov r8, rdx | r8 = rdx; 0x004c06fb and r8, 0xfffffffffffffff0 | r8 &= 0xfffffffffffffff0; 0x004c06ff lea rdi, [r8 - 0x10] | rdi = r8 - 0x10; 0x004c0703 mov r10, rdi | r10 = rdi; 0x004c0706 shr r10, 4 | r10 >>= 4; 0x004c070a inc r10 | r10++; 0x004c070d test rdi, rdi | | if (rdi == 0) { 0x004c0710 je 0x4c0a4b | goto label_34; | } 0x004c0716 lea rax, [rsp + 0x38] | rax = rsp + 0x38; 0x004c071b add rbx, rax | rbx += rax; 0x004c071e mov rbp, r10 | 0x004c0721 and rbp, 0xfffffffffffffffe | rbp &= 0xfffffffffffffffe; 0x004c0725 neg rbp | rbp = -rbp; 0x004c0728 xor edi, edi | edi = 0; 0x004c072a nop word [rax + rax] | | do { 0x004c0730 pmovsxbw xmm0, qword [rbx + rdi - 0x18] | __asm ("pmovsxbw xmm0, qword [rbx + rdi - 0x18]"); 0x004c0737 pmovsxbw xmm1, qword [rbx + rdi - 0x10] | __asm ("pmovsxbw xmm1, qword [rbx + rdi - 0x10]"); 0x004c073e lea rax, [r13 + r13] | rax = r13 + r13; 0x004c0743 movdqu xmmword [rax + rdi*2 + 0x74f2e0], xmm0 | __asm ("movdqu xmmword [rax + rdi*2 + obj.testCopyConstructWithIterators_short__bool__bool__bool_::u], xmm0"); 0x004c074c movdqu xmmword [rax + rdi*2 + 0x74f2f0], xmm1 | __asm ("movdqu xmmword [rax + rdi*2 + 0x74f2f0], xmm1"); 0x004c0755 pmovsxbw xmm0, qword [rbx + rdi - 8] | __asm ("pmovsxbw xmm0, qword [rbx + rdi - 8]"); 0x004c075c pmovsxbw xmm1, qword [rbx + rdi] | __asm ("pmovsxbw xmm1, qword [rbx + rdi]"); 0x004c0762 movdqu xmmword [rax + rdi*2 + 0x74f300], xmm0 | __asm ("movdqu xmmword [rax + rdi*2 + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u], xmm0"); 0x004c076b movdqu xmmword [rax + rdi*2 + 0x74f310], xmm1 | __asm ("movdqu xmmword [rax + rdi*2 + 0x74f310], xmm1"); 0x004c0774 add rdi, 0x20 | rdi += 0x20; 0x004c0778 add rbp, 2 | rbp += 2; 0x004c077c jne 0x4c0730 | | } while (rbp != 0); 0x004c077e test r10b, 1 | | if ((r10b & 1) != 0) { 0x004c0782 je 0x4c079c | | label_6: 0x004c0784 pmovsxbw xmm0, qword [rcx + rdi] | __asm ("pmovsxbw xmm0, qword [rcx + rdi]"); 0x004c078a pmovsxbw xmm1, qword [rcx + rdi + 8] | __asm ("pmovsxbw xmm1, qword [rcx + rdi + 8]"); 0x004c0791 movdqu xmmword [rsi + rdi*2], xmm0 | __asm ("movdqu xmmword [rsi + rdi*2], xmm0"); 0x004c0796 movdqu xmmword [rsi + rdi*2 + 0x10], xmm1 | __asm ("movdqu xmmword [rsi + rdi*2 + 0x10], xmm1"); | } | label_7: 0x004c079c cmp rdx, r8 | 0x004c079f mov rbp, r11 | | if (rdx == r8) { 0x004c07a2 je 0x4c07d0 | goto label_32; | } 0x004c07a4 add rcx, r8 | rcx += r8; 0x004c07a7 lea rsi, [rsi + r8*2] | rsi = rsi + r8*2; | label_33: 0x004c07ab sub r9, rcx | r9 -= rcx; 0x004c07ae lea rax, [rsp + r9 + 0x20] | rax = rsp + r9 + 0x20; 0x004c07b3 xor edi, edi | edi = 0; 0x004c07b5 nop word cs:[rax + rax] | 0x004c07bf nop | | do { 0x004c07c0 movsx edx, byte [rcx + rdi] | edx = *((rcx + rdi)); 0x004c07c4 mov word [rsi + rdi*2], dx | *((rsi + rdi*2)) = dx; 0x004c07c8 inc rdi | rdi++; 0x004c07cb cmp rax, rdi | 0x004c07ce jne 0x4c07c0 | | } while (rax != rdi); | label_32: 0x004c07d0 mov rax, qword [rsp + 0x50] | rax = *((rsp + 0x50)); 0x004c07d5 lea rdi, [rsp + 0x50] | rdi = rsp + 0x50; 0x004c07da mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004c07e1 call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004c07e4 cmp byte [rip + 0x2581aa], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c07eb je 0x4c07f7 | 0x004c07ed mov edi, 0x4f43e1 | 0x004c07f2 call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004c07f7 cmp byte [rip + 0x258192], 0 | | if (*(obj.veryVerbose) == 0) { 0x004c07fe je 0x4c097b | goto label_35; | } 0x004c0804 mov edi, 0xa | 0x004c0809 call 0x401720 | putchar (0xa); 0x004c080e mov r11d, r14d | r11d = r14d; 0x004c0811 jmp 0x4c0950 | goto label_36; | label_29: 0x004c0820 cmp qword [rip + 0x257ff8], 0 | | if (*(obj.Z) == 0) { 0x004c0828 jne 0x4c0840 | 0x004c082a mov rax, qword [rip + 0x290a87] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c0831 test rax, rax | | if (rax != 0) { 0x004c0834 jne 0x4c0840 | goto label_37; | } 0x004c0836 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c083b nop dword [rax + rax] | | } | label_37: 0x004c0840 cmp qword [rsp + 0x18], 6 | 0x004c0846 mov r11d, r14d | r11d = r14d; | if (*((rsp + 0x18)) < 6) { 0x004c0849 jb 0x4c0950 | goto label_36; | } 0x004c084f lea rax, [r13 + r13 + 0x74f2e0] | rax = r13 + r13 + obj_testCopyConstructWithIterators_short__bool__bool__bool_::u; 0x004c0857 lea rcx, [rsp + rbx + 0x20] | rcx = rsp + rbx + 0x20; 0x004c085c add r15, rbx | r15 += rbx; 0x004c085f mov rdx, r15 | rdx = r15; 0x004c0862 sub rdx, rbx | rdx -= rbx; 0x004c0865 cmp rdx, 0x10 | | if (rdx < 0x10) { 0x004c0869 jb 0x4c092b | goto label_38; | } 0x004c086f mov r10, rbp | r10 = rbp; 0x004c0872 mov r8, rdx | r8 = rdx; 0x004c0875 and r8, 0xfffffffffffffff0 | r8 &= 0xfffffffffffffff0; 0x004c0879 lea rdi, [r8 - 0x10] | rdi = r8 - 0x10; 0x004c087d mov r9, rdi | r9 = rdi; 0x004c0880 shr r9, 4 | r9 >>= 4; 0x004c0884 inc r9 | r9++; 0x004c0887 test rdi, rdi | | if (rdi == 0) { 0x004c088a je 0x4c0a3a | goto label_39; | } 0x004c0890 lea rsi, [rsp + 0x38] | rsi = rsp + 0x38; 0x004c0895 add rbx, rsi | rbx += rsi; 0x004c0898 mov rdi, r9 | rdi = r9; 0x004c089b and rdi, 0xfffffffffffffffe | rdi &= 0xfffffffffffffffe; 0x004c089f neg rdi | rdi = -rdi; 0x004c08a2 xor ebp, ebp | ebp = 0; 0x004c08a4 nop word cs:[rax + rax] | 0x004c08ae nop | | do { 0x004c08b0 pmovsxbw xmm0, qword [rbx + rbp - 0x18] | __asm ("pmovsxbw xmm0, qword [rbx + rbp - 0x18]"); 0x004c08b7 pmovsxbw xmm1, qword [rbx + rbp - 0x10] | __asm ("pmovsxbw xmm1, qword [rbx + rbp - 0x10]"); 0x004c08be lea rsi, [r13 + r13] | rsi = r13 + r13; 0x004c08c3 movdqu xmmword [rsi + rbp*2 + 0x74f2e0], xmm0 | __asm ("movdqu xmmword [rsi + rbp*2 + obj.testCopyConstructWithIterators_short__bool__bool__bool_::u], xmm0"); 0x004c08cc movdqu xmmword [rsi + rbp*2 + 0x74f2f0], xmm1 | __asm ("movdqu xmmword [rsi + rbp*2 + 0x74f2f0], xmm1"); 0x004c08d5 pmovsxbw xmm0, qword [rbx + rbp - 8] | __asm ("pmovsxbw xmm0, qword [rbx + rbp - 8]"); 0x004c08dc pmovsxbw xmm1, qword [rbx + rbp] | __asm ("pmovsxbw xmm1, qword [rbx + rbp]"); 0x004c08e2 movdqu xmmword [rsi + rbp*2 + 0x74f300], xmm0 | __asm ("movdqu xmmword [rsi + rbp*2 + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u], xmm0"); 0x004c08eb movdqu xmmword [rsi + rbp*2 + 0x74f310], xmm1 | __asm ("movdqu xmmword [rsi + rbp*2 + 0x74f310], xmm1"); 0x004c08f4 add rbp, 0x20 | rbp += 0x20; 0x004c08f8 add rdi, 2 | rdi += 2; 0x004c08fc jne 0x4c08b0 | | } while (rdi != 0); 0x004c08fe test r9b, 1 | | if ((r9b & 1) != 0) { 0x004c0902 je 0x4c091c | | label_4: 0x004c0904 pmovsxbw xmm0, qword [rcx + rbp] | __asm ("pmovsxbw xmm0, qword [rcx + rbp]"); 0x004c090a pmovsxbw xmm1, qword [rcx + rbp + 8] | __asm ("pmovsxbw xmm1, qword [rcx + rbp + 8]"); 0x004c0911 movdqu xmmword [rax + rbp*2], xmm0 | __asm ("movdqu xmmword [rax + rbp*2], xmm0"); 0x004c0916 movdqu xmmword [rax + rbp*2 + 0x10], xmm1 | __asm ("movdqu xmmword [rax + rbp*2 + 0x10], xmm1"); | } | label_5: 0x004c091c cmp rdx, r8 | 0x004c091f mov rbp, r10 | | if (rdx == r8) { 0x004c0922 je 0x4c0950 | goto label_36; | } 0x004c0924 add rcx, r8 | rcx += r8; 0x004c0927 lea rax, [rax + r8*2] | rax = rax + r8*2; | label_38: 0x004c092b sub r15, rcx | r15 -= rcx; 0x004c092e lea rdx, [rsp + r15 + 0x20] | rdx = rsp + r15 + 0x20; 0x004c0933 xor esi, esi | esi = 0; 0x004c0935 nop word cs:[rax + rax] | 0x004c093f nop | | do { 0x004c0940 movsx edi, byte [rcx + rsi] | edi = *((rcx + rsi)); 0x004c0944 mov word [rax + rsi*2], di | *((rax + rsi*2)) = di; 0x004c0948 inc rsi | rsi++; 0x004c094b cmp rdx, rsi | 0x004c094e jne 0x4c0940 | | } while (rdx != rsi); | label_36: 0x004c0950 cmp byte [rip + 0x258039], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c0957 je 0x4c097b | 0x004c0959 mov edx, dword [rip + 0x258045] | edx = numCopyCtorCalls; 0x004c095f sub edx, r12d | edx -= r12d; 0x004c0962 mov ecx, dword [rip + 0x258044] | ecx = numCharCtorCalls; 0x004c0968 sub ecx, dword [rsp + 0x40] | ecx -= *((rsp + 0x40)); 0x004c096c mov edi, 0x4f5c2a | 0x004c0971 mov esi, r11d | esi = r11d; 0x004c0974 xor eax, eax | eax = 0; 0x004c0976 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_35: 0x004c097b cmp r12d, dword [rip + 0x258022] | | if (r12d == *(obj.numCopyCtorCalls)) { 0x004c0982 je 0x4c0500 | goto label_2; | } 0x004c0988 mov edi, 0x4f4c78 | 0x004c098d mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004c0992 mov esi, 0x103f | esi = 0x103f; 0x004c0997 xor eax, eax | eax = 0; 0x004c0999 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c099e mov eax, dword [rip + 0x257ff4] | eax = (anonymous namespace)::testStatus; 0x004c09a4 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c09a7 ja 0x4c0500 | goto label_2; | } 0x004c09ad inc eax | eax++; 0x004c09af mov dword [rip + 0x257fe3], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004c09b5 jmp 0x4c0500 | goto label_2; | label_31: 0x004c09ba mov eax, 1 | eax = 1; 0x004c09bf mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x004c09c4 mov rax, qword [rip + 0x2908ed] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c09cb test rax, rax | | if (rax != 0) { 0x004c09ce jne 0x4c06c5 | goto label_3; | } 0x004c09d4 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c09d9 jmp 0x4c06c5 | goto label_3; | label_39: 0x004c0a3a xor ebp, ebp | ebp = 0; 0x004c0a3c test r9b, 1 | | if ((r9b & 1) != 0) { 0x004c0a40 jne 0x4c0904 | goto label_4; | } 0x004c0a46 jmp 0x4c091c | goto label_5; | label_34: 0x004c0a4b xor edi, edi | edi = 0; 0x004c0a4d test r10b, 1 | | if ((r10b & 1) != 0) { 0x004c0a51 jne 0x4c0784 | goto label_6; | } 0x004c0a57 jmp 0x4c079c | goto label_7; | label_25: 0x004c0a5c add rsp, 0x68 | 0x004c0a60 pop rbx | 0x004c0a61 pop r12 | 0x004c0a63 pop r13 | 0x004c0a65 pop r14 | 0x004c0a67 pop r15 | 0x004c0a69 pop rbp | 0x004c0a6a ret | return rax; | }