Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 10 ?? sub esp, 0x10<16>
   56 ?? push esi
   b8 cc cc cc cc ?? mov eax, 0xcccccccc
   89 45 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], eax
   89 45 f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], eax
   89 45 f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], eax
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   83 c8 ff ?? or eax, 0xff<255,-1>
   33 d2 ?? xor edx, edx
   f7 75 10 ?? div dword ss:[ebp + 0x10<16>]
   39 45 0c ?? cmp dword ss:[ebp + 12], eax
   76 5f ?? jbe basic block L10
  
  L2: b8 24 be 40 00 ?? mov eax, 0x0040be24<"_Count <= (size_t)(-1) / _Sz">
   85 c0 ?? test eax, eax
   74 04 ?? je basic block L4
  
  L3: 33 c9 ?? xor ecx, ecx
   75 2d ?? jne basic block L8
  
  L4: 8b f4 ?? mov esi, esp
   68 48 be 40 00 ?? push 0x0040be48<"\"_Count <= (size_t)(-1) /"+10 more>
   68 e0 bc 40 00 ?? push 0x0040bce0<"%ls">
   6a 00 ?? push 0
   6a 5e ?? push 0x5e<94>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   6a 02 ?? push 2
   ff 15 8c f1 40 00 ?? call dword ds:[0x0040f18c]
  
  L5: 83 c4 18 ?? add esp, 0x18<24>
   3b f4 ?? cmp esi, esp
   e8 5f d9 ff ff ?? call function 0x00401168
  
  L6: 83 f8 01 ?? cmp eax, 1
   75 01 ?? jne basic block L8
  
  L7: cc ?? int3
  
  L8: 8b f4 ?? mov esi, esp
   6a 00 ?? push 0
   6a 5e ?? push 0x5e<94>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   68 a0 be 40 00 ?? push 0x0040bea0<"std::_Deallocate">
   68 c0 bd 40 00 ?? push 0x0040bdc0<"\"invalid argument\"">
   ff 15 90 f1 40 00 ?? call dword ds:[0x0040f190]
  
  L9: 83 c4 14 ?? add esp, 0x14<20>
   3b f4 ?? cmp esi, esp
   e8 34 d9 ff ff ?? call function 0x00401168
  
  L10: 8b 45 0c ?? mov eax, dword ss:[ebp + 12]
   0f af 45 10 ?? imul eax, dword ss:[ebp + 0x10<16>]
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   81 7d fc 00 10 00 00 ?? cmp dword ss:[ebp + 0xfc<252,-4>], 0x00001000<4096>
   0f 82 32 02 00 00 ?? jb basic block L57
  
  L11: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   89 4d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], ecx
   8b 55 f8 ?? mov edx, dword ss:[ebp + 0xf8<248,-8>]
   83 e2 1f ?? and edx, 0x1f<31>
   74 5f ?? je basic block L20
  
  L12: b8 c8 be 40 00 ?? mov eax, 0x0040bec8<"(_Ptr_user & (_BIG_ALLOCA"+25 more>
   85 c0 ?? test eax, eax
   74 04 ?? je basic block L14
  
  L13: 33 c9 ?? xor ecx, ecx
   75 2d ?? jne basic block L18
  
  L14: 8b f4 ?? mov esi, esp
   68 08 bf 40 00 ?? push 0x0040bf08<"\"(_Ptr_user & (_BIG_ALLOC"+32 more>
   68 e0 bc 40 00 ?? push 0x0040bce0<"%ls">
   6a 00 ?? push 0
   6a 64 ?? push 0x64<100>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   6a 02 ?? push 2
   ff 15 8c f1 40 00 ?? call dword ds:[0x0040f18c]
  
  L15: 83 c4 18 ?? add esp, 0x18<24>
   3b f4 ?? cmp esi, esp
   e8 db d8 ff ff ?? call function 0x00401168
  
  L16: 83 f8 01 ?? cmp eax, 1
   75 01 ?? jne basic block L18
  
  L17: cc ?? int3
  
  L18: 8b f4 ?? mov esi, esp
   6a 00 ?? push 0
   6a 64 ?? push 0x64<100>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   68 a0 be 40 00 ?? push 0x0040bea0<"std::_Deallocate">
   68 c0 bd 40 00 ?? push 0x0040bdc0<"\"invalid argument\"">
   ff 15 90 f1 40 00 ?? call dword ds:[0x0040f190]
  
  L19: 83 c4 14 ?? add esp, 0x14<20>
   3b f4 ?? cmp esi, esp
   e8 b0 d8 ff ff ?? call function 0x00401168
  
  L20: 8b 45 f8 ?? mov eax, dword ss:[ebp + 0xf8<248,-8>]
   83 e8 04 ?? sub eax, 4
   89 45 f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], eax
   8b 4d f4 ?? mov ecx, dword ss:[ebp + 0xf4<244,-12>]
   8b 11 ?? mov edx, dword ds:[ecx]
   89 55 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], edx
   b8 04 00 00 00 ?? mov eax, 4
   6b c8 ff ?? imul ecx, eax, 0xff<255,-1>
   8b 55 f4 ?? mov edx, dword ss:[ebp + 0xf4<244,-12>]
   81 3c 0a fa fa fa fa ?? cmp dword ds:[edx + ecx], 0xfafafafa
   74 5f ?? je basic block L29
  
  L21: b8 98 bf 40 00 ?? mov eax, 0x0040bf98<"reinterpret_cast<uintptr_"+46 more>
   85 c0 ?? test eax, eax
   74 04 ?? je basic block L23
  
  L22: 33 c9 ?? xor ecx, ecx
   75 2d ?? jne basic block L27
  
  L23: 8b f4 ?? mov esi, esp
   68 f0 bf 40 00 ?? push 0x0040bff0<"\"reinterpret_cast<uintptr"+53 more>
   68 e0 bc 40 00 ?? push 0x0040bce0<"%ls">
   6a 00 ?? push 0
   6a 6e ?? push 0x6e<110>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   6a 02 ?? push 2
   ff 15 8c f1 40 00 ?? call dword ds:[0x0040f18c]
  
  L24: 83 c4 18 ?? add esp, 0x18<24>
   3b f4 ?? cmp esi, esp
   e8 57 d8 ff ff ?? call function 0x00401168
  
  L25: 83 f8 01 ?? cmp eax, 1
   75 01 ?? jne basic block L27
  
  L26: cc ?? int3
  
  L27: 8b f4 ?? mov esi, esp
   6a 00 ?? push 0
   6a 6e ?? push 0x6e<110>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   68 a0 be 40 00 ?? push 0x0040bea0<"std::_Deallocate">
   68 c0 bd 40 00 ?? push 0x0040bdc0<"\"invalid argument\"">
   ff 15 90 f1 40 00 ?? call dword ds:[0x0040f190]
  
  L28: 83 c4 14 ?? add esp, 0x14<20>
   3b f4 ?? cmp esi, esp
   e8 2c d8 ff ff ?? call function 0x00401168
  
  L29: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   3b 45 f8 ?? cmp eax, dword ss:[ebp + 0xf8<248,-8>]
   72 5f ?? jb basic block L38
  
  L30: b9 b0 c0 40 00 ?? mov ecx, 0x0040c0b0<"_Ptr_container < _Ptr_user">
   85 c9 ?? test ecx, ecx
   74 04 ?? je basic block L32
  
  L31: 33 d2 ?? xor edx, edx
   75 2d ?? jne basic block L36
  
  L32: 8b f4 ?? mov esi, esp
   68 d0 c0 40 00 ?? push 0x0040c0d0<"\"_Ptr_container < _Ptr_us"+8 more>
   68 e0 bc 40 00 ?? push 0x0040bce0<"%ls">
   6a 00 ?? push 0
   6a 72 ?? push 0x72<114>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   6a 02 ?? push 2
   ff 15 8c f1 40 00 ?? call dword ds:[0x0040f18c]
  
  L33: 83 c4 18 ?? add esp, 0x18<24>
   3b f4 ?? cmp esi, esp
   e8 f0 d7 ff ff ?? call function 0x00401168
  
  L34: 83 f8 01 ?? cmp eax, 1
   75 01 ?? jne basic block L36
  
  L35: cc ?? int3
  
  L36: 8b f4 ?? mov esi, esp
   6a 00 ?? push 0
   6a 72 ?? push 0x72<114>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   68 a0 be 40 00 ?? push 0x0040bea0<"std::_Deallocate">
   68 c0 bd 40 00 ?? push 0x0040bdc0<"\"invalid argument\"">
   ff 15 90 f1 40 00 ?? call dword ds:[0x0040f190]
  
  L37: 83 c4 14 ?? add esp, 0x14<20>
   3b f4 ?? cmp esi, esp
   e8 c5 d7 ff ff ?? call function 0x00401168
  
  L38: 8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   2b 4d f0 ?? sub ecx, dword ss:[ebp + 0xf0<240,-16>]
   83 f9 08 ?? cmp ecx, 8
   73 5f ?? jae basic block L47
  
  L39: ba 24 c1 40 00 ?? mov edx, 0x0040c124<"2 * sizeof(void *) <= _Pt"+23 more>
   85 d2 ?? test edx, edx
   74 04 ?? je basic block L41
  
  L40: 33 c0 ?? xor eax, eax
   75 2d ?? jne basic block L45
  
  L41: 8b f4 ?? mov esi, esp
   68 60 c1 40 00 ?? push 0x0040c160<"\"2 * sizeof(void *) <= _P"+30 more>
   68 e0 bc 40 00 ?? push 0x0040bce0<"%ls">
   6a 00 ?? push 0
   6a 76 ?? push 0x76<118>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   6a 02 ?? push 2
   ff 15 8c f1 40 00 ?? call dword ds:[0x0040f18c]
  
  L42: 83 c4 18 ?? add esp, 0x18<24>
   3b f4 ?? cmp esi, esp
   e8 86 d7 ff ff ?? call function 0x00401168
  
  L43: 83 f8 01 ?? cmp eax, 1
   75 01 ?? jne basic block L45
  
  L44: cc ?? int3
  
  L45: 8b f4 ?? mov esi, esp
   6a 00 ?? push 0
   6a 76 ?? push 0x76<118>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   68 a0 be 40 00 ?? push 0x0040bea0<"std::_Deallocate">
   68 c0 bd 40 00 ?? push 0x0040bdc0<"\"invalid argument\"">
   ff 15 90 f1 40 00 ?? call dword ds:[0x0040f190]
  
  L46: 83 c4 14 ?? add esp, 0x14<20>
   3b f4 ?? cmp esi, esp
   e8 5b d7 ff ff ?? call function 0x00401168
  
  L47: 8b 55 f8 ?? mov edx, dword ss:[ebp + 0xf8<248,-8>]
   2b 55 f0 ?? sub edx, dword ss:[ebp + 0xf0<240,-16>]
   83 fa 27 ?? cmp edx, 0x27<39>
   76 5f ?? jbe basic block L56
  
  L48: b8 e8 c1 40 00 ?? mov eax, 0x0040c1e8<"_Ptr_user - _Ptr_containe"+19 more>
   85 c0 ?? test eax, eax
   74 04 ?? je basic block L50
  
  L49: 33 c9 ?? xor ecx, ecx
   75 2d ?? jne basic block L54
  
  L50: 8b f4 ?? mov esi, esp
   68 20 c2 40 00 ?? push 0x0040c220<"\"_Ptr_user - _Ptr_contain"+26 more>
   68 e0 bc 40 00 ?? push 0x0040bce0<"%ls">
   6a 00 ?? push 0
   6a 7e ?? push 0x7e<126>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   6a 02 ?? push 2
   ff 15 8c f1 40 00 ?? call dword ds:[0x0040f18c]
  
  L51: 83 c4 18 ?? add esp, 0x18<24>
   3b f4 ?? cmp esi, esp
   e8 1c d7 ff ff ?? call function 0x00401168
  
  L52: 83 f8 01 ?? cmp eax, 1
   75 01 ?? jne basic block L54
  
  L53: cc ?? int3
  
  L54: 8b f4 ?? mov esi, esp
   6a 00 ?? push 0
   6a 7e ?? push 0x7e<126>
   68 f0 bc 40 00 ?? push 0x0040bcf0<"C:\\Program Files (x86)\\Mi"+46 more>
   68 a0 be 40 00 ?? push 0x0040bea0<"std::_Deallocate">
   68 c0 bd 40 00 ?? push 0x0040bdc0<"\"invalid argument\"">
   ff 15 90 f1 40 00 ?? call dword ds:[0x0040f190]
  
  L55: 83 c4 14 ?? add esp, 0x14<20>
   3b f4 ?? cmp esi, esp
   e8 f1 d6 ff ff ?? call function 0x00401168
  
  L56: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   89 45 08 ?? mov dword ss:[ebp + 8], eax
  
  L57: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   51 ?? push ecx
   e8 c5 d5 ff ff ?? call function 0x0040104b
  
  L58: 83 c4 04 ?? add esp, 4
   5e ?? pop esi
   83 c4 10 ?? add esp, 0x10<16>
   3b ec ?? cmp ebp, esp
   e8 d4 d6 ff ff ?? call function 0x00401168
  
  L59: 8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  