; assembly | /* r2dec pseudo code output */ | /* bslalg_arrayprimitives.t/assume @ 0x4bce10 */ | #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_8h; | uint32_t var_10h; | uint32_t var_1ch; | int64_t var_20h; | int64_t var_28h; | int64_t var_30h; | 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) */ 0x004bce10 push rbp | 0x004bce11 push r15 | 0x004bce13 push r14 | 0x004bce15 push r13 | 0x004bce17 push r12 | 0x004bce19 push rbx | 0x004bce1a sub rsp, 0x68 | 0x004bce1e mov dword [rsp + 0x1c], edx | *((rsp + 0x1c)) = edx; 0x004bce22 mov dword [rsp + 0x4c], esi | *((rsp + 0x4c)) = esi; 0x004bce26 cmp byte [rip + 0x25bb69], 0 | | if (*(obj.verbose) != 0) { 0x004bce2d je 0x4bce39 | 0x004bce2f mov edi, 0x4f67e9 | 0x004bce34 call 0x401710 | eax = puts ("\t\tfrom same type."); | } 0x004bce39 xor eax, eax | eax = 0; 0x004bce3b jmp 0x4bce6c | goto label_4; | label_1: 0x004bce40 mov edi, 0x74f130 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bce45 mov rsi, rbx | rsi = rbx; 0x004bce48 call 0x4dcfc0 | voidverify(int(**)(),char const*) (); 0x004bce4d mov edi, 0x74f130 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bce52 mov rsi, rbx | rsi = rbx; 0x004bce55 call 0x4dd240 | voidcleanup(int(**)(),char const*) (); 0x004bce5a mov rax, qword [rsp + 0x40] | rax = *((rsp + 0x40)); 0x004bce5f inc rax | rax++; 0x004bce62 cmp rax, 0x1e | | if (rax == 0x1e) { 0x004bce66 je 0x4bd389 | goto label_5; | } | label_4: 0x004bce6c mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x004bce71 lea rbx, [rax*8] | rbx = rax*8; 0x004bce79 mov r12, qword [rbx + rbx*4 + 0x4f3b08] | r12 = *((rbx + rbx*4 + 0x4f3b08)); 0x004bce81 mov rdi, r12 | 0x004bce84 call 0x401790 | eax = strlen (*((rbx + rbx*4 + 0x4f3b08))); 0x004bce89 cmp eax, 0x11 | | if (eax >= 0x11) { 0x004bce8c jl 0x4bceb7 | 0x004bce8e mov edi, 0x4f4c78 | 0x004bce93 mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004bce98 mov esi, 0xfe6 | esi = 0xfe6; 0x004bce9d xor eax, eax | eax = 0; 0x004bce9f call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bcea4 mov eax, dword [rip + 0x25baee] | eax = (anonymous namespace)::testStatus; 0x004bceaa cmp eax, 0x64 | | if (eax > 0x64) { 0x004bcead ja 0x4bceb7 | goto label_6; | } 0x004bceaf inc eax | eax++; 0x004bceb1 mov dword [rip + 0x25bae1], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_6: 0x004bceb7 mov r13d, dword [rbx + rbx*4 + 0x4f3b00] | r13d = *((rbx + rbx*4 + obj.DATA_3)); 0x004bcebf movsxd r15, dword [rbx + rbx*4 + 0x4f3b10] | r15 = *((rbx + rbx*4 + 0x4f3b10)); 0x004bcec7 mov ebp, dword [rbx + rbx*4 + 0x4f3b14] | ebp = *((rbx + rbx*4 + 0x4f3b14)); 0x004bcece movsxd r14, dword [rbx + rbx*4 + 0x4f3b18] | r14 = *((rbx + rbx*4 + 0x4f3b18)); 0x004bced6 mov rbx, qword [rbx + rbx*4 + 0x4f3b20] | rbx = *((rbx + rbx*4 + 0x4f3b20)); 0x004bcede cmp byte [rip + 0x25baab], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bcee5 je 0x4bcf06 | 0x004bcee7 mov qword [rsp], rbx | *(rsp) = rbx; 0x004bceeb mov edi, 0x4f5ab7 | 0x004bcef0 mov esi, r13d | esi = r13d; 0x004bcef3 mov rdx, r12 | rdx = r12; 0x004bcef6 mov ecx, r15d | ecx = r15d; 0x004bcef9 mov r8d, ebp | r8d = ebp; 0x004bcefc mov r9d, r14d | r9d = r14d; 0x004bceff xor eax, eax | eax = 0; 0x004bcf01 call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004bcf06 mov qword [rsp + 8], rbp | *((rsp + 8)) = rbp; 0x004bcf0b mov edi, 0x74f130 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bcf10 mov rsi, r12 | rsi = r12; 0x004bcf13 call 0x4dcec0 | int(*&gg(int(**)(),char const*))() (); 0x004bcf18 mov edi, 0x74f130 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bcf1d mov rsi, r12 | rsi = r12; 0x004bcf20 call 0x4dcfc0 | voidverify(int(**)(),char const*) (); 0x004bcf25 mov r12d, dword [rip + 0x25ba78] | r12d = numCopyCtorCalls; 0x004bcf2c mov eax, dword [rip + 0x25ba7a] | eax = numCharCtorCalls; 0x004bcf32 mov dword [rsp + 0x10], eax | *((rsp + 0x10)) = eax; 0x004bcf36 cmp byte [rsp + 0x1c], 0 | | if (*((rsp + 0x1c)) == 0) { 0x004bcf3b je 0x4bd020 | goto label_7; | } 0x004bcf41 cmp byte [rip + 0x25ba48], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bcf48 je 0x4bcf5d | 0x004bcf4a cmp dword [rip + 0x25b5b7], 0 | | if (*(obj.testCopyConstructWithIterators_int_______bool__bool__bool_::firstTime) == 0) { 0x004bcf51 je 0x4bcf5d | goto label_8; | } 0x004bcf53 mov edi, 0x4f425a | 0x004bcf58 call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_8: 0x004bcf5d mov dword [rip + 0x25b5a1], 0 | *(obj.testCopyConstructWithIterators_int_______bool__bool__bool_::firstTime) = 0; 0x004bcf67 cmp byte [rip + 0x25ba27], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004bcf6e je 0x4bcf7a | 0x004bcf70 mov edi, 0x4f4281 | 0x004bcf75 call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004bcf7a mov rax, qword [rip + 0x25b89f] | rax = Z; 0x004bcf81 mov qword [rsp + 0x20], 0x4f6858 | *((rsp + 0x20)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004bcf8a mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x004bcf8f mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004bcf97 test rax, rax | 0x004bcf9a je 0x4bd0cf | | while (rax != 0) { | label_0: 0x004bcfa0 lea rsi, [r15*8 + 0x74f130] | rsi = r15*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bcfa8 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x004bcfad add eax, r15d | eax += r15d; 0x004bcfb0 cdqe | rax = (int64_t) eax; 0x004bcfb2 lea rdx, [rax*8 + 0x74f130] | rdx = rax*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bcfba sub rdx, rsi | rdx -= rsi; | if (rdx != 0) { 0x004bcfbd je 0x4bcfcc | 0x004bcfbf lea rdi, [r14*8 + 0x74f130] | 0x004bcfc7 call 0x401930 | memcpy (r14*8 + obj.testCopyConstructWithIterators_int_______bool__bool__bool_::u, rsi, rdx); | } 0x004bcfcc mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x004bcfd1 lea rdi, [rsp + 0x20] | rdi = rsp + 0x20; 0x004bcfd6 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004bcfdd call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004bcfe0 cmp byte [rip + 0x25b9ae], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004bcfe7 je 0x4bcff3 | 0x004bcfe9 mov edi, 0x4f43e1 | 0x004bcfee call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004bcff3 cmp byte [rip + 0x25b996], 0 | | if (*(obj.veryVerbose) == 0) { 0x004bcffa je 0x4bd2ab | goto label_9; | } 0x004bd000 mov edi, 0xa | 0x004bd005 call 0x401720 | putchar (0xa); 0x004bd00a mov ebp, r13d | 0x004bd00d jmp 0x4bd281 | goto label_10; | label_7: 0x004bd020 cmp qword [rip + 0x25b7f8], 0 | | if (*(obj.Z) == 0) { 0x004bd028 jne 0x4bd040 | 0x004bd02a mov rax, qword [rip + 0x294287] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bd031 test rax, rax | | if (rax != 0) { 0x004bd034 jne 0x4bd040 | goto label_11; | } 0x004bd036 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004bd03b nop dword [rax + rax] | | } | label_11: 0x004bd040 cmp qword [rsp + 0x40], 6 | 0x004bd046 mov ebp, r13d | | if (*((rsp + 0x40)) < 6) { 0x004bd049 jb 0x4bd281 | goto label_10; | } 0x004bd04f lea rax, [r15*8 + 0x74f130] | rax = r15*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bd057 lea rcx, [r14*8 + 0x74f130] | rcx = r14*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bd05f mov rsi, qword [rsp + 8] | rsi = *((rsp + 8)); 0x004bd064 lea edx, [rsi + r15] | edx = rsi + r15; 0x004bd068 movsxd r9, edx | r9 = (int64_t) edx; 0x004bd06b shl r9, 3 | r9 <<= 3; 0x004bd06f lea rdi, [r15*8] | rdi = r15*8; 0x004bd077 mov r10, r9 | r10 = r9; 0x004bd07a sub r10, rdi | r10 -= rdi; 0x004bd07d add r10, 0xfffffffffffffff8 | r10 += 0xfffffffffffffff8; 0x004bd081 cmp r10, 0x18 | | if (r10 < 0x18) { 0x004bd085 jb 0x4bd260 | goto label_12; | } 0x004bd08b lea r8, [r14*8 + 0x74f130] | r8 = r14*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bd093 lea edx, [rsi + r15] | edx = rsi + r15; 0x004bd097 movsxd rdx, edx | rdx = (int64_t) edx; 0x004bd09a lea rbp, [rdx*8 + 0x74f130] | rbp = rdx*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bd0a2 cmp r8, rbp | | if (r8 >= rbp) { 0x004bd0a5 jae 0x4bd141 | goto label_13; | } 0x004bd0ab shl rdx, 3 | rdx <<= 3; 0x004bd0af sub rdx, rdi | rdx -= rdi; 0x004bd0b2 lea rdx, [rdx + r14*8 + 0x74f130] | rdx = rdx + r14*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bd0ba lea rsi, [r15*8 + 0x74f130] | rsi = r15*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bd0c2 cmp rsi, rdx | | if (rsi >= rdx) { 0x004bd0c5 jae 0x4bd141 | goto label_13; | } 0x004bd0c7 mov ebp, r13d | 0x004bd0ca jmp 0x4bd260 | goto label_12; 0x004bd0cf mov ebp, 1 | 0x004bd0d4 mov rax, qword [rip + 0x2941dd] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bd0db test rax, rax | 0x004bd0de jne 0x4bcfa0 | | } 0x004bd0e4 call 0x4eec50 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004bd0e9 jmp 0x4bcfa0 | goto label_0; | label_13: 0x004bd141 mov qword [rsp + 0x60], rbx | *((rsp + 0x60)) = rbx; 0x004bd146 shr r10, 3 | r10 >>= 3; 0x004bd14a inc r10 | r10++; 0x004bd14d mov r8, r10 | r8 = r10; 0x004bd150 and r8, 0xfffffffffffffffc | r8 &= 0xfffffffffffffffc; 0x004bd154 lea rsi, [r8 - 4] | rsi = r8 - 4; 0x004bd158 mov rbx, rsi | rbx = rsi; 0x004bd15b shr rbx, 2 | rbx >>= 2; 0x004bd15f inc rbx | rbx++; 0x004bd162 mov edx, ebx | edx = ebx; 0x004bd164 and edx, 3 | edx &= 3; 0x004bd167 cmp rsi, 0xc | | if (rsi < 0xc) { 0x004bd16b jae 0x4bd174 | 0x004bd16d xor ebp, ebp | ebp = 0; 0x004bd16f jmp 0x4bd1fc | goto label_14; | } 0x004bd174 and rbx, 0xfffffffffffffffc | rbx &= 0xfffffffffffffffc; 0x004bd178 neg rbx | rbx = -rbx; 0x004bd17b mov esi, 0x74f130 | esi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bd180 xor ebp, ebp | ebp = 0; 0x004bd182 nop word cs:[rax + rax] | 0x004bd18c nop dword [rax] | | do { 0x004bd190 movups xmm0, xmmword [rsi + r15*8] | __asm ("movups xmm0, xmmword [rsi + r15*8]"); 0x004bd195 movups xmm1, xmmword [rsi + r15*8 + 0x10] | __asm ("movups xmm1, xmmword [rsi + r15*8 + 0x10]"); 0x004bd19b movups xmmword [rsi + r14*8], xmm0 | __asm ("movups xmmword [rsi + r14*8], xmm0"); 0x004bd1a0 movups xmmword [rsi + r14*8 + 0x10], xmm1 | __asm ("movups xmmword [rsi + r14*8 + 0x10], xmm1"); 0x004bd1a6 movups xmm0, xmmword [rsi + r15*8 + 0x20] | __asm ("movups xmm0, xmmword [rsi + r15*8 + 0x20]"); 0x004bd1ac movups xmm1, xmmword [rsi + r15*8 + 0x30] | __asm ("movups xmm1, xmmword [rsi + r15*8 + 0x30]"); 0x004bd1b2 movups xmmword [rsi + r14*8 + 0x20], xmm0 | __asm ("movups xmmword [rsi + r14*8 + 0x20], xmm0"); 0x004bd1b8 movups xmmword [rsi + r14*8 + 0x30], xmm1 | __asm ("movups xmmword [rsi + r14*8 + 0x30], xmm1"); 0x004bd1be movups xmm0, xmmword [rsi + r15*8 + 0x40] | __asm ("movups xmm0, xmmword [rsi + r15*8 + 0x40]"); 0x004bd1c4 movups xmm1, xmmword [rsi + r15*8 + 0x50] | __asm ("movups xmm1, xmmword [rsi + r15*8 + 0x50]"); 0x004bd1ca movups xmmword [rsi + r14*8 + 0x40], xmm0 | __asm ("movups xmmword [rsi + r14*8 + 0x40], xmm0"); 0x004bd1d0 movups xmmword [rsi + r14*8 + 0x50], xmm1 | __asm ("movups xmmword [rsi + r14*8 + 0x50], xmm1"); 0x004bd1d6 movups xmm0, xmmword [rsi + r15*8 + 0x60] | __asm ("movups xmm0, xmmword [rsi + r15*8 + 0x60]"); 0x004bd1dc movups xmm1, xmmword [rsi + r15*8 + 0x70] | __asm ("movups xmm1, xmmword [rsi + r15*8 + 0x70]"); 0x004bd1e2 movups xmmword [rsi + r14*8 + 0x60], xmm0 | __asm ("movups xmmword [rsi + r14*8 + 0x60], xmm0"); 0x004bd1e8 movups xmmword [rsi + r14*8 + 0x70], xmm1 | __asm ("movups xmmword [rsi + r14*8 + 0x70], xmm1"); 0x004bd1ee add rbp, 0x10 | rbp += 0x10; 0x004bd1f2 sub rsi, 0xffffffffffffff80 | rsi -= 0xffffffffffffff80; 0x004bd1f6 add rbx, 4 | rbx += 4; 0x004bd1fa jne 0x4bd190 | | } while (rbx != 0); | label_14: 0x004bd1fc test rdx, rdx | | if (rdx == 0) { 0x004bd1ff je 0x4bd23f | goto label_15; | } 0x004bd201 shl r14, 3 | r14 <<= 3; 0x004bd205 lea rsi, [rbp*8 + 0x74f130] | rsi = rbp*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bd20d neg rdx | rdx = -rdx; | do { 0x004bd210 movups xmm0, xmmword [rdi + rbp*8 + 0x74f130] | __asm ("movups xmm0, xmmword [rdi + rbp*8 + obj.testCopyConstructWithIterators_int_______bool__bool__bool_::u]"); 0x004bd218 movups xmm1, xmmword [rdi + rbp*8 + 0x74f140] | __asm ("movups xmm1, xmmword [rdi + rbp*8 + 0x74f140]"); 0x004bd220 movups xmmword [r14 + rbp*8 + 0x74f130], xmm0 | __asm ("movups xmmword [r14 + rbp*8 + obj.testCopyConstructWithIterators_int_______bool__bool__bool_::u], xmm0"); 0x004bd229 movups xmmword [r14 + rbp*8 + 0x74f140], xmm1 | __asm ("movups xmmword [r14 + rbp*8 + 0x74f140], xmm1"); 0x004bd232 add rbp, 4 | rbp += 4; 0x004bd236 add rsi, 0x20 | rsi += 0x20; 0x004bd23a inc rdx | rdx++; 0x004bd23d jne 0x4bd210 | | } while (rdx != 0); | label_15: 0x004bd23f cmp r10, r8 | 0x004bd242 mov rbx, qword [rsp + 0x60] | rbx = *((rsp + 0x60)); 0x004bd247 mov ebp, r13d | | if (r10 == r8) { 0x004bd24a je 0x4bd281 | goto label_10; | } 0x004bd24c lea rax, [rax + r8*8] | rax = rax + r8*8; 0x004bd250 lea rcx, [rcx + r8*8] | rcx = rcx + r8*8; 0x004bd254 nop word cs:[rax + rax] | 0x004bd25e nop | | label_12: 0x004bd260 sub r9, rax | r9 -= rax; 0x004bd263 lea rdx, [r9 + 0x74f130] | rdx = r9 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bd26a xor esi, esi | esi = 0; 0x004bd26c nop dword [rax] | | do { 0x004bd270 mov rdi, qword [rax + rsi] | rdi = *((rax + rsi)); 0x004bd274 mov qword [rcx + rsi], rdi | *((rcx + rsi)) = rdi; 0x004bd278 add rsi, 8 | rsi += 8; 0x004bd27c cmp rdx, rsi | 0x004bd27f jne 0x4bd270 | | } while (rdx != rsi); | label_10: 0x004bd281 cmp byte [rip + 0x25b708], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bd288 je 0x4bd2ab | 0x004bd28a mov edx, dword [rip + 0x25b714] | edx = numCopyCtorCalls; 0x004bd290 sub edx, r12d | edx -= r12d; 0x004bd293 mov ecx, dword [rip + 0x25b713] | ecx = numCharCtorCalls; 0x004bd299 sub ecx, dword [rsp + 0x10] | ecx -= *((rsp + 0x10)); 0x004bd29d mov edi, 0x4f5c2a | 0x004bd2a2 mov esi, ebp | esi = ebp; 0x004bd2a4 xor eax, eax | eax = 0; 0x004bd2a6 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_9: 0x004bd2ab cmp byte [rsp + 0x4c], 0 | | if (*((rsp + 0x4c)) == 0) { 0x004bd2b0 je 0x4bd310 | goto label_16; | } 0x004bd2b2 cmp r12d, dword [rip + 0x25b6eb] | | if (r12d != *(obj.numCopyCtorCalls)) { 0x004bd2b9 je 0x4bd2e4 | 0x004bd2bb mov edi, 0x4f4c78 | 0x004bd2c0 mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004bd2c5 mov esi, 0x1005 | esi = 0x1005; 0x004bd2ca xor eax, eax | eax = 0; 0x004bd2cc call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bd2d1 mov eax, dword [rip + 0x25b6c1] | eax = (anonymous namespace)::testStatus; 0x004bd2d7 cmp eax, 0x64 | | if (eax > 0x64) { 0x004bd2da ja 0x4bd2e4 | goto label_17; | } 0x004bd2dc inc eax | eax++; 0x004bd2de mov dword [rip + 0x25b6b4], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_17: 0x004bd2e4 mov eax, dword [rsp + 0x10] | eax = *((rsp + 0x10)); 0x004bd2e8 cmp eax, dword [rip + 0x25b6be] | | if (eax == *(obj.numCharCtorCalls)) { 0x004bd2ee je 0x4bce40 | goto label_1; | } 0x004bd2f4 mov edi, 0x4f4c78 | edi = "Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"; 0x004bd2f9 mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004bd2fe mov esi, 0x1006 | esi = 0x1006; 0x004bd303 jmp 0x4bd366 | goto label_18; | label_16: 0x004bd310 add r12d, dword [rsp + 8] | r12d += *((rsp + 8)); 0x004bd315 cmp r12d, dword [rip + 0x25b688] | | if (r12d > *(obj.numCopyCtorCalls)) { 0x004bd31c jle 0x4bd347 | 0x004bd31e mov edi, 0x4f4c78 | 0x004bd323 mov edx, 0x4f5c78 | edx = "NUM_COPIES + NE <= numCopyCtorCalls"; 0x004bd328 mov esi, 0x1009 | esi = 0x1009; 0x004bd32d xor eax, eax | eax = 0; 0x004bd32f call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bd334 mov eax, dword [rip + 0x25b65e] | eax = (anonymous namespace)::testStatus; 0x004bd33a cmp eax, 0x64 | | if (eax > 0x64) { 0x004bd33d ja 0x4bd347 | goto label_19; | } 0x004bd33f inc eax | eax++; 0x004bd341 mov dword [rip + 0x25b651], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_19: 0x004bd347 mov eax, dword [rsp + 0x10] | eax = *((rsp + 0x10)); 0x004bd34b cmp eax, dword [rip + 0x25b65b] | | if (eax == *(obj.numCharCtorCalls)) { 0x004bd351 je 0x4bce40 | goto label_1; | } 0x004bd357 mov edi, 0x4f4c78 | 0x004bd35c mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004bd361 mov esi, 0x100a | esi = 0x100a; | label_18: 0x004bd366 xor eax, eax | eax = 0; 0x004bd368 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bd36d mov eax, dword [rip + 0x25b625] | eax = (anonymous namespace)::testStatus; 0x004bd373 cmp eax, 0x64 | | if (eax > 0x64) { 0x004bd376 ja 0x4bce40 | goto label_1; | } 0x004bd37c inc eax | eax++; 0x004bd37e mov dword [rip + 0x25b614], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004bd384 jmp 0x4bce40 | goto label_1; | label_5: 0x004bd389 cmp byte [rip + 0x25b606], 0 | | if (*(obj.verbose) != 0) { 0x004bd390 je 0x4bd39c | 0x004bd392 mov edi, 0x4f67d2 | 0x004bd397 call 0x401710 | puts ("\t\tfrom different type."); | } 0x004bd39c xor r13d, r13d | r13d = 0; 0x004bd39f jmp 0x4bd3d7 | goto label_20; | label_2: 0x004bd3b0 mov edi, 0x74f130 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bd3b5 mov rsi, rbp | rsi = rbp; 0x004bd3b8 call 0x4dcfc0 | voidverify(int(**)(),char const*) (); 0x004bd3bd mov edi, 0x74f130 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bd3c2 mov rsi, rbp | rsi = rbp; 0x004bd3c5 call 0x4dd240 | voidcleanup(int(**)(),char const*) (); 0x004bd3ca inc r13 | r13++; 0x004bd3cd cmp r13, 0x1e | | if (r13 == 0x1e) { 0x004bd3d1 je 0x4bd8fa | goto label_21; | } | label_20: 0x004bd3d7 lea rbp, [r13*8] | rbp = r13*8; 0x004bd3df mov r12, qword [rbp + rbp*4 + 0x4f3b08] | r12 = *((rbp + rbp*4 + 0x4f3b08)); 0x004bd3e7 mov rdi, r12 | 0x004bd3ea call 0x401790 | eax = strlen (*((rbp + rbp*4 + 0x4f3b08))); 0x004bd3ef cmp eax, 0x11 | | if (eax >= 0x11) { 0x004bd3f2 jl 0x4bd41d | 0x004bd3f4 mov edi, 0x4f4c78 | 0x004bd3f9 mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004bd3fe mov esi, 0x1019 | esi = 0x1019; 0x004bd403 xor eax, eax | eax = 0; 0x004bd405 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bd40a mov eax, dword [rip + 0x25b588] | eax = (anonymous namespace)::testStatus; 0x004bd410 cmp eax, 0x64 | | if (eax > 0x64) { 0x004bd413 ja 0x4bd41d | goto label_22; | } 0x004bd415 inc eax | eax++; 0x004bd417 mov dword [rip + 0x25b57b], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_22: 0x004bd41d mov rdi, r12 | 0x004bd420 call 0x401790 | rax = strlen (r12); 0x004bd425 cmp rax, 0x14 | | if (rax >= 0x14) { 0x004bd429 jb 0x4bd454 | 0x004bd42b mov edi, 0x4f4c78 | 0x004bd430 mov edx, 0x4f5c9c | edx = "SPEC_CE_LEN > std::strlen(SPEC)"; 0x004bd435 mov esi, 0x101c | esi = 0x101c; 0x004bd43a xor eax, eax | eax = 0; 0x004bd43c call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bd441 mov eax, dword [rip + 0x25b551] | eax = (anonymous namespace)::testStatus; 0x004bd447 cmp eax, 0x64 | | if (eax > 0x64) { 0x004bd44a ja 0x4bd454 | goto label_23; | } 0x004bd44c inc eax | eax++; 0x004bd44e mov dword [rip + 0x25b544], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_23: 0x004bd454 mov qword [rsp + 0x10], r13 | *((rsp + 0x10)) = r13; 0x004bd459 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004bd45c movaps xmmword [rsp + 0x20], xmm0 | *((rsp + 0x20)) = xmm0; 0x004bd461 mov dword [rsp + 0x30], 0 | *((rsp + 0x30)) = 0; 0x004bd469 mov al, byte [r12] | al = *(r12); 0x004bd46d test al, al | | if (al == 0) { 0x004bd46f je 0x4bd491 | goto label_24; | } 0x004bd471 xor ecx, ecx | ecx = 0; 0x004bd473 nop word cs:[rax + rax] | 0x004bd47d nop dword [rax] | | do { 0x004bd480 mov byte [rsp + rcx + 0x20], al | *((rsp + rcx + 0x20)) = al; 0x004bd484 movzx eax, byte [r12 + rcx + 1] | eax = *((r12 + rcx + 1)); 0x004bd48a inc rcx | rcx++; 0x004bd48d test al, al | 0x004bd48f jne 0x4bd480 | | } while (al != 0); | label_24: 0x004bd491 mov r14d, dword [rbp + rbp*4 + 0x4f3b00] | r14d = *((rbp + rbp*4 + obj.DATA_3)); 0x004bd499 movsxd rbx, dword [rbp + rbp*4 + 0x4f3b10] | rbx = *((rbp + rbp*4 + 0x4f3b10)); 0x004bd4a1 movsxd r15, dword [rbp + rbp*4 + 0x4f3b14] | r15 = *((rbp + rbp*4 + 0x4f3b14)); 0x004bd4a9 movsxd r13, dword [rbp + rbp*4 + 0x4f3b18] | r13 = *((rbp + rbp*4 + 0x4f3b18)); 0x004bd4b1 mov rbp, qword [rbp + rbp*4 + 0x4f3b20] | rbp = *((rbp + rbp*4 + 0x4f3b20)); 0x004bd4b9 cmp byte [rip + 0x25b4d0], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bd4c0 je 0x4bd4e0 | 0x004bd4c2 mov qword [rsp], rbp | *(rsp) = rbp; 0x004bd4c6 mov edi, 0x4f5ab7 | 0x004bd4cb mov esi, r14d | esi = r14d; 0x004bd4ce mov rdx, r12 | rdx = r12; 0x004bd4d1 mov ecx, ebx | ecx = ebx; 0x004bd4d3 mov r8d, r15d | r8d = r15d; 0x004bd4d6 mov r9d, r13d | r9d = r13d; 0x004bd4d9 xor eax, eax | eax = 0; 0x004bd4db call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004bd4e0 mov edi, 0x74f130 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bd4e5 mov rsi, r12 | rsi = r12; 0x004bd4e8 call 0x4dcec0 | int(*&gg(int(**)(),char const*))() (); 0x004bd4ed mov edi, 0x74f130 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bd4f2 mov rsi, r12 | rsi = r12; 0x004bd4f5 call 0x4dcfc0 | voidverify(int(**)(),char const*) (); 0x004bd4fa mov r12d, dword [rip + 0x25b4a3] | r12d = numCopyCtorCalls; 0x004bd501 mov eax, dword [rip + 0x25b4a5] | eax = numCharCtorCalls; 0x004bd507 mov dword [rsp + 0x40], eax | *((rsp + 0x40)) = eax; 0x004bd50b cmp byte [rsp + 0x1c], 0 | | if (*((rsp + 0x1c)) == 0) { 0x004bd510 je 0x4bd6d0 | goto label_25; | } 0x004bd516 cmp byte [rip + 0x25b473], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bd51d je 0x4bd532 | 0x004bd51f cmp dword [rip + 0x25afe6], 0 | | if (*(0x0071850c) == 0) { 0x004bd526 je 0x4bd532 | goto label_26; | } 0x004bd528 mov edi, 0x4f425a | 0x004bd52d call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_26: 0x004bd532 mov dword [rip + 0x25afd0], 0 | *(0x0071850c) = 0; 0x004bd53c cmp byte [rip + 0x25b452], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004bd543 je 0x4bd54f | 0x004bd545 mov edi, 0x4f4281 | 0x004bd54a call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004bd54f mov rax, qword [rip + 0x25b2ca] | rax = Z; 0x004bd556 mov qword [rsp + 0x50], 0x4f6858 | *((rsp + 0x50)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004bd55f mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; 0x004bd564 mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004bd56c test rax, rax | | if (rax == 0) { 0x004bd56f je 0x4bd87a | goto label_27; | } | label_3: 0x004bd575 cmp qword [rsp + 0x10], 6 | | if (*((rsp + 0x10)) < 6) { 0x004bd57b jb 0x4bd688 | goto label_28; | } 0x004bd581 add r15d, ebx | r15d += ebx; 0x004bd584 movsxd rax, r15d | rax = (int64_t) r15d; 0x004bd587 lea rcx, [rsp + rbx + 0x20] | rcx = rsp + rbx + 0x20; 0x004bd58c lea rsi, [r13*8 + 0x74f130] | rsi = r13*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bd594 mov edx, eax | edx = eax; 0x004bd596 sub edx, ebx | edx -= ebx; 0x004bd598 not rbx | rbx = ~rbx; 0x004bd59b add rbx, rax | rbx += rax; 0x004bd59e and rdx, 7 | rdx &= 7; | if (rdx == 0) { 0x004bd5a2 je 0x4bd5cb | goto label_29; | } 0x004bd5a4 nop word cs:[rax + rax] | 0x004bd5ae nop | | do { 0x004bd5b0 movsx rdi, byte [rcx] | rdi = *(rcx); 0x004bd5b4 mov rdi, qword [rdi*8 + 0x7171d0] | rdi = *((rdi*8 + obj.funcPtrArray)); 0x004bd5bc mov qword [rsi], rdi | *(rsi) = rdi; 0x004bd5bf inc rcx | rcx++; 0x004bd5c2 add rsi, 8 | rsi += 8; 0x004bd5c6 dec rdx | rdx--; 0x004bd5c9 jne 0x4bd5b0 | | } while (rdx != 0); | label_29: 0x004bd5cb cmp rbx, 7 | | if (rbx < 7) { 0x004bd5cf jb 0x4bd688 | goto label_28; | } 0x004bd5d5 lea rax, [rsp + rax + 0x20] | rax = rsp + rax + 0x20; 0x004bd5da xor edi, edi | edi = 0; 0x004bd5dc nop dword [rax] | | do { 0x004bd5e0 movsx rdx, byte [rcx + rdi] | rdx = *((rcx + rdi)); 0x004bd5e5 mov rdx, qword [rdx*8 + 0x7171d0] | rdx = *((rdx*8 + obj.funcPtrArray)); 0x004bd5ed mov qword [rsi + rdi*8], rdx | *((rsi + rdi*8)) = rdx; 0x004bd5f1 movsx rdx, byte [rcx + rdi + 1] | rdx = *((rcx + rdi + 1)); 0x004bd5f7 mov rdx, qword [rdx*8 + 0x7171d0] | rdx = *((rdx*8 + obj.funcPtrArray)); 0x004bd5ff mov qword [rsi + rdi*8 + 8], rdx | *((rsi + rdi*8 + 8)) = rdx; 0x004bd604 movsx rdx, byte [rcx + rdi + 2] | rdx = *((rcx + rdi + 2)); 0x004bd60a mov rdx, qword [rdx*8 + 0x7171d0] | rdx = *((rdx*8 + obj.funcPtrArray)); 0x004bd612 mov qword [rsi + rdi*8 + 0x10], rdx | *((rsi + rdi*8 + 0x10)) = rdx; 0x004bd617 movsx rdx, byte [rcx + rdi + 3] | rdx = *((rcx + rdi + 3)); 0x004bd61d mov rdx, qword [rdx*8 + 0x7171d0] | rdx = *((rdx*8 + obj.funcPtrArray)); 0x004bd625 mov qword [rsi + rdi*8 + 0x18], rdx | *((rsi + rdi*8 + 0x18)) = rdx; 0x004bd62a movsx rdx, byte [rcx + rdi + 4] | rdx = *((rcx + rdi + 4)); 0x004bd630 mov rdx, qword [rdx*8 + 0x7171d0] | rdx = *((rdx*8 + obj.funcPtrArray)); 0x004bd638 mov qword [rsi + rdi*8 + 0x20], rdx | *((rsi + rdi*8 + 0x20)) = rdx; 0x004bd63d movsx rdx, byte [rcx + rdi + 5] | rdx = *((rcx + rdi + 5)); 0x004bd643 mov rdx, qword [rdx*8 + 0x7171d0] | rdx = *((rdx*8 + obj.funcPtrArray)); 0x004bd64b mov qword [rsi + rdi*8 + 0x28], rdx | *((rsi + rdi*8 + 0x28)) = rdx; 0x004bd650 movsx rdx, byte [rcx + rdi + 6] | rdx = *((rcx + rdi + 6)); 0x004bd656 mov rdx, qword [rdx*8 + 0x7171d0] | rdx = *((rdx*8 + obj.funcPtrArray)); 0x004bd65e mov qword [rsi + rdi*8 + 0x30], rdx | *((rsi + rdi*8 + 0x30)) = rdx; 0x004bd663 movsx rdx, byte [rcx + rdi + 7] | rdx = *((rcx + rdi + 7)); 0x004bd669 mov rdx, qword [rdx*8 + 0x7171d0] | rdx = *((rdx*8 + obj.funcPtrArray)); 0x004bd671 mov qword [rsi + rdi*8 + 0x38], rdx | *((rsi + rdi*8 + 0x38)) = rdx; 0x004bd676 lea rdx, [rcx + rdi + 8] | rdx = rcx + rdi + 8; 0x004bd67b add rdi, 8 | rdi += 8; 0x004bd67f cmp rdx, rax | 0x004bd682 jne 0x4bd5e0 | | } while (rdx != rax); | label_28: 0x004bd688 mov rax, qword [rsp + 0x50] | rax = *((rsp + 0x50)); 0x004bd68d lea rdi, [rsp + 0x50] | rdi = rsp + 0x50; 0x004bd692 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004bd699 call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004bd69c cmp byte [rip + 0x25b2f2], 0 | 0x004bd6a3 mov r13, qword [rsp + 0x10] | r13 = *((rsp + 0x10)); | if (*(obj.veryVeryVerbose) != 0) { 0x004bd6a8 je 0x4bd6b4 | 0x004bd6aa mov edi, 0x4f43e1 | 0x004bd6af call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004bd6b4 cmp byte [rip + 0x25b2d5], 0 | | if (*(obj.veryVerbose) == 0) { 0x004bd6bb je 0x4bd83b | goto label_30; | } 0x004bd6c1 mov edi, 0xa | 0x004bd6c6 call 0x401720 | putchar (0xa); 0x004bd6cb jmp 0x4bd810 | goto label_31; | label_25: 0x004bd6d0 cmp qword [rip + 0x25b148], 0 | 0x004bd6d8 mov rcx, r13 | rcx = r13; | if (*(obj.Z) == 0) { 0x004bd6db jne 0x4bd700 | 0x004bd6dd mov rax, qword [rip + 0x293bd4] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bd6e4 test rax, rax | | if (rax != 0) { 0x004bd6e7 jne 0x4bd700 | goto label_32; | } 0x004bd6e9 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004bd6ee mov rcx, r13 | rcx = r13; 0x004bd6f1 nop word cs:[rax + rax] | 0x004bd6fb nop dword [rax + rax] | | } | label_32: 0x004bd700 mov r13, qword [rsp + 0x10] | r13 = *((rsp + 0x10)); 0x004bd705 cmp r13, 6 | | if (r13 < 6) { 0x004bd709 jb 0x4bd810 | goto label_31; | } 0x004bd70f add r15, rbx | r15 += rbx; 0x004bd712 lea rax, [rcx*8 + 0x74f130] | rax = rcx*8 + obj_testCopyConstructWithIterators_int_______bool__bool__bool_::u; 0x004bd71a lea rcx, [rsp + rbx + 0x20] | rcx = rsp + rbx + 0x20; 0x004bd71f mov edx, r15d | edx = r15d; 0x004bd722 sub edx, ebx | edx -= ebx; 0x004bd724 not rbx | rbx = ~rbx; 0x004bd727 add rbx, r15 | rbx += r15; 0x004bd72a and rdx, 7 | rdx &= 7; | if (rdx == 0) { 0x004bd72e je 0x4bd74b | goto label_33; | } | do { 0x004bd730 movsx rdi, byte [rcx] | rdi = *(rcx); 0x004bd734 mov rdi, qword [rdi*8 + 0x7171d0] | rdi = *((rdi*8 + obj.funcPtrArray)); 0x004bd73c mov qword [rax], rdi | *(rax) = rdi; 0x004bd73f inc rcx | rcx++; 0x004bd742 add rax, 8 | rax += 8; 0x004bd746 dec rdx | rdx--; 0x004bd749 jne 0x4bd730 | | } while (rdx != 0); | label_33: 0x004bd74b cmp rbx, 7 | | if (rbx < 7) { 0x004bd74f jb 0x4bd810 | goto label_31; | } 0x004bd755 lea rdx, [rsp + r15 + 0x20] | rdx = rsp + r15 + 0x20; 0x004bd75a xor ebx, ebx | ebx = 0; 0x004bd75c nop dword [rax] | | do { 0x004bd760 movsx rdi, byte [rcx + rbx] | rdi = *((rcx + rbx)); 0x004bd765 mov rdi, qword [rdi*8 + 0x7171d0] | rdi = *((rdi*8 + obj.funcPtrArray)); 0x004bd76d mov qword [rax + rbx*8], rdi | *((rax + rbx*8)) = rdi; 0x004bd771 movsx rdi, byte [rcx + rbx + 1] | rdi = *((rcx + rbx + 1)); 0x004bd777 mov rdi, qword [rdi*8 + 0x7171d0] | rdi = *((rdi*8 + obj.funcPtrArray)); 0x004bd77f mov qword [rax + rbx*8 + 8], rdi | *((rax + rbx*8 + 8)) = rdi; 0x004bd784 movsx rdi, byte [rcx + rbx + 2] | rdi = *((rcx + rbx + 2)); 0x004bd78a mov rdi, qword [rdi*8 + 0x7171d0] | rdi = *((rdi*8 + obj.funcPtrArray)); 0x004bd792 mov qword [rax + rbx*8 + 0x10], rdi | *((rax + rbx*8 + 0x10)) = rdi; 0x004bd797 movsx rdi, byte [rcx + rbx + 3] | rdi = *((rcx + rbx + 3)); 0x004bd79d mov rdi, qword [rdi*8 + 0x7171d0] | rdi = *((rdi*8 + obj.funcPtrArray)); 0x004bd7a5 mov qword [rax + rbx*8 + 0x18], rdi | *((rax + rbx*8 + 0x18)) = rdi; 0x004bd7aa movsx rdi, byte [rcx + rbx + 4] | rdi = *((rcx + rbx + 4)); 0x004bd7b0 mov rdi, qword [rdi*8 + 0x7171d0] | rdi = *((rdi*8 + obj.funcPtrArray)); 0x004bd7b8 mov qword [rax + rbx*8 + 0x20], rdi | *((rax + rbx*8 + 0x20)) = rdi; 0x004bd7bd movsx rdi, byte [rcx + rbx + 5] | rdi = *((rcx + rbx + 5)); 0x004bd7c3 mov rdi, qword [rdi*8 + 0x7171d0] | rdi = *((rdi*8 + obj.funcPtrArray)); 0x004bd7cb mov qword [rax + rbx*8 + 0x28], rdi | *((rax + rbx*8 + 0x28)) = rdi; 0x004bd7d0 movsx rdi, byte [rcx + rbx + 6] | rdi = *((rcx + rbx + 6)); 0x004bd7d6 mov rdi, qword [rdi*8 + 0x7171d0] | rdi = *((rdi*8 + obj.funcPtrArray)); 0x004bd7de mov qword [rax + rbx*8 + 0x30], rdi | *((rax + rbx*8 + 0x30)) = rdi; 0x004bd7e3 movsx rdi, byte [rcx + rbx + 7] | rdi = *((rcx + rbx + 7)); 0x004bd7e9 mov rdi, qword [rdi*8 + 0x7171d0] | rdi = *((rdi*8 + obj.funcPtrArray)); 0x004bd7f1 mov qword [rax + rbx*8 + 0x38], rdi | *((rax + rbx*8 + 0x38)) = rdi; 0x004bd7f6 lea rdi, [rcx + rbx + 8] | rdi = rcx + rbx + 8; 0x004bd7fb add rbx, 8 | rbx += 8; 0x004bd7ff cmp rdi, rdx | 0x004bd802 jne 0x4bd760 | | } while (rdi != rdx); 0x004bd808 nop dword [rax + rax] | | label_31: 0x004bd810 cmp byte [rip + 0x25b179], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bd817 je 0x4bd83b | 0x004bd819 mov edx, dword [rip + 0x25b185] | edx = numCopyCtorCalls; 0x004bd81f sub edx, r12d | edx -= r12d; 0x004bd822 mov ecx, dword [rip + 0x25b184] | ecx = numCharCtorCalls; 0x004bd828 sub ecx, dword [rsp + 0x40] | ecx -= *((rsp + 0x40)); 0x004bd82c mov edi, 0x4f5c2a | 0x004bd831 mov esi, r14d | esi = r14d; 0x004bd834 xor eax, eax | eax = 0; 0x004bd836 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_30: 0x004bd83b cmp r12d, dword [rip + 0x25b162] | | if (r12d == *(obj.numCopyCtorCalls)) { 0x004bd842 je 0x4bd3b0 | goto label_2; | } 0x004bd848 mov edi, 0x4f4c78 | 0x004bd84d mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004bd852 mov esi, 0x103f | esi = 0x103f; 0x004bd857 xor eax, eax | eax = 0; 0x004bd859 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bd85e mov eax, dword [rip + 0x25b134] | eax = (anonymous namespace)::testStatus; 0x004bd864 cmp eax, 0x64 | | if (eax > 0x64) { 0x004bd867 ja 0x4bd3b0 | goto label_2; | } 0x004bd86d inc eax | eax++; 0x004bd86f mov dword [rip + 0x25b123], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004bd875 jmp 0x4bd3b0 | goto label_2; | label_27: 0x004bd87a mov eax, 1 | eax = 1; 0x004bd87f mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004bd884 mov rax, qword [rip + 0x293a2d] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bd88b test rax, rax | | if (rax != 0) { 0x004bd88e jne 0x4bd575 | goto label_3; | } 0x004bd894 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004bd899 jmp 0x4bd575 | goto label_3; | label_21: 0x004bd8fa add rsp, 0x68 | 0x004bd8fe pop rbx | 0x004bd8ff pop r12 | 0x004bd901 pop r13 | 0x004bd903 pop r14 | 0x004bd905 pop r15 | 0x004bd907 pop rbp | 0x004bd908 ret | return rax; | }