; assembly | /* r2dec pseudo code output */ | /* bslalg_arrayprimitives.t/assume @ 0x4be2c0 */ | #include | ; (fcn) sym.void_testCopyConstructWithIterators_char__bool__bool__bool_ () | uint64_t void_testCopyConstructWithIterators_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) */ 0x004be2c0 push rbp | 0x004be2c1 push r15 | 0x004be2c3 push r14 | 0x004be2c5 push r13 | 0x004be2c7 push r12 | 0x004be2c9 push rbx | 0x004be2ca sub rsp, 0x68 | 0x004be2ce mov dword [rsp + 0x2c], edx | *((rsp + 0x2c)) = edx; 0x004be2d2 mov dword [rsp + 0x54], esi | *((rsp + 0x54)) = esi; 0x004be2d6 cmp byte [rip + 0x25a6b9], 0 | | if (*(obj.verbose) != 0) { 0x004be2dd je 0x4be2e9 | 0x004be2df mov edi, 0x4f67e9 | 0x004be2e4 call 0x401710 | eax = puts ("\t\tfrom same type."); | } 0x004be2e9 xor eax, eax | eax = 0; 0x004be2eb jmp 0x4be31c | goto label_7; | label_2: 0x004be2f0 mov edi, 0x74f2b0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004be2f5 mov rsi, rbx | rsi = rbx; 0x004be2f8 call 0x4024e0 | verify(char*,char const*) (); 0x004be2fd mov edi, 0x74f2b0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004be302 mov rsi, rbx | rsi = rbx; 0x004be305 call 0x402170 | cleanup(char*,char const*) (); 0x004be30a mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x004be30f inc rax | rax++; 0x004be312 cmp rax, 0x1e | | if (rax == 0x1e) { 0x004be316 je 0x4be88a | goto label_8; | } | label_7: 0x004be31c mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x004be321 lea rbx, [rax*8] | rbx = rax*8; 0x004be329 mov r12, qword [rbx + rbx*4 + 0x4f3b08] | r12 = *((rbx + rbx*4 + 0x4f3b08)); 0x004be331 mov rdi, r12 | 0x004be334 call 0x401790 | eax = strlen (*((rbx + rbx*4 + 0x4f3b08))); 0x004be339 cmp eax, 0x11 | | if (eax >= 0x11) { 0x004be33c jl 0x4be367 | 0x004be33e mov edi, 0x4f4c78 | 0x004be343 mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004be348 mov esi, 0xfe6 | esi = 0xfe6; 0x004be34d xor eax, eax | eax = 0; 0x004be34f call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004be354 mov eax, dword [rip + 0x25a63e] | eax = (anonymous namespace)::testStatus; 0x004be35a cmp eax, 0x64 | | if (eax > 0x64) { 0x004be35d ja 0x4be367 | goto label_9; | } 0x004be35f inc eax | eax++; 0x004be361 mov dword [rip + 0x25a631], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_9: 0x004be367 mov r13d, dword [rbx + rbx*4 + 0x4f3b00] | r13d = *((rbx + rbx*4 + obj.DATA_3)); 0x004be36f movsxd r15, dword [rbx + rbx*4 + 0x4f3b10] | r15 = *((rbx + rbx*4 + 0x4f3b10)); 0x004be377 mov ebp, dword [rbx + rbx*4 + 0x4f3b14] | ebp = *((rbx + rbx*4 + 0x4f3b14)); 0x004be37e movsxd r14, dword [rbx + rbx*4 + 0x4f3b18] | r14 = *((rbx + rbx*4 + 0x4f3b18)); 0x004be386 mov rbx, qword [rbx + rbx*4 + 0x4f3b20] | rbx = *((rbx + rbx*4 + 0x4f3b20)); 0x004be38e cmp byte [rip + 0x25a5fb], 0 | | if (*(obj.veryVerbose) != 0) { 0x004be395 je 0x4be3b6 | 0x004be397 mov qword [rsp], rbx | *(rsp) = rbx; 0x004be39b mov edi, 0x4f5ab7 | 0x004be3a0 mov esi, r13d | esi = r13d; 0x004be3a3 mov rdx, r12 | rdx = r12; 0x004be3a6 mov ecx, r15d | ecx = r15d; 0x004be3a9 mov r8d, ebp | r8d = ebp; 0x004be3ac mov r9d, r14d | r9d = r14d; 0x004be3af xor eax, eax | eax = 0; 0x004be3b1 call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004be3b6 mov qword [rsp + 0x18], rbp | *((rsp + 0x18)) = rbp; 0x004be3bb mov edi, 0x74f2b0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004be3c0 mov rsi, r12 | rsi = r12; 0x004be3c3 call 0x4ddaf0 | char&gg(char*,char const*) (); 0x004be3c8 mov edi, 0x74f2b0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004be3cd mov rsi, r12 | rsi = r12; 0x004be3d0 call 0x4024e0 | verify(char*,char const*) (); 0x004be3d5 mov r12d, dword [rip + 0x25a5c8] | r12d = numCopyCtorCalls; 0x004be3dc mov ebp, dword [rip + 0x25a5ca] | ebp = numCharCtorCalls; 0x004be3e2 cmp byte [rsp + 0x2c], 0 | 0x004be3e7 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; | if (*((rsp + 0x2c)) == 0) { 0x004be3ec je 0x4be4c0 | goto label_10; | } 0x004be3f2 cmp byte [rip + 0x25a597], 0 | | if (*(obj.veryVerbose) != 0) { 0x004be3f9 je 0x4be40e | 0x004be3fb cmp dword [rip + 0x25a116], 0 | | if (*(obj.testCopyConstructWithIterators_char__bool__bool__bool_::firstTime) == 0) { 0x004be402 je 0x4be40e | goto label_11; | } 0x004be404 mov edi, 0x4f425a | 0x004be409 call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_11: 0x004be40e mov dword [rip + 0x25a100], 0 | *(obj.testCopyConstructWithIterators_char__bool__bool__bool_::firstTime) = 0; 0x004be418 cmp byte [rip + 0x25a576], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004be41f je 0x4be42b | 0x004be421 mov edi, 0x4f4281 | 0x004be426 call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004be42b mov rax, qword [rip + 0x25a3ee] | rax = Z; 0x004be432 mov qword [rsp + 0x30], 0x4f6858 | *((rsp + 0x30)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004be43b mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x004be440 mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004be448 test rax, rax | 0x004be44b je 0x4be556 | | while (rax != 0) { | label_0: 0x004be451 lea rsi, [r15 + 0x74f2b0] | rsi = r15 + obj_testCopyConstructWithIterators_char__bool__bool__bool_::u; 0x004be458 mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x004be45d add eax, r15d | eax += r15d; 0x004be460 cdqe | rax = (int64_t) eax; 0x004be462 lea rdx, [rax + 0x74f2b0] | rdx = rax + obj_testCopyConstructWithIterators_char__bool__bool__bool_::u; 0x004be469 sub rdx, rsi | rdx -= rsi; | if (rdx != 0) { 0x004be46c je 0x4be47a | 0x004be46e lea rdi, [r14 + 0x74f2b0] | 0x004be475 call 0x401930 | memcpy (r14 + obj.testCopyConstructWithIterators_char__bool__bool__bool_::u, rsi, rdx); | } 0x004be47a mov rax, qword [rsp + 0x30] | rax = *((rsp + 0x30)); 0x004be47f lea rdi, [rsp + 0x30] | rdi = rsp + 0x30; 0x004be484 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004be48b call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004be48e cmp byte [rip + 0x25a500], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004be495 je 0x4be4a1 | 0x004be497 mov edi, 0x4f43e1 | 0x004be49c call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004be4a1 cmp byte [rip + 0x25a4e8], 0 | | if (*(obj.veryVerbose) == 0) { 0x004be4a8 je 0x4be7a8 | goto label_12; | } 0x004be4ae mov edi, 0xa | 0x004be4b3 call 0x401720 | putchar (0xa); 0x004be4b8 jmp 0x4be77f | goto label_13; | label_10: 0x004be4c0 cmp qword [rip + 0x25a358], 0 | | if (*(obj.Z) == 0) { 0x004be4c8 jne 0x4be4da | 0x004be4ca mov rax, qword [rip + 0x292de7] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004be4d1 test rax, rax | | if (rax == 0) { 0x004be4d4 je 0x4be5d6 | goto label_14; | } | } 0x004be4da cmp qword [rsp + 0x20], 6 | | if (*((rsp + 0x20)) < 6) { 0x004be4e0 jb 0x4be77f | goto label_13; | } | label_1: 0x004be4e6 lea rax, [r15 + 0x74f2b0] | rax = r15 + obj_testCopyConstructWithIterators_char__bool__bool__bool_::u; 0x004be4ed lea rcx, [r14 + 0x74f2b0] | rcx = r14 + obj_testCopyConstructWithIterators_char__bool__bool__bool_::u; 0x004be4f4 mov rbx, qword [rsp + 0x18] | rbx = *((rsp + 0x18)); 0x004be4f9 lea edx, [rbx + r15] | edx = rbx + r15; 0x004be4fd movsxd r8, edx | r8 = (int64_t) edx; 0x004be500 mov r10, r8 | r10 = r8; 0x004be503 sub r10, r15 | r10 -= r15; 0x004be506 cmp r10, 4 | | if (r10 < 4) { 0x004be50a jb 0x4be760 | goto label_15; | } 0x004be510 mov r9d, ebp | r9d = ebp; 0x004be513 lea rdi, [r14 + 0x74f2b0] | rdi = r14 + obj_testCopyConstructWithIterators_char__bool__bool__bool_::u; 0x004be51a lea edx, [rbx + r15] | edx = rbx + r15; 0x004be51e movsxd rdx, edx | rdx = (int64_t) edx; 0x004be521 lea rbp, [rdx + 0x74f2b0] | rbp = rdx + obj_testCopyConstructWithIterators_char__bool__bool__bool_::u; 0x004be528 cmp rdi, rbp | | if (rdi >= rbp) { 0x004be52b jae 0x4be5ec | goto label_16; | } 0x004be531 add rdx, r14 | rdx += r14; 0x004be534 sub rdx, r15 | rdx -= r15; 0x004be537 lea rdx, [rdx + 0x74f2b0] | rdx = rdx + obj_testCopyConstructWithIterators_char__bool__bool__bool_::u; 0x004be53e lea rdi, [r15 + 0x74f2b0] | rdi = r15 + obj_testCopyConstructWithIterators_char__bool__bool__bool_::u; 0x004be545 cmp rdi, rdx | | if (rdi >= rdx) { 0x004be548 jae 0x4be5ec | goto label_16; | } 0x004be54e mov ebp, r9d | 0x004be551 jmp 0x4be760 | goto label_15; 0x004be556 mov eax, 1 | eax = 1; 0x004be55b mov qword [rsp + 0x48], rax | *((rsp + 0x48)) = rax; 0x004be560 mov rax, qword [rip + 0x292d51] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004be567 test rax, rax | 0x004be56a jne 0x4be451 | | } 0x004be570 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004be575 jmp 0x4be451 | goto label_0; | label_14: 0x004be5d6 call 0x4eec50 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004be5db cmp qword [rsp + 0x20], 6 | | if (*((rsp + 0x20)) >= 6) { 0x004be5e1 jae 0x4be4e6 | goto label_1; | } 0x004be5e7 jmp 0x4be77f | goto label_13; | label_16: 0x004be5ec cmp r10, 0x20 | | if (r10 < 0x20) { 0x004be5f0 jae 0x4be5f9 | 0x004be5f2 xor edi, edi | edi = 0; 0x004be5f4 jmp 0x4be709 | goto label_17; | } 0x004be5f9 mov rdi, r10 | rdi = r10; 0x004be5fc and rdi, 0xffffffffffffffe0 | rdi &= 0xffffffffffffffe0; 0x004be600 lea rbx, [rdi - 0x20] | rbx = rdi - 0x20; 0x004be604 mov rdx, rbx | rdx = rbx; 0x004be607 shr rdx, 5 | rdx >>= 5; 0x004be60b inc rdx | rdx++; 0x004be60e mov ebp, edx | 0x004be610 and ebp, 3 | ebp &= 3; 0x004be613 cmp rbx, 0x60 | | if (rbx < 0x60) { 0x004be617 jae 0x4be620 | 0x004be619 xor ebx, ebx | ebx = 0; 0x004be61b jmp 0x4be6ce | goto label_18; | } 0x004be620 and rdx, 0xfffffffffffffffc | rdx &= 0xfffffffffffffffc; 0x004be624 neg rdx | rdx = -rdx; 0x004be627 xor ebx, ebx | ebx = 0; 0x004be629 nop dword [rax] | | do { 0x004be630 movups xmm0, xmmword [r15 + rbx + 0x74f2b0] | __asm ("movups xmm0, xmmword [r15 + rbx + obj.testCopyConstructWithIterators_char__bool__bool__bool_::u]"); 0x004be639 movups xmm1, xmmword [r15 + rbx + 0x74f2c0] | __asm ("movups xmm1, xmmword [r15 + rbx + obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::u]"); 0x004be642 movups xmmword [r14 + rbx + 0x74f2b0], xmm0 | __asm ("movups xmmword [r14 + rbx + obj.testCopyConstructWithIterators_char__bool__bool__bool_::u], xmm0"); 0x004be64b movups xmmword [r14 + rbx + 0x74f2c0], xmm1 | __asm ("movups xmmword [r14 + rbx + obj.testCopyConstructWithIterators_signed_char__bool__bool__bool_::u], xmm1"); 0x004be654 movups xmm0, xmmword [r15 + rbx + 0x74f2d0] | __asm ("movups xmm0, xmmword [r15 + rbx + obj.testCopyConstructWithIterators_unsigned_char__bool__bool__bool_::u]"); 0x004be65d movups xmm1, xmmword [r15 + rbx + 0x74f2e0] | __asm ("movups xmm1, xmmword [r15 + rbx + obj.testCopyConstructWithIterators_short__bool__bool__bool_::u]"); 0x004be666 movups xmmword [r14 + rbx + 0x74f2d0], xmm0 | __asm ("movups xmmword [r14 + rbx + obj.testCopyConstructWithIterators_unsigned_char__bool__bool__bool_::u], xmm0"); 0x004be66f movups xmmword [r14 + rbx + 0x74f2e0], xmm1 | __asm ("movups xmmword [r14 + rbx + obj.testCopyConstructWithIterators_short__bool__bool__bool_::u], xmm1"); 0x004be678 movups xmm0, xmmword [r15 + rbx + 0x74f2f0] | __asm ("movups xmm0, xmmword [r15 + rbx + 0x74f2f0]"); 0x004be681 movups xmm1, xmmword [r15 + rbx + 0x74f300] | __asm ("movups xmm1, xmmword [r15 + rbx + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u]"); 0x004be68a movups xmmword [r14 + rbx + 0x74f2f0], xmm0 | __asm ("movups xmmword [r14 + rbx + 0x74f2f0], xmm0"); 0x004be693 movups xmmword [r14 + rbx + 0x74f300], xmm1 | __asm ("movups xmmword [r14 + rbx + obj.testCopyConstructWithIterators_unsigned_short__bool__bool__bool_::u], xmm1"); 0x004be69c movups xmm0, xmmword [r15 + rbx + 0x74f310] | __asm ("movups xmm0, xmmword [r15 + rbx + 0x74f310]"); 0x004be6a5 movups xmm1, xmmword [r15 + rbx + 0x74f320] | __asm ("movups xmm1, xmmword [r15 + rbx + 0x74f320]"); 0x004be6ae movups xmmword [r14 + rbx + 0x74f310], xmm0 | __asm ("movups xmmword [r14 + rbx + 0x74f310], xmm0"); 0x004be6b7 movups xmmword [r14 + rbx + 0x74f320], xmm1 | __asm ("movups xmmword [r14 + rbx + 0x74f320], xmm1"); 0x004be6c0 sub rbx, 0xffffffffffffff80 | rbx -= 0xffffffffffffff80; 0x004be6c4 add rdx, 4 | rdx += 4; 0x004be6c8 jne 0x4be630 | | } while (rdx != 0); | label_18: 0x004be6ce test rbp, rbp | | if (rbp == 0) { 0x004be6d1 je 0x4be6fb | goto label_19; | } 0x004be6d3 nop word cs:[rax + rax] | 0x004be6dd nop dword [rax] | | do { 0x004be6e0 movups xmm0, xmmword [rax + rbx] | __asm ("movups xmm0, xmmword [rax + rbx]"); 0x004be6e4 movups xmm1, xmmword [rax + rbx + 0x10] | __asm ("movups xmm1, xmmword [rax + rbx + 0x10]"); 0x004be6e9 movups xmmword [rcx + rbx], xmm0 | __asm ("movups xmmword [rcx + rbx], xmm0"); 0x004be6ed movups xmmword [rcx + rbx + 0x10], xmm1 | __asm ("movups xmmword [rcx + rbx + 0x10], xmm1"); 0x004be6f2 add rbx, 0x20 | rbx += 0x20; 0x004be6f6 dec rbp | rbp--; 0x004be6f9 jne 0x4be6e0 | | } while (rbp != 0); | label_19: 0x004be6fb cmp r10, rdi | 0x004be6fe mov ebp, r9d | | if (r10 == rdi) { 0x004be701 je 0x4be77f | goto label_13; | } 0x004be703 test r10b, 0x1c | | if ((r10b & 0x1c) == 0) { 0x004be707 je 0x4be753 | goto label_20; | } | label_17: 0x004be709 mov rdx, qword [rsp + 0x18] | rdx = *((rsp + 0x18)); 0x004be70e add edx, r15d | edx += r15d; 0x004be711 movsxd rbx, edx | rbx = (int64_t) edx; 0x004be714 sub rbx, r15 | rbx -= r15; 0x004be717 mov rdx, rbx | rdx = rbx; 0x004be71a and rdx, 0xfffffffffffffffc | rdx &= 0xfffffffffffffffc; 0x004be71e add rax, rdx | rax += rdx; 0x004be721 add rcx, rdx | rcx += rdx; 0x004be724 nop word cs:[rax + rax] | 0x004be72e nop | | do { 0x004be730 mov ebp, dword [r15 + rdi + 0x74f2b0] | ebp = *((r15 + rdi + obj.testCopyConstructWithIterators_char__bool__bool__bool_::u)); 0x004be738 mov dword [r14 + rdi + 0x74f2b0], ebp | *((r14 + rdi + obj.testCopyConstructWithIterators_char__bool__bool__bool_::u)) = ebp; 0x004be740 add rdi, 4 | rdi += 4; 0x004be744 cmp rdx, rdi | 0x004be747 jne 0x4be730 | | } while (rdx != rdi); 0x004be749 cmp rbx, rdx | 0x004be74c mov ebp, r9d | | if (rbx == rdx) { 0x004be74f jne 0x4be760 | 0x004be751 jmp 0x4be77f | goto label_13; | label_20: 0x004be753 add rcx, rdi | rcx += rdi; 0x004be756 add rax, rdi | rax += rdi; 0x004be759 nop dword [rax] | | } | label_15: 0x004be760 sub r8, rax | r8 -= rax; 0x004be763 lea rdx, [r8 + 0x74f2b0] | rdx = r8 + obj_testCopyConstructWithIterators_char__bool__bool__bool_::u; 0x004be76a xor edi, edi | edi = 0; 0x004be76c nop dword [rax] | | do { 0x004be770 movzx ebx, byte [rax + rdi] | ebx = *((rax + rdi)); 0x004be774 mov byte [rcx + rdi], bl | *((rcx + rdi)) = bl; 0x004be777 inc rdi | rdi++; 0x004be77a cmp rdx, rdi | 0x004be77d jne 0x4be770 | | } while (rdx != rdi); | label_13: 0x004be77f cmp byte [rip + 0x25a20a], 0 | | if (*(obj.veryVerbose) != 0) { 0x004be786 je 0x4be7a8 | 0x004be788 mov edx, dword [rip + 0x25a216] | edx = numCopyCtorCalls; 0x004be78e sub edx, r12d | edx -= r12d; 0x004be791 mov ecx, dword [rip + 0x25a215] | ecx = numCharCtorCalls; 0x004be797 sub ecx, ebp | ecx -= ebp; 0x004be799 mov edi, 0x4f5c2a | 0x004be79e mov esi, r13d | esi = r13d; 0x004be7a1 xor eax, eax | eax = 0; 0x004be7a3 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_12: 0x004be7a8 cmp byte [rsp + 0x54], 0 | | if (*((rsp + 0x54)) == 0) { 0x004be7ad je 0x4be810 | goto label_21; | } 0x004be7af cmp r12d, dword [rip + 0x25a1ee] | 0x004be7b6 mov rbx, qword [rsp + 0x10] | rbx = *((rsp + 0x10)); | if (r12d != *(obj.numCopyCtorCalls)) { 0x004be7bb je 0x4be7e6 | 0x004be7bd mov edi, 0x4f4c78 | 0x004be7c2 mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004be7c7 mov esi, 0x1005 | esi = 0x1005; 0x004be7cc xor eax, eax | eax = 0; 0x004be7ce call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004be7d3 mov eax, dword [rip + 0x25a1bf] | eax = (anonymous namespace)::testStatus; 0x004be7d9 cmp eax, 0x64 | | if (eax > 0x64) { 0x004be7dc ja 0x4be7e6 | goto label_22; | } 0x004be7de inc eax | eax++; 0x004be7e0 mov dword [rip + 0x25a1b2], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_22: 0x004be7e6 cmp ebp, dword [rip + 0x25a1c0] | | if (ebp == *(obj.numCharCtorCalls)) { 0x004be7ec je 0x4be2f0 | goto label_2; | } 0x004be7f2 mov edi, 0x4f4c78 | edi = "Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"; 0x004be7f7 mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004be7fc mov esi, 0x1006 | esi = 0x1006; 0x004be801 jmp 0x4be867 | goto label_23; | label_21: 0x004be810 add r12d, dword [rsp + 0x18] | r12d += *((rsp + 0x18)); 0x004be815 cmp r12d, dword [rip + 0x25a188] | 0x004be81c mov rbx, qword [rsp + 0x10] | rbx = *((rsp + 0x10)); | if (r12d > *(obj.numCopyCtorCalls)) { 0x004be821 jle 0x4be84c | 0x004be823 mov edi, 0x4f4c78 | 0x004be828 mov edx, 0x4f5c78 | edx = "NUM_COPIES + NE <= numCopyCtorCalls"; 0x004be82d mov esi, 0x1009 | esi = 0x1009; 0x004be832 xor eax, eax | eax = 0; 0x004be834 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004be839 mov eax, dword [rip + 0x25a159] | eax = (anonymous namespace)::testStatus; 0x004be83f cmp eax, 0x64 | | if (eax > 0x64) { 0x004be842 ja 0x4be84c | goto label_24; | } 0x004be844 inc eax | eax++; 0x004be846 mov dword [rip + 0x25a14c], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_24: 0x004be84c cmp ebp, dword [rip + 0x25a15a] | | if (ebp == *(obj.numCharCtorCalls)) { 0x004be852 je 0x4be2f0 | goto label_2; | } 0x004be858 mov edi, 0x4f4c78 | 0x004be85d mov edx, 0x4f5c5a | edx = "NUM_CTORS == numCharCtorCalls"; 0x004be862 mov esi, 0x100a | esi = 0x100a; | label_23: 0x004be867 xor eax, eax | eax = 0; 0x004be869 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004be86e mov eax, dword [rip + 0x25a124] | eax = (anonymous namespace)::testStatus; 0x004be874 cmp eax, 0x64 | | if (eax > 0x64) { 0x004be877 ja 0x4be2f0 | goto label_2; | } 0x004be87d inc eax | eax++; 0x004be87f mov dword [rip + 0x25a113], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004be885 jmp 0x4be2f0 | goto label_2; | label_8: 0x004be88a cmp byte [rip + 0x25a105], 0 | | if (*(obj.verbose) != 0) { 0x004be891 je 0x4be89d | 0x004be893 mov edi, 0x4f67d2 | 0x004be898 call 0x401710 | puts ("\t\tfrom different type."); | } 0x004be89d xor r15d, r15d | r15d = 0; 0x004be8a0 jmp 0x4be8d7 | goto label_25; | label_3: 0x004be8b0 mov edi, 0x74f2b0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004be8b5 mov rsi, rbx | rsi = rbx; 0x004be8b8 call 0x4024e0 | verify(char*,char const*) (); 0x004be8bd mov edi, 0x74f2b0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004be8c2 mov rsi, rbx | rsi = rbx; 0x004be8c5 call 0x402170 | cleanup(char*,char const*) (); 0x004be8ca inc r15 | r15++; 0x004be8cd cmp r15, 0x1e | | if (r15 == 0x1e) { 0x004be8d1 je 0x4bec0f | goto label_26; | } | label_25: 0x004be8d7 lea rbx, [r15*8] | rbx = r15*8; 0x004be8df mov r12, qword [rbx + rbx*4 + 0x4f3b08] | r12 = *((rbx + rbx*4 + 0x4f3b08)); 0x004be8e7 mov rdi, r12 | 0x004be8ea call 0x401790 | eax = strlen (*((rbx + rbx*4 + 0x4f3b08))); 0x004be8ef cmp eax, 0x11 | | if (eax >= 0x11) { 0x004be8f2 jl 0x4be91d | 0x004be8f4 mov edi, 0x4f4c78 | 0x004be8f9 mov edx, 0x4f4203 | edx = "MAX_SIZE >= (int)std::strlen(SPEC)"; 0x004be8fe mov esi, 0x1019 | esi = 0x1019; 0x004be903 xor eax, eax | eax = 0; 0x004be905 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004be90a mov eax, dword [rip + 0x25a088] | eax = (anonymous namespace)::testStatus; 0x004be910 cmp eax, 0x64 | | if (eax > 0x64) { 0x004be913 ja 0x4be91d | goto label_27; | } 0x004be915 inc eax | eax++; 0x004be917 mov dword [rip + 0x25a07b], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_27: 0x004be91d mov rdi, r12 | 0x004be920 call 0x401790 | rax = strlen (r12); 0x004be925 cmp rax, 0x14 | | if (rax >= 0x14) { 0x004be929 jb 0x4be954 | 0x004be92b mov edi, 0x4f4c78 | 0x004be930 mov edx, 0x4f5c9c | edx = "SPEC_CE_LEN > std::strlen(SPEC)"; 0x004be935 mov esi, 0x101c | esi = 0x101c; 0x004be93a xor eax, eax | eax = 0; 0x004be93c call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004be941 mov eax, dword [rip + 0x25a051] | eax = (anonymous namespace)::testStatus; 0x004be947 cmp eax, 0x64 | | if (eax > 0x64) { 0x004be94a ja 0x4be954 | goto label_28; | } 0x004be94c inc eax | eax++; 0x004be94e mov dword [rip + 0x25a044], eax | *(obj._anonymous_namespace_::testStatus) = eax; | } | label_28: 0x004be954 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004be957 movaps xmmword [rsp + 0x30], xmm0 | *((rsp + 0x30)) = xmm0; 0x004be95c mov dword [rsp + 0x40], 0 | *((rsp + 0x40)) = 0; 0x004be964 mov al, byte [r12] | al = *(r12); 0x004be968 test al, al | | if (al == 0) { 0x004be96a je 0x4be981 | goto label_29; | } 0x004be96c xor ecx, ecx | ecx = 0; 0x004be96e nop | | do { 0x004be970 mov byte [rsp + rcx + 0x30], al | *((rsp + rcx + 0x30)) = al; 0x004be974 movzx eax, byte [r12 + rcx + 1] | eax = *((r12 + rcx + 1)); 0x004be97a inc rcx | rcx++; 0x004be97d test al, al | 0x004be97f jne 0x4be970 | | } while (al != 0); | label_29: 0x004be981 mov eax, dword [rbx + rbx*4 + 0x4f3b00] | eax = *((rbx + rbx*4 + obj.DATA_3)); 0x004be988 mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x004be98c movsxd r14, dword [rbx + rbx*4 + 0x4f3b10] | r14 = *((rbx + rbx*4 + 0x4f3b10)); 0x004be994 movsxd rbp, dword [rbx + rbx*4 + 0x4f3b14] | rbp = *((rbx + rbx*4 + 0x4f3b14)); 0x004be99c movsxd r13, dword [rbx + rbx*4 + 0x4f3b18] | r13 = *((rbx + rbx*4 + 0x4f3b18)); 0x004be9a4 mov rbx, qword [rbx + rbx*4 + 0x4f3b20] | rbx = *((rbx + rbx*4 + 0x4f3b20)); 0x004be9ac cmp byte [rip + 0x259fdd], 0 | | if (*(obj.veryVerbose) != 0) { 0x004be9b3 je 0x4be9d5 | 0x004be9b5 mov qword [rsp], rbx | *(rsp) = rbx; 0x004be9b9 mov edi, 0x4f5ab7 | 0x004be9be mov esi, dword [rsp + 0x20] | esi = *((rsp + 0x20)); 0x004be9c2 mov rdx, r12 | rdx = r12; 0x004be9c5 mov ecx, r14d | ecx = r14d; 0x004be9c8 mov r8d, ebp | r8d = ebp; 0x004be9cb mov r9d, r13d | r9d = r13d; 0x004be9ce xor eax, eax | eax = 0; 0x004be9d0 call 0x401680 | printf ("LINE = %d, SPEC = %s, SRC = %d, NE = %d, DST = %d, EXP = %s\n"); | } 0x004be9d5 mov edi, 0x74f2b0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004be9da mov rsi, r12 | rsi = r12; 0x004be9dd call 0x4ddaf0 | char&gg(char*,char const*) (); 0x004be9e2 mov edi, 0x74f2b0 | edi = testCopyConstructWithIterators(bool, bool, bool)::u; 0x004be9e7 mov rsi, r12 | rsi = r12; 0x004be9ea call 0x4024e0 | verify(char*,char const*) (); 0x004be9ef mov r12d, dword [rip + 0x259fae] | r12d = numCopyCtorCalls; 0x004be9f6 mov eax, dword [rip + 0x259fb0] | eax = numCharCtorCalls; 0x004be9fc mov dword [rsp + 0x18], eax | *((rsp + 0x18)) = eax; 0x004bea00 cmp byte [rsp + 0x2c], 0 | | if (*((rsp + 0x2c)) != 0) { 0x004bea05 je 0x4bead0 | 0x004bea0b cmp byte [rip + 0x259f7e], 0 | | if (*(obj.veryVerbose) != 0) { 0x004bea12 je 0x4bea27 | 0x004bea14 cmp dword [rip + 0x259b01], 0 | | if (*(0x0071851c) == 0) { 0x004bea1b je 0x4bea27 | goto label_30; | } 0x004bea1d mov edi, 0x4f425a | 0x004bea22 call 0x401710 | puts ("\t\tBSLMA EXCEPTION TEST -- (ENABLED) --"); | } | label_30: 0x004bea27 mov dword [rip + 0x259aeb], 0 | *(0x0071851c) = 0; 0x004bea31 cmp byte [rip + 0x259f5d], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004bea38 je 0x4bea44 | 0x004bea3a mov edi, 0x4f4281 | 0x004bea3f call 0x401710 | puts ("\t\tBegin bslma exception test."); | } 0x004bea44 mov rax, qword [rip + 0x259dd5] | rax = Z; 0x004bea4b mov qword [rsp + 0x58], 0x4f6858 | *((rsp + 0x58)) = vtable.BloombergLP::bslma::TestAllocator_Proxy_BloombergLP::bslma::TestAllocator_.0; 0x004bea54 mov qword [rsp + 0x60], rax | *((rsp + 0x60)) = rax; 0x004bea59 mov qword [rax + 0x20], 0 | *((rax + 0x20)) = 0; 0x004bea61 test rax, rax | | if (rax == 0) { 0x004bea64 je 0x4beb78 | goto label_31; | } | label_4: 0x004bea6a cmp r15, 6 | | if (r15 >= 6) { 0x004bea6e jb 0x4bea8b | 0x004bea70 lea eax, [r14 + rbp] | eax = r14 + rbp; 0x004bea74 movsxd rdx, eax | rdx = (int64_t) eax; 0x004bea77 lea rdi, [r13 + 0x74f2b0] | 0x004bea7e lea rsi, [rsp + r14 + 0x30] | 0x004bea83 sub rdx, r14 | rdx -= r14; 0x004bea86 call 0x401930 | memcpy (r13 + obj.testCopyConstructWithIterators_char__bool__bool__bool_::u, rsp + r14 + 0x30, rdx); | } 0x004bea8b mov rax, qword [rsp + 0x58] | rax = *((rsp + 0x58)); 0x004bea90 lea rdi, [rsp + 0x58] | rdi = rsp + 0x58; 0x004bea95 mov rsi, 0xffffffffffffffff | rsi = 0xffffffffffffffff; 0x004bea9c call qword [rax + 0x10] | uint64_t (*rax + 0x10)() (); 0x004bea9f cmp byte [rip + 0x259eef], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004beaa6 je 0x4beab2 | 0x004beaa8 mov edi, 0x4f43e1 | 0x004beaad call 0x401710 | puts ("\t\tEnd bslma exception test."); | } 0x004beab2 cmp byte [rip + 0x259ed7], 0 | | if (*(obj.veryVerbose) == 0) { 0x004beab9 je 0x4beb39 | goto label_32; | } 0x004beabb mov edi, 0xa | 0x004beac0 call 0x401720 | putchar (0xa); 0x004beac5 jmp 0x4beb0d | | } else { 0x004bead0 cmp qword [rip + 0x259d48], 0 | 0x004bead8 mov rcx, r13 | rcx = r13; | if (*(obj.Z) == 0) { 0x004beadb jne 0x4beaed | 0x004beadd mov rax, qword [rip + 0x2927d4] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004beae4 test rax, rax | | if (rax == 0) { 0x004beae7 je 0x4bebf8 | goto label_33; | } | } 0x004beaed cmp r15, 6 | | if (r15 < 6) { 0x004beaf1 jb 0x4beb0d | goto label_6; | } | label_5: 0x004beaf3 add rbp, r14 | rbp += r14; 0x004beaf6 lea rdi, [rcx + 0x74f2b0] | 0x004beafd lea rsi, [rsp + r14 + 0x30] | 0x004beb02 sub rbp, r14 | rbp -= r14; 0x004beb05 mov rdx, rbp | 0x004beb08 call 0x401930 | eax = memcpy (rcx + obj.testCopyConstructWithIterators_char__bool__bool__bool_::u, rsp + r14 + 0x30, rbp); | } | label_6: 0x004beb0d cmp byte [rip + 0x259e7c], 0 | | if (*(obj.veryVerbose) != 0) { 0x004beb14 je 0x4beb39 | 0x004beb16 mov edx, dword [rip + 0x259e88] | edx = numCopyCtorCalls; 0x004beb1c sub edx, r12d | edx -= r12d; 0x004beb1f mov ecx, dword [rip + 0x259e87] | ecx = numCharCtorCalls; 0x004beb25 sub ecx, dword [rsp + 0x18] | ecx -= *((rsp + 0x18)); 0x004beb29 mov edi, 0x4f5c2a | 0x004beb2e mov esi, dword [rsp + 0x20] | esi = *((rsp + 0x20)); 0x004beb32 xor eax, eax | eax = 0; 0x004beb34 call 0x401680 | eax = printf ("LINE = %d, #copy ctors = %d, #char ctors = %d.\n"); | } | label_32: 0x004beb39 cmp r12d, dword [rip + 0x259e64] | | if (r12d == *(obj.numCopyCtorCalls)) { 0x004beb40 je 0x4be8b0 | goto label_3; | } 0x004beb46 mov edi, 0x4f4c78 | 0x004beb4b mov edx, 0x4f4fec | edx = "NUM_COPIES == numCopyCtorCalls"; 0x004beb50 mov esi, 0x103f | esi = 0x103f; 0x004beb55 xor eax, eax | eax = 0; 0x004beb57 call 0x401680 | printf ("Error /home/parsa/experiments/assumptions/crush/ccm-assume/groups/bsl/bslalg/bslalg_arrayprimitives.t.cpp(%d): %s (failed)\n"); 0x004beb5c mov eax, dword [rip + 0x259e36] | eax = (anonymous namespace)::testStatus; 0x004beb62 cmp eax, 0x64 | | if (eax > 0x64) { 0x004beb65 ja 0x4be8b0 | goto label_3; | } 0x004beb6b inc eax | eax++; 0x004beb6d mov dword [rip + 0x259e25], eax | *(obj._anonymous_namespace_::testStatus) = eax; 0x004beb73 jmp 0x4be8b0 | goto label_3; | label_31: 0x004beb78 mov eax, 1 | eax = 1; 0x004beb7d mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x004beb82 mov rax, qword [rip + 0x29272f] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004beb89 test rax, rax | | if (rax != 0) { 0x004beb8c jne 0x4bea6a | goto label_4; | } 0x004beb92 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004beb97 jmp 0x4bea6a | goto label_4; | label_33: 0x004bebf8 call 0x4eec50 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004bebfd mov rcx, r13 | rcx = r13; 0x004bec00 cmp r15, 6 | | if (r15 >= 6) { 0x004bec04 jae 0x4beaf3 | goto label_5; | } 0x004bec0a jmp 0x4beb0d | goto label_6; | label_26: 0x004bec0f add rsp, 0x68 | 0x004bec13 pop rbx | 0x004bec14 pop r12 | 0x004bec16 pop r13 | 0x004bec18 pop r14 | 0x004bec1a pop r15 | 0x004bec1c pop rbp | 0x004bec1d ret | return rax; | }