; assembly | /* r2dec pseudo code output */ | /* bslalg_arrayprimitives.t/assume @ 0x4bec50 */ | #include | ; (fcn) sym.void_testCopyConstructWithIterators_signed_char__bool__bool__bool_ () | uint64_t void_testCopyConstructWithIterators_signed_char_bool_bool_bool_ (uint32_t arg3, uint32_t arg2) { | int64_t var_10h; | int64_t var_18h; | uint32_t var_20h; | uint32_t var_2ch; | void * s2; | int64_t var_38h; | int64_t var_40h; | int64_t var_48h; | uint32_t var_54h; | int64_t var_58h; | int64_t var_60h; | rdx = arg3; | rsi = arg2; | /* void testCopyConstructWithIterators(bool, bool, bool) */ 0x004bec50 push rbp | 0x004bec51 push r15 | 0x004bec53 push r14 | 0x004bec55 push r13 | 0x004bec57 push r12 | 0x004bec59 push rbx | 0x004bec5a sub rsp, 0x68 | 0x004bec5e mov dword [rsp + 0x2c], edx | *((rsp + 0x2c)) = edx; 0x004bec62 mov dword [rsp + 0x54], esi | *((rsp + 0x54)) = esi; 0x004bec66 cmp byte [rip + 0x259d29], 0 | | if (*(obj.verbose) != 0) { 0x004bec6d je 0x4bec79 | 0x004bec6f mov edi, 0x4f67e9 | 0x004bec74 call 0x401710 | eax = puts ("\t\tfrom same type."); | } 0x004bec79 xor eax, eax | eax = 0; 0x004bec7b jmp 0x4becac | goto label_7; | label_2: 0x004bec80 mov edi, 0x74f2c0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bec85 mov rsi, rbx | rsi = rbx; 0x004bec88 call 0x4ddd70 | voidverify(signedchar*,char const*) (); 0x004bec8d mov edi, 0x74f2c0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bec92 mov rsi, rbx | rsi = rbx; 0x004bec95 call 0x4ddfb0 | voidcleanup(signedchar*,char const*) (); 0x004bec9a mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x004bec9f inc rax | rax++; 0x004beca2 cmp rax, 0x1e | | if (rax == 0x1e) { 0x004beca6 je 0x4bf21a | goto label_8; | } | label_7: 0x004becac mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x004becb1 lea rbx, [rax*8] | rbx = rax*8; 0x004becb9 mov r12, qword [rbx + rbx*4 + 0x4f3b08] | r12 = *((rbx + rbx*4 + 0x4f3b08)); 0x004becc1 mov rdi, r12 | 0x004becc4 call 0x401790 | eax = strlen (*((rbx + rbx*4 + 0x4f3b08))); 0x004becc9 cmp eax, 0x11 | | if (eax >= 0x11) { 0x004beccc jl 0x4becf7 | 0x004becce mov edi, 0x4f4c78 | 0x004becd3 mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004becd8 mov esi, 0xfe6 | esi = 0xfe6; 0x004becdd xor eax, eax | eax = 0; 0x004becdf call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bece4 mov eax, dword [rip + 0x259cae] | eax = (anonymous namespace)::testStatus; 0x004becea cmp eax, 0x64 | | if (eax > 0x64) { 0x004beced ja 0x4becf7 | goto label_9; | } 0x004becef inc eax | eax++; 0x004becf1 mov dword [rip + 0x259ca1], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_9: 0x004becf7 mov r13d, dword [rbx + rbx*4 + 0x4f3b00] | r13d = *((rbx + rbx*4 + obj.DATA_3)); 0x004becff movsxd r15, dword [rbx + rbx*4 + 0x4f3b10] | r15 = *((rbx + rbx*4 + 0x4f3b10)); 0x004bed07 mov ebp, dword [rbx + rbx*4 + 0x4f3b14] | ebp = *((rbx + rbx*4 + 0x4f3b14)); 0x004bed0e movsxd r14, dword [rbx + rbx*4 + 0x4f3b18] | r14 = *((rbx + rbx*4 + 0x4f3b18)); 0x004bed16 mov rbx, qword [rbx + rbx*4 + 0x4f3b20] | rbx = *((rbx + rbx*4 + 0x4f3b20)); 0x004bed1e cmp byte [rip + 0x259c6b], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bed25 je 0x4bed46 | 0x004bed27 mov qword [rsp], rbx | *(rsp) = rbx; 0x004bed2b mov edi, 0x4f5ab7 | 0x004bed30 mov esi, r13d | esi = r13d; 0x004bed33 mov rdx, r12 | rdx = r12; 0x004bed36 mov ecx, r15d | ecx = r15d; 0x004bed39 mov r8d, ebp | r8d = ebp; 0x004bed3c mov r9d, r14d | r9d = r14d; 0x004bed3f xor eax, eax | eax = 0; 0x004bed41 call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004bed46 mov qword [rsp + 0x18], rbp | *((rsp + 0x18)) = rbp; 0x004bed4b mov edi, 0x74f2c0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bed50 mov rsi, r12 | rsi = r12; 0x004bed53 call 0x4ddc90 | signedchar&gg(signedchar*,char const*) (); 0x004bed58 mov edi, 0x74f2c0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bed5d mov rsi, r12 | rsi = r12; 0x004bed60 call 0x4ddd70 | voidverify(signedchar*,char const*) (); 0x004bed65 mov r12d, dword [rip + 0x259c38] | r12d = numCopyCtorCalls; 0x004bed6c mov ebp, dword [rip + 0x259c3a] | ebp = numCharCtorCalls; 0x004bed72 cmp byte [rsp + 0x2c], 0 | 0x004bed77 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; | if (*((rsp + 0x2c)) == 0) { 0x004bed7c je 0x4bee50 | goto label_10; | } 0x004bed82 cmp byte [rip + 0x259c07], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bed89 je 0x4bed9e | 0x004bed8b cmp dword [rip + 0x25978e], 0 | | if (*(0x00718520) == 0) { 0x004bed92 je 0x4bed9e | goto label_11; | } 0x004bed94 mov edi, 0x4f425a | 0x004bed99 call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_11: 0x004bed9e mov dword [rip + 0x259778], 0 | *(0x00718520) = 0; 0x004beda8 cmp byte [rip + 0x259be6], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004bedaf je 0x4bedbb | 0x004bedb1 mov edi, 0x4f4281 | 0x004bedb6 call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004bedbb mov rax, qword [rip + 0x259a5e] | rax = Z; 0x004bedc2 mov qword [rsp + 0x30], 0x4f6858 | *((rsp + 0x30)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004bedcb mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x004bedd0 mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004bedd8 test rax, rax | 0x004beddb je 0x4beee6 | | while (rax != 0) { | label_0: 0x004bede1 lea rsi, [r15 + 0x74f2c0] | rsi = r15 + obj_testCopyConstructWithIterators_signed_char__bool__bool__bool_::u; 0x004bede8 mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x004beded add eax, r15d | eax += r15d; 0x004bedf0 cdqe | rax = (int64_t) eax; 0x004bedf2 lea rdx, [rax + 0x74f2c0] | rdx = rax + obj_testCopyConstructWithIterators_signed_char__bool__bool__bool_::u; 0x004bedf9 sub rdx, rsi | rdx -= rsi; | if (rdx != 0) { 0x004bedfc je 0x4bee0a | 0x004bedfe lea rdi, [r14 + 0x74f2c0] | 0x004bee05 call 0x401930 | memcpy (r14 + obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::u, rsi, rdx); | } 0x004bee0a mov rax, qword [rsp + 0x30] | rax = *((rsp + 0x30)); 0x004bee0f lea rdi, [rsp + 0x30] | rdi = rsp + 0x30; 0x004bee14 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004bee1b call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004bee1e cmp byte [rip + 0x259b70], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004bee25 je 0x4bee31 | 0x004bee27 mov edi, 0x4f43e1 | 0x004bee2c call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004bee31 cmp byte [rip + 0x259b58], 0 | | if (*(obj.veryVerbose) == 0) { 0x004bee38 je 0x4bf138 | goto label_12; | } 0x004bee3e mov edi, 0xa | 0x004bee43 call 0x401720 | putchar (0xa); 0x004bee48 jmp 0x4bf10f | goto label_13; | label_10: 0x004bee50 cmp qword [rip + 0x2599c8], 0 | | if (*(obj.Z) == 0) { 0x004bee58 jne 0x4bee6a | 0x004bee5a mov rax, qword [rip + 0x292457] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bee61 test rax, rax | | if (rax == 0) { 0x004bee64 je 0x4bef66 | goto label_14; | } | } 0x004bee6a cmp qword [rsp + 0x20], 6 | | if (*((rsp + 0x20)) < 6) { 0x004bee70 jb 0x4bf10f | goto label_13; | } | label_1: 0x004bee76 lea rax, [r15 + 0x74f2c0] | rax = r15 + obj_testCopyConstructWithIterators_signed_char__bool__bool__bool_::u; 0x004bee7d lea rcx, [r14 + 0x74f2c0] | rcx = r14 + obj_testCopyConstructWithIterators_signed_char__bool__bool__bool_::u; 0x004bee84 mov rbx, qword [rsp + 0x18] | rbx = *((rsp + 0x18)); 0x004bee89 lea edx, [rbx + r15] | edx = rbx + r15; 0x004bee8d movsxd r8, edx | r8 = (int64_t) edx; 0x004bee90 mov r10, r8 | r10 = r8; 0x004bee93 sub r10, r15 | r10 -= r15; 0x004bee96 cmp r10, 4 | | if (r10 < 4) { 0x004bee9a jb 0x4bf0f0 | goto label_15; | } 0x004beea0 mov r9d, ebp | r9d = ebp; 0x004beea3 lea rdi, [r14 + 0x74f2c0] | rdi = r14 + obj_testCopyConstructWithIterators_signed_char__bool__bool__bool_::u; 0x004beeaa lea edx, [rbx + r15] | edx = rbx + r15; 0x004beeae movsxd rdx, edx | rdx = (int64_t) edx; 0x004beeb1 lea rbp, [rdx + 0x74f2c0] | rbp = rdx + obj_testCopyConstructWithIterators_signed_char__bool__bool__bool_::u; 0x004beeb8 cmp rdi, rbp | | if (rdi >= rbp) { 0x004beebb jae 0x4bef7c | goto label_16; | } 0x004beec1 add rdx, r14 | rdx += r14; 0x004beec4 sub rdx, r15 | rdx -= r15; 0x004beec7 lea rdx, [rdx + 0x74f2c0] | rdx = rdx + obj_testCopyConstructWithIterators_signed_char__bool__bool__bool_::u; 0x004beece lea rdi, [r15 + 0x74f2c0] | rdi = r15 + obj_testCopyConstructWithIterators_signed_char__bool__bool__bool_::u; 0x004beed5 cmp rdi, rdx | | if (rdi >= rdx) { 0x004beed8 jae 0x4bef7c | goto label_16; | } 0x004beede mov ebp, r9d | 0x004beee1 jmp 0x4bf0f0 | goto label_15; 0x004beee6 mov eax, 1 | eax = 1; 0x004beeeb mov qword [rsp + 0x48], rax | *((rsp + 0x48)) = rax; 0x004beef0 mov rax, qword [rip + 0x2923c1] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004beef7 test rax, rax | 0x004beefa jne 0x4bede1 | | } 0x004bef00 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004bef05 jmp 0x4bede1 | goto label_0; | label_14: 0x004bef66 call 0x4eec50 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004bef6b cmp qword [rsp + 0x20], 6 | | if (*((rsp + 0x20)) >= 6) { 0x004bef71 jae 0x4bee76 | goto label_1; | } 0x004bef77 jmp 0x4bf10f | goto label_13; | label_16: 0x004bef7c cmp r10, 0x20 | | if (r10 < 0x20) { 0x004bef80 jae 0x4bef89 | 0x004bef82 xor edi, edi | edi = 0; 0x004bef84 jmp 0x4bf099 | goto label_17; | } 0x004bef89 mov rdi, r10 | rdi = r10; 0x004bef8c and rdi, 0xffffffffffffffe0 | rdi &= 0xffffffffffffffe0; 0x004bef90 lea rbx, [rdi - 0x20] | rbx = rdi - 0x20; 0x004bef94 mov rdx, rbx | rdx = rbx; 0x004bef97 shr rdx, 5 | rdx >>= 5; 0x004bef9b inc rdx | rdx++; 0x004bef9e mov ebp, edx | 0x004befa0 and ebp, 3 | ebp &= 3; 0x004befa3 cmp rbx, 0x60 | | if (rbx < 0x60) { 0x004befa7 jae 0x4befb0 | 0x004befa9 xor ebx, ebx | ebx = 0; 0x004befab jmp 0x4bf05e | goto label_18; | } 0x004befb0 and rdx, 0xfffffffffffffffc | rdx &= 0xfffffffffffffffc; 0x004befb4 neg rdx | rdx = -rdx; 0x004befb7 xor ebx, ebx | ebx = 0; 0x004befb9 nop dword [rax] | | do { 0x004befc0 movups xmm0, xmmword [r15 + rbx + 0x74f2c0] | __asm ("movups xmm0, xmmword [r15 + rbx + obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::u]"); 0x004befc9 movups xmm1, xmmword [r15 + rbx + 0x74f2d0] | __asm ("movups xmm1, xmmword [r15 + rbx + obj.testCopyConstructWithIterators_unsigned_char__bool__bool__bool_::u]"); 0x004befd2 movups xmmword [r14 + rbx + 0x74f2c0], xmm0 | __asm ("movups xmmword [r14 + rbx + obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::u], xmm0"); 0x004befdb movups xmmword [r14 + rbx + 0x74f2d0], xmm1 | __asm ("movups xmmword [r14 + rbx + obj.testCopyConstructWithIterators_unsigned_char__bool__bool__bool_::u], xmm1"); 0x004befe4 movups xmm0, xmmword [r15 + rbx + 0x74f2e0] | __asm ("movups xmm0, xmmword [r15 + rbx + obj.testCopyConstructWithIterators_short__bool__bool__bool_::u]"); 0x004befed movups xmm1, xmmword [r15 + rbx + 0x74f2f0] | __asm ("movups xmm1, xmmword [r15 + rbx + 0x74f2f0]"); 0x004beff6 movups xmmword [r14 + rbx + 0x74f2e0], xmm0 | __asm ("movups xmmword [r14 + rbx + obj.testCopyConstructWithIterators_short__bool__bool__bool_::u], xmm0"); 0x004befff movups xmmword [r14 + rbx + 0x74f2f0], xmm1 | __asm ("movups xmmword [r14 + rbx + 0x74f2f0], xmm1"); 0x004bf008 movups xmm0, xmmword [r15 + rbx + 0x74f300] | __asm ("movups xmm0, xmmword [r15 + rbx + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u]"); 0x004bf011 movups xmm1, xmmword [r15 + rbx + 0x74f310] | __asm ("movups xmm1, xmmword [r15 + rbx + 0x74f310]"); 0x004bf01a movups xmmword [r14 + rbx + 0x74f300], xmm0 | __asm ("movups xmmword [r14 + rbx + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u], xmm0"); 0x004bf023 movups xmmword [r14 + rbx + 0x74f310], xmm1 | __asm ("movups xmmword [r14 + rbx + 0x74f310], xmm1"); 0x004bf02c movups xmm0, xmmword [r15 + rbx + 0x74f320] | __asm ("movups xmm0, xmmword [r15 + rbx + 0x74f320]"); 0x004bf035 movups xmm1, xmmword [r15 + rbx + 0x74f330] | __asm ("movups xmm1, xmmword [r15 + rbx + 0x74f330]"); 0x004bf03e movups xmmword [r14 + rbx + 0x74f320], xmm0 | __asm ("movups xmmword [r14 + rbx + 0x74f320], xmm0"); 0x004bf047 movups xmmword [r14 + rbx + 0x74f330], xmm1 | __asm ("movups xmmword [r14 + rbx + 0x74f330], xmm1"); 0x004bf050 sub rbx, 0xffffffffffffff80 | rbx -= 0xffffffffffffff80; 0x004bf054 add rdx, 4 | rdx += 4; 0x004bf058 jne 0x4befc0 | | } while (rdx != 0); | label_18: 0x004bf05e test rbp, rbp | | if (rbp == 0) { 0x004bf061 je 0x4bf08b | goto label_19; | } 0x004bf063 nop word cs:[rax + rax] | 0x004bf06d nop dword [rax] | | do { 0x004bf070 movups xmm0, xmmword [rax + rbx] | __asm ("movups xmm0, xmmword [rax + rbx]"); 0x004bf074 movups xmm1, xmmword [rax + rbx + 0x10] | __asm ("movups xmm1, xmmword [rax + rbx + 0x10]"); 0x004bf079 movups xmmword [rcx + rbx], xmm0 | __asm ("movups xmmword [rcx + rbx], xmm0"); 0x004bf07d movups xmmword [rcx + rbx + 0x10], xmm1 | __asm ("movups xmmword [rcx + rbx + 0x10], xmm1"); 0x004bf082 add rbx, 0x20 | rbx += 0x20; 0x004bf086 dec rbp | rbp--; 0x004bf089 jne 0x4bf070 | | } while (rbp != 0); | label_19: 0x004bf08b cmp r10, rdi | 0x004bf08e mov ebp, r9d | | if (r10 == rdi) { 0x004bf091 je 0x4bf10f | goto label_13; | } 0x004bf093 test r10b, 0x1c | | if ((r10b & 0x1c) == 0) { 0x004bf097 je 0x4bf0e3 | goto label_20; | } | label_17: 0x004bf099 mov rdx, qword [rsp + 0x18] | rdx = *((rsp + 0x18)); 0x004bf09e add edx, r15d | edx += r15d; 0x004bf0a1 movsxd rbx, edx | rbx = (int64_t) edx; 0x004bf0a4 sub rbx, r15 | rbx -= r15; 0x004bf0a7 mov rdx, rbx | rdx = rbx; 0x004bf0aa and rdx, 0xfffffffffffffffc | rdx &= 0xfffffffffffffffc; 0x004bf0ae add rax, rdx | rax += rdx; 0x004bf0b1 add rcx, rdx | rcx += rdx; 0x004bf0b4 nop word cs:[rax + rax] | 0x004bf0be nop | | do { 0x004bf0c0 mov ebp, dword [r15 + rdi + 0x74f2c0] | ebp = *((r15 + rdi + obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::u)); 0x004bf0c8 mov dword [r14 + rdi + 0x74f2c0], ebp | *((r14 + rdi + obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::u)) = ebp; 0x004bf0d0 add rdi, 4 | rdi += 4; 0x004bf0d4 cmp rdx, rdi | 0x004bf0d7 jne 0x4bf0c0 | | } while (rdx != rdi); 0x004bf0d9 cmp rbx, rdx | 0x004bf0dc mov ebp, r9d | | if (rbx == rdx) { 0x004bf0df jne 0x4bf0f0 | 0x004bf0e1 jmp 0x4bf10f | goto label_13; | label_20: 0x004bf0e3 add rcx, rdi | rcx += rdi; 0x004bf0e6 add rax, rdi | rax += rdi; 0x004bf0e9 nop dword [rax] | | } | label_15: 0x004bf0f0 sub r8, rax | r8 -= rax; 0x004bf0f3 lea rdx, [r8 + 0x74f2c0] | rdx = r8 + obj_testCopyConstructWithIterators_signed_char__bool__bool__bool_::u; 0x004bf0fa xor edi, edi | edi = 0; 0x004bf0fc nop dword [rax] | | do { 0x004bf100 movzx ebx, byte [rax + rdi] | ebx = *((rax + rdi)); 0x004bf104 mov byte [rcx + rdi], bl | *((rcx + rdi)) = bl; 0x004bf107 inc rdi | rdi++; 0x004bf10a cmp rdx, rdi | 0x004bf10d jne 0x4bf100 | | } while (rdx != rdi); | label_13: 0x004bf10f cmp byte [rip + 0x25987a], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bf116 je 0x4bf138 | 0x004bf118 mov edx, dword [rip + 0x259886] | edx = numCopyCtorCalls; 0x004bf11e sub edx, r12d | edx -= r12d; 0x004bf121 mov ecx, dword [rip + 0x259885] | ecx = numCharCtorCalls; 0x004bf127 sub ecx, ebp | ecx -= ebp; 0x004bf129 mov edi, 0x4f5c2a | 0x004bf12e mov esi, r13d | esi = r13d; 0x004bf131 xor eax, eax | eax = 0; 0x004bf133 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_12: 0x004bf138 cmp byte [rsp + 0x54], 0 | | if (*((rsp + 0x54)) == 0) { 0x004bf13d je 0x4bf1a0 | goto label_21; | } 0x004bf13f cmp r12d, dword [rip + 0x25985e] | 0x004bf146 mov rbx, qword [rsp + 0x10] | rbx = *((rsp + 0x10)); | if (r12d != *(obj.numCopyCtorCalls)) { 0x004bf14b je 0x4bf176 | 0x004bf14d mov edi, 0x4f4c78 | 0x004bf152 mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004bf157 mov esi, 0x1005 | esi = 0x1005; 0x004bf15c xor eax, eax | eax = 0; 0x004bf15e call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bf163 mov eax, dword [rip + 0x25982f] | eax = (anonymous namespace)::testStatus; 0x004bf169 cmp eax, 0x64 | | if (eax > 0x64) { 0x004bf16c ja 0x4bf176 | goto label_22; | } 0x004bf16e inc eax | eax++; 0x004bf170 mov dword [rip + 0x259822], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_22: 0x004bf176 cmp ebp, dword [rip + 0x259830] | | if (ebp == *(obj.numCharCtorCalls)) { 0x004bf17c je 0x4bec80 | goto label_2; | } 0x004bf182 mov edi, 0x4f4c78 | edi = "Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"; 0x004bf187 mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004bf18c mov esi, 0x1006 | esi = 0x1006; 0x004bf191 jmp 0x4bf1f7 | goto label_23; | label_21: 0x004bf1a0 add r12d, dword [rsp + 0x18] | r12d += *((rsp + 0x18)); 0x004bf1a5 cmp r12d, dword [rip + 0x2597f8] | 0x004bf1ac mov rbx, qword [rsp + 0x10] | rbx = *((rsp + 0x10)); | if (r12d > *(obj.numCopyCtorCalls)) { 0x004bf1b1 jle 0x4bf1dc | 0x004bf1b3 mov edi, 0x4f4c78 | 0x004bf1b8 mov edx, 0x4f5c78 | edx = "NUM_COPIES + NE <= numCopyCtorCalls"; 0x004bf1bd mov esi, 0x1009 | esi = 0x1009; 0x004bf1c2 xor eax, eax | eax = 0; 0x004bf1c4 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bf1c9 mov eax, dword [rip + 0x2597c9] | eax = (anonymous namespace)::testStatus; 0x004bf1cf cmp eax, 0x64 | | if (eax > 0x64) { 0x004bf1d2 ja 0x4bf1dc | goto label_24; | } 0x004bf1d4 inc eax | eax++; 0x004bf1d6 mov dword [rip + 0x2597bc], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_24: 0x004bf1dc cmp ebp, dword [rip + 0x2597ca] | | if (ebp == *(obj.numCharCtorCalls)) { 0x004bf1e2 je 0x4bec80 | goto label_2; | } 0x004bf1e8 mov edi, 0x4f4c78 | 0x004bf1ed mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004bf1f2 mov esi, 0x100a | esi = 0x100a; | label_23: 0x004bf1f7 xor eax, eax | eax = 0; 0x004bf1f9 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bf1fe mov eax, dword [rip + 0x259794] | eax = (anonymous namespace)::testStatus; 0x004bf204 cmp eax, 0x64 | | if (eax > 0x64) { 0x004bf207 ja 0x4bec80 | goto label_2; | } 0x004bf20d inc eax | eax++; 0x004bf20f mov dword [rip + 0x259783], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004bf215 jmp 0x4bec80 | goto label_2; | label_8: 0x004bf21a cmp byte [rip + 0x259775], 0 | | if (*(obj.verbose) != 0) { 0x004bf221 je 0x4bf22d | 0x004bf223 mov edi, 0x4f67d2 | 0x004bf228 call 0x401710 | puts ("\t\tfrom different type."); | } 0x004bf22d xor r15d, r15d | r15d = 0; 0x004bf230 jmp 0x4bf267 | goto label_25; | label_3: 0x004bf240 mov edi, 0x74f2c0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bf245 mov rsi, rbx | rsi = rbx; 0x004bf248 call 0x4ddd70 | voidverify(signedchar*,char const*) (); 0x004bf24d mov edi, 0x74f2c0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bf252 mov rsi, rbx | rsi = rbx; 0x004bf255 call 0x4ddfb0 | voidcleanup(signedchar*,char const*) (); 0x004bf25a inc r15 | r15++; 0x004bf25d cmp r15, 0x1e | | if (r15 == 0x1e) { 0x004bf261 je 0x4bf59f | goto label_26; | } | label_25: 0x004bf267 lea rbx, [r15*8] | rbx = r15*8; 0x004bf26f mov r12, qword [rbx + rbx*4 + 0x4f3b08] | r12 = *((rbx + rbx*4 + 0x4f3b08)); 0x004bf277 mov rdi, r12 | 0x004bf27a call 0x401790 | eax = strlen (*((rbx + rbx*4 + 0x4f3b08))); 0x004bf27f cmp eax, 0x11 | | if (eax >= 0x11) { 0x004bf282 jl 0x4bf2ad | 0x004bf284 mov edi, 0x4f4c78 | 0x004bf289 mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004bf28e mov esi, 0x1019 | esi = 0x1019; 0x004bf293 xor eax, eax | eax = 0; 0x004bf295 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bf29a mov eax, dword [rip + 0x2596f8] | eax = (anonymous namespace)::testStatus; 0x004bf2a0 cmp eax, 0x64 | | if (eax > 0x64) { 0x004bf2a3 ja 0x4bf2ad | goto label_27; | } 0x004bf2a5 inc eax | eax++; 0x004bf2a7 mov dword [rip + 0x2596eb], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_27: 0x004bf2ad mov rdi, r12 | 0x004bf2b0 call 0x401790 | rax = strlen (r12); 0x004bf2b5 cmp rax, 0x14 | | if (rax >= 0x14) { 0x004bf2b9 jb 0x4bf2e4 | 0x004bf2bb mov edi, 0x4f4c78 | 0x004bf2c0 mov edx, 0x4f5c9c | edx = "SPEC_CE_LEN > std::strlen(SPEC)"; 0x004bf2c5 mov esi, 0x101c | esi = 0x101c; 0x004bf2ca xor eax, eax | eax = 0; 0x004bf2cc call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bf2d1 mov eax, dword [rip + 0x2596c1] | eax = (anonymous namespace)::testStatus; 0x004bf2d7 cmp eax, 0x64 | | if (eax > 0x64) { 0x004bf2da ja 0x4bf2e4 | goto label_28; | } 0x004bf2dc inc eax | eax++; 0x004bf2de mov dword [rip + 0x2596b4], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_28: 0x004bf2e4 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004bf2e7 movaps xmmword [rsp + 0x30], xmm0 | *((rsp + 0x30)) = xmm0; 0x004bf2ec mov dword [rsp + 0x40], 0 | *((rsp + 0x40)) = 0; 0x004bf2f4 mov al, byte [r12] | al = *(r12); 0x004bf2f8 test al, al | | if (al == 0) { 0x004bf2fa je 0x4bf311 | goto label_29; | } 0x004bf2fc xor ecx, ecx | ecx = 0; 0x004bf2fe nop | | do { 0x004bf300 mov byte [rsp + rcx + 0x30], al | *((rsp + rcx + 0x30)) = al; 0x004bf304 movzx eax, byte [r12 + rcx + 1] | eax = *((r12 + rcx + 1)); 0x004bf30a inc rcx | rcx++; 0x004bf30d test al, al | 0x004bf30f jne 0x4bf300 | | } while (al != 0); | label_29: 0x004bf311 mov eax, dword [rbx + rbx*4 + 0x4f3b00] | eax = *((rbx + rbx*4 + obj.DATA_3)); 0x004bf318 mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x004bf31c movsxd r14, dword [rbx + rbx*4 + 0x4f3b10] | r14 = *((rbx + rbx*4 + 0x4f3b10)); 0x004bf324 movsxd rbp, dword [rbx + rbx*4 + 0x4f3b14] | rbp = *((rbx + rbx*4 + 0x4f3b14)); 0x004bf32c movsxd r13, dword [rbx + rbx*4 + 0x4f3b18] | r13 = *((rbx + rbx*4 + 0x4f3b18)); 0x004bf334 mov rbx, qword [rbx + rbx*4 + 0x4f3b20] | rbx = *((rbx + rbx*4 + 0x4f3b20)); 0x004bf33c cmp byte [rip + 0x25964d], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bf343 je 0x4bf365 | 0x004bf345 mov qword [rsp], rbx | *(rsp) = rbx; 0x004bf349 mov edi, 0x4f5ab7 | 0x004bf34e mov esi, dword [rsp + 0x20] | esi = *((rsp + 0x20)); 0x004bf352 mov rdx, r12 | rdx = r12; 0x004bf355 mov ecx, r14d | ecx = r14d; 0x004bf358 mov r8d, ebp | r8d = ebp; 0x004bf35b mov r9d, r13d | r9d = r13d; 0x004bf35e xor eax, eax | eax = 0; 0x004bf360 call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004bf365 mov edi, 0x74f2c0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bf36a mov rsi, r12 | rsi = r12; 0x004bf36d call 0x4ddc90 | signedchar&gg(signedchar*,char const*) (); 0x004bf372 mov edi, 0x74f2c0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004bf377 mov rsi, r12 | rsi = r12; 0x004bf37a call 0x4ddd70 | voidverify(signedchar*,char const*) (); 0x004bf37f mov r12d, dword [rip + 0x25961e] | r12d = numCopyCtorCalls; 0x004bf386 mov eax, dword [rip + 0x259620] | eax = numCharCtorCalls; 0x004bf38c mov dword [rsp + 0x18], eax | *((rsp + 0x18)) = eax; 0x004bf390 cmp byte [rsp + 0x2c], 0 | | if (*((rsp + 0x2c)) != 0) { 0x004bf395 je 0x4bf460 | 0x004bf39b cmp byte [rip + 0x2595ee], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bf3a2 je 0x4bf3b7 | 0x004bf3a4 cmp dword [rip + 0x259179], 0 | | if (*(obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::firstTime) == 0) { 0x004bf3ab je 0x4bf3b7 | goto label_30; | } 0x004bf3ad mov edi, 0x4f425a | 0x004bf3b2 call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_30: 0x004bf3b7 mov dword [rip + 0x259163], 0 | *(obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::firstTime) = 0; 0x004bf3c1 cmp byte [rip + 0x2595cd], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004bf3c8 je 0x4bf3d4 | 0x004bf3ca mov edi, 0x4f4281 | 0x004bf3cf call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004bf3d4 mov rax, qword [rip + 0x259445] | rax = Z; 0x004bf3db mov qword [rsp + 0x58], 0x4f6858 | *((rsp + 0x58)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004bf3e4 mov qword [rsp + 0x60], rax | *((rsp + 0x60)) = rax; 0x004bf3e9 mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004bf3f1 test rax, rax | | if (rax == 0) { 0x004bf3f4 je 0x4bf508 | goto label_31; | } | label_4: 0x004bf3fa cmp r15, 6 | | if (r15 >= 6) { 0x004bf3fe jb 0x4bf41b | 0x004bf400 lea eax, [r14 + rbp] | eax = r14 + rbp; 0x004bf404 movsxd rdx, eax | rdx = (int64_t) eax; 0x004bf407 lea rdi, [r13 + 0x74f2c0] | 0x004bf40e lea rsi, [rsp + r14 + 0x30] | 0x004bf413 sub rdx, r14 | rdx -= r14; 0x004bf416 call 0x401930 | memcpy (r13 + obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::u, rsp + r14 + 0x30, rdx); | } 0x004bf41b mov rax, qword [rsp + 0x58] | rax = *((rsp + 0x58)); 0x004bf420 lea rdi, [rsp + 0x58] | rdi = rsp + 0x58; 0x004bf425 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004bf42c call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004bf42f cmp byte [rip + 0x25955f], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004bf436 je 0x4bf442 | 0x004bf438 mov edi, 0x4f43e1 | 0x004bf43d call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004bf442 cmp byte [rip + 0x259547], 0 | | if (*(obj.veryVerbose) == 0) { 0x004bf449 je 0x4bf4c9 | goto label_32; | } 0x004bf44b mov edi, 0xa | 0x004bf450 call 0x401720 | putchar (0xa); 0x004bf455 jmp 0x4bf49d | | } else { 0x004bf460 cmp qword [rip + 0x2593b8], 0 | 0x004bf468 mov rcx, r13 | rcx = r13; | if (*(obj.Z) == 0) { 0x004bf46b jne 0x4bf47d | 0x004bf46d mov rax, qword [rip + 0x291e44] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bf474 test rax, rax | | if (rax == 0) { 0x004bf477 je 0x4bf588 | goto label_33; | } | } 0x004bf47d cmp r15, 6 | | if (r15 < 6) { 0x004bf481 jb 0x4bf49d | goto label_6; | } | label_5: 0x004bf483 add rbp, r14 | rbp += r14; 0x004bf486 lea rdi, [rcx + 0x74f2c0] | 0x004bf48d lea rsi, [rsp + r14 + 0x30] | 0x004bf492 sub rbp, r14 | rbp -= r14; 0x004bf495 mov rdx, rbp | 0x004bf498 call 0x401930 | eax = memcpy (rcx + obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::u, rsp + r14 + 0x30, rbp); | } | label_6: 0x004bf49d cmp byte [rip + 0x2594ec], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bf4a4 je 0x4bf4c9 | 0x004bf4a6 mov edx, dword [rip + 0x2594f8] | edx = numCopyCtorCalls; 0x004bf4ac sub edx, r12d | edx -= r12d; 0x004bf4af mov ecx, dword [rip + 0x2594f7] | ecx = numCharCtorCalls; 0x004bf4b5 sub ecx, dword [rsp + 0x18] | ecx -= *((rsp + 0x18)); 0x004bf4b9 mov edi, 0x4f5c2a | 0x004bf4be mov esi, dword [rsp + 0x20] | esi = *((rsp + 0x20)); 0x004bf4c2 xor eax, eax | eax = 0; 0x004bf4c4 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_32: 0x004bf4c9 cmp r12d, dword [rip + 0x2594d4] | | if (r12d == *(obj.numCopyCtorCalls)) { 0x004bf4d0 je 0x4bf240 | goto label_3; | } 0x004bf4d6 mov edi, 0x4f4c78 | 0x004bf4db mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004bf4e0 mov esi, 0x103f | esi = 0x103f; 0x004bf4e5 xor eax, eax | eax = 0; 0x004bf4e7 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004bf4ec mov eax, dword [rip + 0x2594a6] | eax = (anonymous namespace)::testStatus; 0x004bf4f2 cmp eax, 0x64 | | if (eax > 0x64) { 0x004bf4f5 ja 0x4bf240 | goto label_3; | } 0x004bf4fb inc eax | eax++; 0x004bf4fd mov dword [rip + 0x259495], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004bf503 jmp 0x4bf240 | goto label_3; | label_31: 0x004bf508 mov eax, 1 | eax = 1; 0x004bf50d mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x004bf512 mov rax, qword [rip + 0x291d9f] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004bf519 test rax, rax | | if (rax != 0) { 0x004bf51c jne 0x4bf3fa | goto label_4; | } 0x004bf522 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004bf527 jmp 0x4bf3fa | goto label_4; | label_33: 0x004bf588 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004bf58d mov rcx, r13 | rcx = r13; 0x004bf590 cmp r15, 6 | | if (r15 >= 6) { 0x004bf594 jae 0x4bf483 | goto label_5; | } 0x004bf59a jmp 0x4bf49d | goto label_6; | label_26: 0x004bf59f add rsp, 0x68 | 0x004bf5a3 pop rbx | 0x004bf5a4 pop r12 | 0x004bf5a6 pop r13 | 0x004bf5a8 pop r14 | 0x004bf5aa pop r15 | 0x004bf5ac pop rbp | 0x004bf5ad ret | return rax; | }