; assembly | /* r2dec pseudo code output */ | /* bslalg_arrayprimitives.t/assume @ 0x4c0aa0 */ | #include | ; (fcn) sym.void_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_ () | uint64_t void_testCopyConstructWithIterators_unsigned_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) */ 0x004c0aa0 push rbp | 0x004c0aa1 push r15 | 0x004c0aa3 push r14 | 0x004c0aa5 push r13 | 0x004c0aa7 push r12 | 0x004c0aa9 push rbx | 0x004c0aaa sub rsp, 0x68 | 0x004c0aae mov dword [rsp + 0x3c], edx | *((rsp + 0x3c)) = edx; 0x004c0ab2 mov dword [rsp + 0x4c], esi | *((rsp + 0x4c)) = esi; 0x004c0ab6 cmp byte [rip + 0x257ed9], 0 | | if (*(obj.verbose) != 0) { 0x004c0abd je 0x4c0ac9 | 0x004c0abf mov edi, 0x4f67e9 | 0x004c0ac4 call 0x401710 | eax = puts ("\t\tfrom same type."); | } 0x004c0ac9 xor eax, eax | eax = 0; 0x004c0acb jmp 0x4c0afc | goto label_8; | label_1: 0x004c0ad0 mov edi, 0x74f300 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c0ad5 mov rsi, rbx | rsi = rbx; 0x004c0ad8 call 0x4dec90 | voidverify(unsignedshort*,char const*) (); 0x004c0add mov edi, 0x74f300 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c0ae2 mov rsi, rbx | rsi = rbx; 0x004c0ae5 call 0x4deed0 | voidcleanup(unsignedshort*,char const*) (); 0x004c0aea mov rax, qword [rsp + 0x40] | rax = *((rsp + 0x40)); 0x004c0aef inc rax | rax++; 0x004c0af2 cmp rax, 0x1e | | if (rax == 0x1e) { 0x004c0af6 je 0x4c1019 | goto label_9; | } | label_8: 0x004c0afc mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x004c0b01 lea rbx, [rax*8] | rbx = rax*8; 0x004c0b09 mov r12, qword [rbx + rbx*4 + 0x4f3b08] | r12 = *((rbx + rbx*4 + 0x4f3b08)); 0x004c0b11 mov rdi, r12 | 0x004c0b14 call 0x401790 | eax = strlen (*((rbx + rbx*4 + 0x4f3b08))); 0x004c0b19 cmp eax, 0x11 | | if (eax >= 0x11) { 0x004c0b1c jl 0x4c0b47 | 0x004c0b1e mov edi, 0x4f4c78 | 0x004c0b23 mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004c0b28 mov esi, 0xfe6 | esi = 0xfe6; 0x004c0b2d xor eax, eax | eax = 0; 0x004c0b2f call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c0b34 mov eax, dword [rip + 0x257e5e] | eax = (anonymous namespace)::testStatus; 0x004c0b3a cmp eax, 0x64 | | if (eax > 0x64) { 0x004c0b3d ja 0x4c0b47 | goto label_10; | } 0x004c0b3f inc eax | eax++; 0x004c0b41 mov dword [rip + 0x257e51], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_10: 0x004c0b47 mov r13d, dword [rbx + rbx*4 + 0x4f3b00] | r13d = *((rbx + rbx*4 + obj.DATA_3)); 0x004c0b4f movsxd r15, dword [rbx + rbx*4 + 0x4f3b10] | r15 = *((rbx + rbx*4 + 0x4f3b10)); 0x004c0b57 mov ebp, dword [rbx + rbx*4 + 0x4f3b14] | ebp = *((rbx + rbx*4 + 0x4f3b14)); 0x004c0b5e movsxd r14, dword [rbx + rbx*4 + 0x4f3b18] | r14 = *((rbx + rbx*4 + 0x4f3b18)); 0x004c0b66 mov rbx, qword [rbx + rbx*4 + 0x4f3b20] | rbx = *((rbx + rbx*4 + 0x4f3b20)); 0x004c0b6e cmp byte [rip + 0x257e1b], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c0b75 je 0x4c0b96 | 0x004c0b77 mov qword [rsp], rbx | *(rsp) = rbx; 0x004c0b7b mov edi, 0x4f5ab7 | 0x004c0b80 mov esi, r13d | esi = r13d; 0x004c0b83 mov rdx, r12 | rdx = r12; 0x004c0b86 mov ecx, r15d | ecx = r15d; 0x004c0b89 mov r8d, ebp | r8d = ebp; 0x004c0b8c mov r9d, r14d | r9d = r14d; 0x004c0b8f xor eax, eax | eax = 0; 0x004c0b91 call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004c0b96 mov qword [rsp + 0x10], rbp | *((rsp + 0x10)) = rbp; 0x004c0b9b mov edi, 0x74f300 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c0ba0 mov rsi, r12 | rsi = r12; 0x004c0ba3 call 0x4deba0 | unsignedshort&gg(unsignedshort*,char const*) (); 0x004c0ba8 mov edi, 0x74f300 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c0bad mov rsi, r12 | rsi = r12; 0x004c0bb0 call 0x4dec90 | voidverify(unsignedshort*,char const*) (); 0x004c0bb5 mov r12d, dword [rip + 0x257de8] | r12d = numCopyCtorCalls; 0x004c0bbc mov eax, dword [rip + 0x257dea] | eax = numCharCtorCalls; 0x004c0bc2 mov dword [rsp + 0x18], eax | *((rsp + 0x18)) = eax; 0x004c0bc6 cmp byte [rsp + 0x3c], 0 | | if (*((rsp + 0x3c)) == 0) { 0x004c0bcb je 0x4c0cb0 | goto label_11; | } 0x004c0bd1 cmp byte [rip + 0x257db8], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c0bd8 je 0x4c0bed | 0x004c0bda cmp dword [rip + 0x257957], 0 | | if (*(obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::firstTime) == 0) { 0x004c0be1 je 0x4c0bed | goto label_12; | } 0x004c0be3 mov edi, 0x4f425a | 0x004c0be8 call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_12: 0x004c0bed mov dword [rip + 0x257941], 0 | *(obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::firstTime) = 0; 0x004c0bf7 cmp byte [rip + 0x257d97], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c0bfe je 0x4c0c0a | 0x004c0c00 mov edi, 0x4f4281 | 0x004c0c05 call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004c0c0a mov rax, qword [rip + 0x257c0f] | rax = Z; 0x004c0c11 mov qword [rsp + 0x20], 0x4f6858 | *((rsp + 0x20)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004c0c1a mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x004c0c1f mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004c0c27 test rax, rax | 0x004c0c2a je 0x4c0d59 | | while (rax != 0) { | label_0: 0x004c0c30 lea rsi, [r15 + r15 + 0x74f300] | rsi = r15 + r15 + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c0c38 mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x004c0c3d add eax, r15d | eax += r15d; 0x004c0c40 cdqe | rax = (int64_t) eax; 0x004c0c42 lea rdx, [rax + rax + 0x74f300] | rdx = rax + rax + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c0c4a sub rdx, rsi | rdx -= rsi; | if (rdx != 0) { 0x004c0c4d je 0x4c0c5c | 0x004c0c4f lea rdi, [r14 + r14 + 0x74f300] | 0x004c0c57 call 0x401930 | memcpy (r14 + r14 + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u, rsi, rdx); | } 0x004c0c5c mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x004c0c61 lea rdi, [rsp + 0x20] | rdi = rsp + 0x20; 0x004c0c66 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004c0c6d call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004c0c70 cmp byte [rip + 0x257d1e], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c0c77 je 0x4c0c83 | 0x004c0c79 mov edi, 0x4f43e1 | 0x004c0c7e call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004c0c83 cmp byte [rip + 0x257d06], 0 | | if (*(obj.veryVerbose) == 0) { 0x004c0c8a je 0x4c0f3b | goto label_13; | } 0x004c0c90 mov edi, 0xa | 0x004c0c95 call 0x401720 | putchar (0xa); 0x004c0c9a mov ebp, r13d | 0x004c0c9d jmp 0x4c0f11 | goto label_14; | label_11: 0x004c0cb0 cmp qword [rip + 0x257b68], 0 | | if (*(obj.Z) == 0) { 0x004c0cb8 jne 0x4c0cd0 | 0x004c0cba mov rax, qword [rip + 0x2905f7] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c0cc1 test rax, rax | | if (rax != 0) { 0x004c0cc4 jne 0x4c0cd0 | goto label_15; | } 0x004c0cc6 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c0ccb nop dword [rax + rax] | | } | label_15: 0x004c0cd0 cmp qword [rsp + 0x40], 6 | 0x004c0cd6 mov ebp, r13d | | if (*((rsp + 0x40)) < 6) { 0x004c0cd9 jb 0x4c0f11 | goto label_14; | } 0x004c0cdf lea rax, [r15 + r15 + 0x74f300] | rax = r15 + r15 + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c0ce7 lea rcx, [r14 + r14 + 0x74f300] | rcx = r14 + r14 + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c0cef mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x004c0cf4 lea edx, [rsi + r15] | edx = rsi + r15; 0x004c0cf8 movsxd r9, edx | r9 = (int64_t) edx; 0x004c0cfb add r9, r9 | r9 += r9; 0x004c0cfe lea rdi, [r15 + r15] | rdi = r15 + r15; 0x004c0d02 mov r10, r9 | r10 = r9; 0x004c0d05 sub r10, rdi | r10 -= rdi; 0x004c0d08 add r10, 0xfffffffffffffffe | r10 += 0xfffffffffffffffe; 0x004c0d0c cmp r10, 0x1e | | if (r10 < 0x1e) { 0x004c0d10 jb 0x4c0ef0 | goto label_16; | } 0x004c0d16 lea r8, [r14 + r14 + 0x74f300] | r8 = r14 + r14 + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c0d1e lea edx, [rsi + r15] | edx = rsi + r15; 0x004c0d22 movsxd rdx, edx | rdx = (int64_t) edx; 0x004c0d25 lea rbp, [rdx + rdx + 0x74f300] | rbp = rdx + rdx + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c0d2d cmp r8, rbp | | if (r8 >= rbp) { 0x004c0d30 jae 0x4c0dcb | goto label_17; | } 0x004c0d36 add rdx, rdx | rdx += rdx; 0x004c0d39 sub rdx, rdi | rdx -= rdi; 0x004c0d3c lea rdx, [rdx + r14*2 + 0x74f300] | rdx = rdx + r14*2 + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c0d44 lea rsi, [r15 + r15 + 0x74f300] | rsi = r15 + r15 + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c0d4c cmp rsi, rdx | | if (rsi >= rdx) { 0x004c0d4f jae 0x4c0dcb | goto label_17; | } 0x004c0d51 mov ebp, r13d | 0x004c0d54 jmp 0x4c0ef0 | goto label_16; 0x004c0d59 mov ebp, 1 | 0x004c0d5e mov rax, qword [rip + 0x290553] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c0d65 test rax, rax | 0x004c0d68 jne 0x4c0c30 | | } 0x004c0d6e call 0x4eec50 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c0d73 jmp 0x4c0c30 | goto label_0; | label_17: 0x004c0dcb mov qword [rsp + 0x60], rbx | *((rsp + 0x60)) = rbx; 0x004c0dd0 shr r10, 1 | r10 >>= 1; 0x004c0dd3 inc r10 | r10++; 0x004c0dd6 mov r8, r10 | r8 = r10; 0x004c0dd9 and r8, 0xfffffffffffffff0 | r8 &= 0xfffffffffffffff0; 0x004c0ddd lea rsi, [r8 - 0x10] | rsi = r8 - 0x10; 0x004c0de1 mov rbx, rsi | rbx = rsi; 0x004c0de4 shr rbx, 4 | rbx >>= 4; 0x004c0de8 inc rbx | rbx++; 0x004c0deb mov edx, ebx | edx = ebx; 0x004c0ded and edx, 3 | edx &= 3; 0x004c0df0 cmp rsi, 0x30 | | if (rsi < 0x30) { 0x004c0df4 jae 0x4c0dfd | 0x004c0df6 xor ebp, ebp | ebp = 0; 0x004c0df8 jmp 0x4c0e80 | goto label_18; | } 0x004c0dfd and rbx, 0xfffffffffffffffc | rbx &= 0xfffffffffffffffc; 0x004c0e01 neg rbx | rbx = -rbx; 0x004c0e04 mov esi, 0x74f300 | esi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c0e09 xor ebp, ebp | ebp = 0; 0x004c0e0b nop dword [rax + rax] | | do { 0x004c0e10 movups xmm0, xmmword [rsi + r15*2] | __asm ("movups xmm0, xmmword [rsi + r15*2]"); 0x004c0e15 movups xmm1, xmmword [rsi + r15*2 + 0x10] | __asm ("movups xmm1, xmmword [rsi + r15*2 + 0x10]"); 0x004c0e1b movups xmmword [rsi + r14*2], xmm0 | __asm ("movups xmmword [rsi + r14*2], xmm0"); 0x004c0e20 movups xmmword [rsi + r14*2 + 0x10], xmm1 | __asm ("movups xmmword [rsi + r14*2 + 0x10], xmm1"); 0x004c0e26 movups xmm0, xmmword [rsi + r15*2 + 0x20] | __asm ("movups xmm0, xmmword [rsi + r15*2 + 0x20]"); 0x004c0e2c movups xmm1, xmmword [rsi + r15*2 + 0x30] | __asm ("movups xmm1, xmmword [rsi + r15*2 + 0x30]"); 0x004c0e32 movups xmmword [rsi + r14*2 + 0x20], xmm0 | __asm ("movups xmmword [rsi + r14*2 + 0x20], xmm0"); 0x004c0e38 movups xmmword [rsi + r14*2 + 0x30], xmm1 | __asm ("movups xmmword [rsi + r14*2 + 0x30], xmm1"); 0x004c0e3e movups xmm0, xmmword [rsi + r15*2 + 0x40] | __asm ("movups xmm0, xmmword [rsi + r15*2 + 0x40]"); 0x004c0e44 movups xmm1, xmmword [rsi + r15*2 + 0x50] | __asm ("movups xmm1, xmmword [rsi + r15*2 + 0x50]"); 0x004c0e4a movups xmmword [rsi + r14*2 + 0x40], xmm0 | __asm ("movups xmmword [rsi + r14*2 + 0x40], xmm0"); 0x004c0e50 movups xmmword [rsi + r14*2 + 0x50], xmm1 | __asm ("movups xmmword [rsi + r14*2 + 0x50], xmm1"); 0x004c0e56 movdqu xmm0, xmmword [rsi + r15*2 + 0x60] | __asm ("movdqu xmm0, xmmword [rsi + r15*2 + 0x60]"); 0x004c0e5d movdqu xmm1, xmmword [rsi + r15*2 + 0x70] | __asm ("movdqu xmm1, xmmword [rsi + r15*2 + 0x70]"); 0x004c0e64 movdqu xmmword [rsi + r14*2 + 0x60], xmm0 | __asm ("movdqu xmmword [rsi + r14*2 + 0x60], xmm0"); 0x004c0e6b movdqu xmmword [rsi + r14*2 + 0x70], xmm1 | __asm ("movdqu xmmword [rsi + r14*2 + 0x70], xmm1"); 0x004c0e72 add rbp, 0x40 | rbp += 0x40; 0x004c0e76 sub rsi, 0xffffffffffffff80 | rsi -= 0xffffffffffffff80; 0x004c0e7a add rbx, 4 | rbx += 4; 0x004c0e7e jne 0x4c0e10 | | } while (rbx != 0); | label_18: 0x004c0e80 test rdx, rdx | | if (rdx == 0) { 0x004c0e83 je 0x4c0ed3 | goto label_19; | } 0x004c0e85 add r14, r14 | r14 += r14; 0x004c0e88 lea rsi, [rbp + rbp + 0x74f300] | rsi = rbp + rbp + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c0e90 neg rdx | rdx = -rdx; 0x004c0e93 nop word cs:[rax + rax] | 0x004c0e9d nop dword [rax] | | do { 0x004c0ea0 movdqu xmm0, xmmword [rdi + rbp*2 + 0x74f300] | __asm ("movdqu xmm0, xmmword [rdi + rbp*2 + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u]"); 0x004c0ea9 movdqu xmm1, xmmword [rdi + rbp*2 + 0x74f310] | __asm ("movdqu xmm1, xmmword [rdi + rbp*2 + 0x74f310]"); 0x004c0eb2 movdqu xmmword [r14 + rbp*2 + 0x74f300], xmm0 | __asm ("movdqu xmmword [r14 + rbp*2 + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u], xmm0"); 0x004c0ebc movdqu xmmword [r14 + rbp*2 + 0x74f310], xmm1 | __asm ("movdqu xmmword [r14 + rbp*2 + 0x74f310], xmm1"); 0x004c0ec6 add rbp, 0x10 | rbp += 0x10; 0x004c0eca add rsi, 0x20 | rsi += 0x20; 0x004c0ece inc rdx | rdx++; 0x004c0ed1 jne 0x4c0ea0 | | } while (rdx != 0); | label_19: 0x004c0ed3 cmp r10, r8 | 0x004c0ed6 mov rbx, qword [rsp + 0x60] | rbx = *((rsp + 0x60)); 0x004c0edb mov ebp, r13d | | if (r10 == r8) { 0x004c0ede je 0x4c0f11 | goto label_14; | } 0x004c0ee0 lea rax, [rax + r8*2] | rax = rax + r8*2; 0x004c0ee4 lea rcx, [rcx + r8*2] | rcx = rcx + r8*2; 0x004c0ee8 nop dword [rax + rax] | | label_16: 0x004c0ef0 sub r9, rax | r9 -= rax; 0x004c0ef3 lea rdx, [r9 + 0x74f300] | rdx = r9 + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c0efa xor esi, esi | esi = 0; 0x004c0efc nop dword [rax] | | do { 0x004c0f00 movzx edi, word [rax + rsi] | edi = *((rax + rsi)); 0x004c0f04 mov word [rcx + rsi], di | *((rcx + rsi)) = di; 0x004c0f08 add rsi, 2 | rsi += 2; 0x004c0f0c cmp rdx, rsi | 0x004c0f0f jne 0x4c0f00 | | } while (rdx != rsi); | label_14: 0x004c0f11 cmp byte [rip + 0x257a78], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c0f18 je 0x4c0f3b | 0x004c0f1a mov edx, dword [rip + 0x257a84] | edx = numCopyCtorCalls; 0x004c0f20 sub edx, r12d | edx -= r12d; 0x004c0f23 mov ecx, dword [rip + 0x257a83] | ecx = numCharCtorCalls; 0x004c0f29 sub ecx, dword [rsp + 0x18] | ecx -= *((rsp + 0x18)); 0x004c0f2d mov edi, 0x4f5c2a | 0x004c0f32 mov esi, ebp | esi = ebp; 0x004c0f34 xor eax, eax | eax = 0; 0x004c0f36 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_13: 0x004c0f3b cmp byte [rsp + 0x4c], 0 | | if (*((rsp + 0x4c)) == 0) { 0x004c0f40 je 0x4c0fa0 | goto label_20; | } 0x004c0f42 cmp r12d, dword [rip + 0x257a5b] | | if (r12d != *(obj.numCopyCtorCalls)) { 0x004c0f49 je 0x4c0f74 | 0x004c0f4b mov edi, 0x4f4c78 | 0x004c0f50 mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004c0f55 mov esi, 0x1005 | esi = 0x1005; 0x004c0f5a xor eax, eax | eax = 0; 0x004c0f5c call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c0f61 mov eax, dword [rip + 0x257a31] | eax = (anonymous namespace)::testStatus; 0x004c0f67 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c0f6a ja 0x4c0f74 | goto label_21; | } 0x004c0f6c inc eax | eax++; 0x004c0f6e mov dword [rip + 0x257a24], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_21: 0x004c0f74 mov eax, dword [rsp + 0x18] | eax = *((rsp + 0x18)); 0x004c0f78 cmp eax, dword [rip + 0x257a2e] | | if (eax == *(obj.numCharCtorCalls)) { 0x004c0f7e je 0x4c0ad0 | goto label_1; | } 0x004c0f84 mov edi, 0x4f4c78 | edi = "Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"; 0x004c0f89 mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004c0f8e mov esi, 0x1006 | esi = 0x1006; 0x004c0f93 jmp 0x4c0ff6 | goto label_22; | label_20: 0x004c0fa0 add r12d, dword [rsp + 0x10] | r12d += *((rsp + 0x10)); 0x004c0fa5 cmp r12d, dword [rip + 0x2579f8] | | if (r12d > *(obj.numCopyCtorCalls)) { 0x004c0fac jle 0x4c0fd7 | 0x004c0fae mov edi, 0x4f4c78 | 0x004c0fb3 mov edx, 0x4f5c78 | edx = "NUM_COPIES + NE <= numCopyCtorCalls"; 0x004c0fb8 mov esi, 0x1009 | esi = 0x1009; 0x004c0fbd xor eax, eax | eax = 0; 0x004c0fbf call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c0fc4 mov eax, dword [rip + 0x2579ce] | eax = (anonymous namespace)::testStatus; 0x004c0fca cmp eax, 0x64 | | if (eax > 0x64) { 0x004c0fcd ja 0x4c0fd7 | goto label_23; | } 0x004c0fcf inc eax | eax++; 0x004c0fd1 mov dword [rip + 0x2579c1], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_23: 0x004c0fd7 mov eax, dword [rsp + 0x18] | eax = *((rsp + 0x18)); 0x004c0fdb cmp eax, dword [rip + 0x2579cb] | | if (eax == *(obj.numCharCtorCalls)) { 0x004c0fe1 je 0x4c0ad0 | goto label_1; | } 0x004c0fe7 mov edi, 0x4f4c78 | 0x004c0fec mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004c0ff1 mov esi, 0x100a | esi = 0x100a; | label_22: 0x004c0ff6 xor eax, eax | eax = 0; 0x004c0ff8 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c0ffd mov eax, dword [rip + 0x257995] | eax = (anonymous namespace)::testStatus; 0x004c1003 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c1006 ja 0x4c0ad0 | goto label_1; | } 0x004c100c inc eax | eax++; 0x004c100e mov dword [rip + 0x257984], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004c1014 jmp 0x4c0ad0 | goto label_1; | label_9: 0x004c1019 cmp byte [rip + 0x257976], 0 | | if (*(obj.verbose) != 0) { 0x004c1020 je 0x4c102c | 0x004c1022 mov edi, 0x4f67d2 | 0x004c1027 call 0x401710 | puts ("\t\tfrom different type."); | } 0x004c102c xor ebx, ebx | ebx = 0; 0x004c102e jmp 0x4c105c | goto label_24; | label_2: 0x004c1030 mov edi, 0x74f300 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c1035 mov rsi, rbp | rsi = rbp; 0x004c1038 call 0x4dec90 | voidverify(unsignedshort*,char const*) (); 0x004c103d mov edi, 0x74f300 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c1042 mov rsi, rbp | rsi = rbp; 0x004c1045 call 0x4deed0 | voidcleanup(unsignedshort*,char const*) (); 0x004c104a mov rbx, qword [rsp + 0x18] | rbx = *((rsp + 0x18)); 0x004c104f inc rbx | rbx++; 0x004c1052 cmp rbx, 0x1e | | if (rbx == 0x1e) { 0x004c1056 je 0x4c158c | goto label_25; | } | label_24: 0x004c105c lea rbp, [rbx*8] | rbp = rbx*8; 0x004c1064 mov r12, qword [rbp + rbp*4 + 0x4f3b08] | r12 = *((rbp + rbp*4 + 0x4f3b08)); 0x004c106c mov rdi, r12 | 0x004c106f call 0x401790 | eax = strlen (*((rbp + rbp*4 + 0x4f3b08))); 0x004c1074 cmp eax, 0x11 | | if (eax >= 0x11) { 0x004c1077 jl 0x4c10a2 | 0x004c1079 mov edi, 0x4f4c78 | 0x004c107e mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004c1083 mov esi, 0x1019 | esi = 0x1019; 0x004c1088 xor eax, eax | eax = 0; 0x004c108a call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c108f mov eax, dword [rip + 0x257903] | eax = (anonymous namespace)::testStatus; 0x004c1095 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c1098 ja 0x4c10a2 | goto label_26; | } 0x004c109a inc eax | eax++; 0x004c109c mov dword [rip + 0x2578f6], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_26: 0x004c10a2 mov rdi, r12 | 0x004c10a5 call 0x401790 | rax = strlen (r12); 0x004c10aa cmp rax, 0x14 | | if (rax >= 0x14) { 0x004c10ae jb 0x4c10d9 | 0x004c10b0 mov edi, 0x4f4c78 | 0x004c10b5 mov edx, 0x4f5c9c | edx = "SPEC_CE_LEN > std::strlen(SPEC)"; 0x004c10ba mov esi, 0x101c | esi = 0x101c; 0x004c10bf xor eax, eax | eax = 0; 0x004c10c1 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c10c6 mov eax, dword [rip + 0x2578cc] | eax = (anonymous namespace)::testStatus; 0x004c10cc cmp eax, 0x64 | | if (eax > 0x64) { 0x004c10cf ja 0x4c10d9 | goto label_27; | } 0x004c10d1 inc eax | eax++; 0x004c10d3 mov dword [rip + 0x2578bf], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_27: 0x004c10d9 mov qword [rsp + 0x18], rbx | *((rsp + 0x18)) = rbx; 0x004c10de pxor xmm0, xmm0 | xmm0 = 0; 0x004c10e2 movdqa xmmword [rsp + 0x20], xmm0 | __asm ("movdqa xmmword [rsp + 0x20], xmm0"); 0x004c10e8 mov dword [rsp + 0x30], 0 | *((rsp + 0x30)) = 0; 0x004c10f0 mov al, byte [r12] | al = *(r12); 0x004c10f4 test al, al | | if (al == 0) { 0x004c10f6 je 0x4c1111 | goto label_28; | } 0x004c10f8 xor ecx, ecx | ecx = 0; 0x004c10fa nop word [rax + rax] | | do { 0x004c1100 mov byte [rsp + rcx + 0x20], al | *((rsp + rcx + 0x20)) = al; 0x004c1104 movzx eax, byte [r12 + rcx + 1] | eax = *((r12 + rcx + 1)); 0x004c110a inc rcx | rcx++; 0x004c110d test al, al | 0x004c110f jne 0x4c1100 | | } while (al != 0); | label_28: 0x004c1111 mov r14d, dword [rbp + rbp*4 + 0x4f3b00] | r14d = *((rbp + rbp*4 + obj.DATA_3)); 0x004c1119 movsxd rbx, dword [rbp + rbp*4 + 0x4f3b10] | rbx = *((rbp + rbp*4 + 0x4f3b10)); 0x004c1121 movsxd r15, dword [rbp + rbp*4 + 0x4f3b14] | r15 = *((rbp + rbp*4 + 0x4f3b14)); 0x004c1129 movsxd r13, dword [rbp + rbp*4 + 0x4f3b18] | r13 = *((rbp + rbp*4 + 0x4f3b18)); 0x004c1131 mov rbp, qword [rbp + rbp*4 + 0x4f3b20] | rbp = *((rbp + rbp*4 + 0x4f3b20)); 0x004c1139 cmp byte [rip + 0x257850], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c1140 je 0x4c1160 | 0x004c1142 mov qword [rsp], rbp | *(rsp) = rbp; 0x004c1146 mov edi, 0x4f5ab7 | 0x004c114b mov esi, r14d | esi = r14d; 0x004c114e mov rdx, r12 | rdx = r12; 0x004c1151 mov ecx, ebx | ecx = ebx; 0x004c1153 mov r8d, r15d | r8d = r15d; 0x004c1156 mov r9d, r13d | r9d = r13d; 0x004c1159 xor eax, eax | eax = 0; 0x004c115b call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004c1160 mov edi, 0x74f300 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c1165 mov rsi, r12 | rsi = r12; 0x004c1168 call 0x4deba0 | unsignedshort&gg(unsignedshort*,char const*) (); 0x004c116d mov edi, 0x74f300 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004c1172 mov rsi, r12 | rsi = r12; 0x004c1175 call 0x4dec90 | voidverify(unsignedshort*,char const*) (); 0x004c117a mov r12d, dword [rip + 0x257823] | r12d = numCopyCtorCalls; 0x004c1181 mov eax, dword [rip + 0x257825] | eax = numCharCtorCalls; 0x004c1187 mov dword [rsp + 0x40], eax | *((rsp + 0x40)) = eax; 0x004c118b cmp byte [rsp + 0x3c], 0 | | if (*((rsp + 0x3c)) == 0) { 0x004c1190 je 0x4c1350 | goto label_29; | } 0x004c1196 cmp byte [rip + 0x2577f3], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c119d je 0x4c11b2 | 0x004c119f cmp dword [rip + 0x257396], 0 | | if (*(0x0071853c) == 0) { 0x004c11a6 je 0x4c11b2 | goto label_30; | } 0x004c11a8 mov edi, 0x4f425a | 0x004c11ad call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_30: 0x004c11b2 mov dword [rip + 0x257380], 0 | *(0x0071853c) = 0; 0x004c11bc cmp byte [rip + 0x2577d2], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c11c3 je 0x4c11cf | 0x004c11c5 mov edi, 0x4f4281 | 0x004c11ca call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004c11cf mov rax, qword [rip + 0x25764a] | rax = Z; 0x004c11d6 mov qword [rsp + 0x50], 0x4f6858 | *((rsp + 0x50)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004c11df mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; 0x004c11e4 mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004c11ec test rax, rax | | if (rax == 0) { 0x004c11ef je 0x4c14ea | goto label_31; | } | label_3: 0x004c11f5 cmp qword [rsp + 0x18], 6 | | if (*((rsp + 0x18)) < 6) { 0x004c11fb jb 0x4c1300 | goto label_32; | } 0x004c1201 lea rcx, [rsp + rbx + 0x20] | rcx = rsp + rbx + 0x20; 0x004c1206 lea rsi, [r13 + r13 + 0x74f300] | rsi = r13 + r13 + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c120e lea eax, [rbx + r15] | eax = rbx + r15; 0x004c1212 movsxd r9, eax | r9 = (int64_t) eax; 0x004c1215 mov rdx, r9 | rdx = r9; 0x004c1218 sub rdx, rbx | rdx -= rbx; 0x004c121b cmp rdx, 0x10 | | if (rdx < 0x10) { 0x004c121f jb 0x4c12db | goto label_33; | } 0x004c1225 mov r11, rbp | r11 = rbp; 0x004c1228 mov r8, rdx | r8 = rdx; 0x004c122b and r8, 0xfffffffffffffff0 | r8 &= 0xfffffffffffffff0; 0x004c122f lea rdi, [r8 - 0x10] | rdi = r8 - 0x10; 0x004c1233 mov r10, rdi | r10 = rdi; 0x004c1236 shr r10, 4 | r10 >>= 4; 0x004c123a inc r10 | r10++; 0x004c123d test rdi, rdi | | if (rdi == 0) { 0x004c1240 je 0x4c157b | goto label_34; | } 0x004c1246 lea rax, [rsp + 0x38] | rax = rsp + 0x38; 0x004c124b add rbx, rax | rbx += rax; 0x004c124e mov rbp, r10 | 0x004c1251 and rbp, 0xfffffffffffffffe | rbp &= 0xfffffffffffffffe; 0x004c1255 neg rbp | rbp = -rbp; 0x004c1258 xor edi, edi | edi = 0; 0x004c125a nop word [rax + rax] | | do { 0x004c1260 pmovsxbw xmm0, qword [rbx + rdi - 0x18] | __asm ("pmovsxbw xmm0, qword [rbx + rdi - 0x18]"); 0x004c1267 pmovsxbw xmm1, qword [rbx + rdi - 0x10] | __asm ("pmovsxbw xmm1, qword [rbx + rdi - 0x10]"); 0x004c126e lea rax, [r13 + r13] | rax = r13 + r13; 0x004c1273 movdqu xmmword [rax + rdi*2 + 0x74f300], xmm0 | __asm ("movdqu xmmword [rax + rdi*2 + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u], xmm0"); 0x004c127c movdqu xmmword [rax + rdi*2 + 0x74f310], xmm1 | __asm ("movdqu xmmword [rax + rdi*2 + 0x74f310], xmm1"); 0x004c1285 pmovsxbw xmm0, qword [rbx + rdi - 8] | __asm ("pmovsxbw xmm0, qword [rbx + rdi - 8]"); 0x004c128c pmovsxbw xmm1, qword [rbx + rdi] | __asm ("pmovsxbw xmm1, qword [rbx + rdi]"); 0x004c1292 movdqu xmmword [rax + rdi*2 + 0x74f320], xmm0 | __asm ("movdqu xmmword [rax + rdi*2 + 0x74f320], xmm0"); 0x004c129b movdqu xmmword [rax + rdi*2 + 0x74f330], xmm1 | __asm ("movdqu xmmword [rax + rdi*2 + 0x74f330], xmm1"); 0x004c12a4 add rdi, 0x20 | rdi += 0x20; 0x004c12a8 add rbp, 2 | rbp += 2; 0x004c12ac jne 0x4c1260 | | } while (rbp != 0); 0x004c12ae test r10b, 1 | | if ((r10b & 1) != 0) { 0x004c12b2 je 0x4c12cc | | label_6: 0x004c12b4 pmovsxbw xmm0, qword [rcx + rdi] | __asm ("pmovsxbw xmm0, qword [rcx + rdi]"); 0x004c12ba pmovsxbw xmm1, qword [rcx + rdi + 8] | __asm ("pmovsxbw xmm1, qword [rcx + rdi + 8]"); 0x004c12c1 movdqu xmmword [rsi + rdi*2], xmm0 | __asm ("movdqu xmmword [rsi + rdi*2], xmm0"); 0x004c12c6 movdqu xmmword [rsi + rdi*2 + 0x10], xmm1 | __asm ("movdqu xmmword [rsi + rdi*2 + 0x10], xmm1"); | } | label_7: 0x004c12cc cmp rdx, r8 | 0x004c12cf mov rbp, r11 | | if (rdx == r8) { 0x004c12d2 je 0x4c1300 | goto label_32; | } 0x004c12d4 add rcx, r8 | rcx += r8; 0x004c12d7 lea rsi, [rsi + r8*2] | rsi = rsi + r8*2; | label_33: 0x004c12db sub r9, rcx | r9 -= rcx; 0x004c12de lea rax, [rsp + r9 + 0x20] | rax = rsp + r9 + 0x20; 0x004c12e3 xor edi, edi | edi = 0; 0x004c12e5 nop word cs:[rax + rax] | 0x004c12ef nop | | do { 0x004c12f0 movsx edx, byte [rcx + rdi] | edx = *((rcx + rdi)); 0x004c12f4 mov word [rsi + rdi*2], dx | *((rsi + rdi*2)) = dx; 0x004c12f8 inc rdi | rdi++; 0x004c12fb cmp rax, rdi | 0x004c12fe jne 0x4c12f0 | | } while (rax != rdi); | label_32: 0x004c1300 mov rax, qword [rsp + 0x50] | rax = *((rsp + 0x50)); 0x004c1305 lea rdi, [rsp + 0x50] | rdi = rsp + 0x50; 0x004c130a mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004c1311 call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004c1314 cmp byte [rip + 0x25767a], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004c131b je 0x4c1327 | 0x004c131d mov edi, 0x4f43e1 | 0x004c1322 call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004c1327 cmp byte [rip + 0x257662], 0 | | if (*(obj.veryVerbose) == 0) { 0x004c132e je 0x4c14ab | goto label_35; | } 0x004c1334 mov edi, 0xa | 0x004c1339 call 0x401720 | putchar (0xa); 0x004c133e mov r11d, r14d | r11d = r14d; 0x004c1341 jmp 0x4c1480 | goto label_36; | label_29: 0x004c1350 cmp qword [rip + 0x2574c8], 0 | | if (*(obj.Z) == 0) { 0x004c1358 jne 0x4c1370 | 0x004c135a mov rax, qword [rip + 0x28ff57] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c1361 test rax, rax | | if (rax != 0) { 0x004c1364 jne 0x4c1370 | goto label_37; | } 0x004c1366 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c136b nop dword [rax + rax] | | } | label_37: 0x004c1370 cmp qword [rsp + 0x18], 6 | 0x004c1376 mov r11d, r14d | r11d = r14d; | if (*((rsp + 0x18)) < 6) { 0x004c1379 jb 0x4c1480 | goto label_36; | } 0x004c137f lea rax, [r13 + r13 + 0x74f300] | rax = r13 + r13 + obj_testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u; 0x004c1387 lea rcx, [rsp + rbx + 0x20] | rcx = rsp + rbx + 0x20; 0x004c138c add r15, rbx | r15 += rbx; 0x004c138f mov rdx, r15 | rdx = r15; 0x004c1392 sub rdx, rbx | rdx -= rbx; 0x004c1395 cmp rdx, 0x10 | | if (rdx < 0x10) { 0x004c1399 jb 0x4c145b | goto label_38; | } 0x004c139f mov r10, rbp | r10 = rbp; 0x004c13a2 mov r8, rdx | r8 = rdx; 0x004c13a5 and r8, 0xfffffffffffffff0 | r8 &= 0xfffffffffffffff0; 0x004c13a9 lea rdi, [r8 - 0x10] | rdi = r8 - 0x10; 0x004c13ad mov r9, rdi | r9 = rdi; 0x004c13b0 shr r9, 4 | r9 >>= 4; 0x004c13b4 inc r9 | r9++; 0x004c13b7 test rdi, rdi | | if (rdi == 0) { 0x004c13ba je 0x4c156a | goto label_39; | } 0x004c13c0 lea rsi, [rsp + 0x38] | rsi = rsp + 0x38; 0x004c13c5 add rbx, rsi | rbx += rsi; 0x004c13c8 mov rdi, r9 | rdi = r9; 0x004c13cb and rdi, 0xfffffffffffffffe | rdi &= 0xfffffffffffffffe; 0x004c13cf neg rdi | rdi = -rdi; 0x004c13d2 xor ebp, ebp | ebp = 0; 0x004c13d4 nop word cs:[rax + rax] | 0x004c13de nop | | do { 0x004c13e0 pmovsxbw xmm0, qword [rbx + rbp - 0x18] | __asm ("pmovsxbw xmm0, qword [rbx + rbp - 0x18]"); 0x004c13e7 pmovsxbw xmm1, qword [rbx + rbp - 0x10] | __asm ("pmovsxbw xmm1, qword [rbx + rbp - 0x10]"); 0x004c13ee lea rsi, [r13 + r13] | rsi = r13 + r13; 0x004c13f3 movdqu xmmword [rsi + rbp*2 + 0x74f300], xmm0 | __asm ("movdqu xmmword [rsi + rbp*2 + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u], xmm0"); 0x004c13fc movdqu xmmword [rsi + rbp*2 + 0x74f310], xmm1 | __asm ("movdqu xmmword [rsi + rbp*2 + 0x74f310], xmm1"); 0x004c1405 pmovsxbw xmm0, qword [rbx + rbp - 8] | __asm ("pmovsxbw xmm0, qword [rbx + rbp - 8]"); 0x004c140c pmovsxbw xmm1, qword [rbx + rbp] | __asm ("pmovsxbw xmm1, qword [rbx + rbp]"); 0x004c1412 movdqu xmmword [rsi + rbp*2 + 0x74f320], xmm0 | __asm ("movdqu xmmword [rsi + rbp*2 + 0x74f320], xmm0"); 0x004c141b movdqu xmmword [rsi + rbp*2 + 0x74f330], xmm1 | __asm ("movdqu xmmword [rsi + rbp*2 + 0x74f330], xmm1"); 0x004c1424 add rbp, 0x20 | rbp += 0x20; 0x004c1428 add rdi, 2 | rdi += 2; 0x004c142c jne 0x4c13e0 | | } while (rdi != 0); 0x004c142e test r9b, 1 | | if ((r9b & 1) != 0) { 0x004c1432 je 0x4c144c | | label_4: 0x004c1434 pmovsxbw xmm0, qword [rcx + rbp] | __asm ("pmovsxbw xmm0, qword [rcx + rbp]"); 0x004c143a pmovsxbw xmm1, qword [rcx + rbp + 8] | __asm ("pmovsxbw xmm1, qword [rcx + rbp + 8]"); 0x004c1441 movdqu xmmword [rax + rbp*2], xmm0 | __asm ("movdqu xmmword [rax + rbp*2], xmm0"); 0x004c1446 movdqu xmmword [rax + rbp*2 + 0x10], xmm1 | __asm ("movdqu xmmword [rax + rbp*2 + 0x10], xmm1"); | } | label_5: 0x004c144c cmp rdx, r8 | 0x004c144f mov rbp, r10 | | if (rdx == r8) { 0x004c1452 je 0x4c1480 | goto label_36; | } 0x004c1454 add rcx, r8 | rcx += r8; 0x004c1457 lea rax, [rax + r8*2] | rax = rax + r8*2; | label_38: 0x004c145b sub r15, rcx | r15 -= rcx; 0x004c145e lea rdx, [rsp + r15 + 0x20] | rdx = rsp + r15 + 0x20; 0x004c1463 xor esi, esi | esi = 0; 0x004c1465 nop word cs:[rax + rax] | 0x004c146f nop | | do { 0x004c1470 movsx edi, byte [rcx + rsi] | edi = *((rcx + rsi)); 0x004c1474 mov word [rax + rsi*2], di | *((rax + rsi*2)) = di; 0x004c1478 inc rsi | rsi++; 0x004c147b cmp rdx, rsi | 0x004c147e jne 0x4c1470 | | } while (rdx != rsi); | label_36: 0x004c1480 cmp byte [rip + 0x257509], 0 | | if (*(obj.veryVerbose) != 0) { 0x004c1487 je 0x4c14ab | 0x004c1489 mov edx, dword [rip + 0x257515] | edx = numCopyCtorCalls; 0x004c148f sub edx, r12d | edx -= r12d; 0x004c1492 mov ecx, dword [rip + 0x257514] | ecx = numCharCtorCalls; 0x004c1498 sub ecx, dword [rsp + 0x40] | ecx -= *((rsp + 0x40)); 0x004c149c mov edi, 0x4f5c2a | 0x004c14a1 mov esi, r11d | esi = r11d; 0x004c14a4 xor eax, eax | eax = 0; 0x004c14a6 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_35: 0x004c14ab cmp r12d, dword [rip + 0x2574f2] | | if (r12d == *(obj.numCopyCtorCalls)) { 0x004c14b2 je 0x4c1030 | goto label_2; | } 0x004c14b8 mov edi, 0x4f4c78 | 0x004c14bd mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004c14c2 mov esi, 0x103f | esi = 0x103f; 0x004c14c7 xor eax, eax | eax = 0; 0x004c14c9 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004c14ce mov eax, dword [rip + 0x2574c4] | eax = (anonymous namespace)::testStatus; 0x004c14d4 cmp eax, 0x64 | | if (eax > 0x64) { 0x004c14d7 ja 0x4c1030 | goto label_2; | } 0x004c14dd inc eax | eax++; 0x004c14df mov dword [rip + 0x2574b3], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004c14e5 jmp 0x4c1030 | goto label_2; | label_31: 0x004c14ea mov eax, 1 | eax = 1; 0x004c14ef mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x004c14f4 mov rax, qword [rip + 0x28fdbd] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004c14fb test rax, rax | | if (rax != 0) { 0x004c14fe jne 0x4c11f5 | goto label_3; | } 0x004c1504 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004c1509 jmp 0x4c11f5 | goto label_3; | label_39: 0x004c156a xor ebp, ebp | ebp = 0; 0x004c156c test r9b, 1 | | if ((r9b & 1) != 0) { 0x004c1570 jne 0x4c1434 | goto label_4; | } 0x004c1576 jmp 0x4c144c | goto label_5; | label_34: 0x004c157b xor edi, edi | edi = 0; 0x004c157d test r10b, 1 | | if ((r10b & 1) != 0) { 0x004c1581 jne 0x4c12b4 | goto label_6; | } 0x004c1587 jmp 0x4c12cc | goto label_7; | label_25: 0x004c158c add rsp, 0x68 | 0x004c1590 pop rbx | 0x004c1591 pop r12 | 0x004c1593 pop r13 | 0x004c1595 pop r14 | 0x004c1597 pop r15 | 0x004c1599 pop rbp | 0x004c159a ret | return rax; | }