4b00ec:	83 c0 fc             	add    $0xfffffffc,%eax
4b00ef:	83 f8 1f             	cmp    $0x1f,%eax
4b00f2:	0f 87 8f 13 00 00    	ja     0x4b1487
4b00f8:	52                   	push   %edx
4b00f9:	51                   	push   %ecx
4b00fa:	e8 56 11 12 00       	call   0x5d1255
4b00ff:	83 c4 08             	add    $0x8,%esp
4b0102:	80 bd 3b ff ff ff 00 	cmpb   $0x0,-0xc5(%ebp)
4b0109:	0f 84 8c 04 00 00    	je     0x4b059b
4b010f:	c7 85 78 ff ff ff 00 	movl   $0x0,-0x88(%ebp)
4b0116:	00 00 00
4b0119:	c7 45 88 00 00 00 00 	movl   $0x0,-0x78(%ebp)
4b0120:	c7 45 8c 0f 00 00 00 	movl   $0xf,-0x74(%ebp)
4b0127:	c6 85 78 ff ff ff 00 	movb   $0x0,-0x88(%ebp)
4b012e:	c7 45 a8 00 00 00 00 	movl   $0x0,-0x58(%ebp)
4b0135:	c7 45 b8 00 00 00 00 	movl   $0x0,-0x48(%ebp)
4b013c:	c7 45 bc 0f 00 00 00 	movl   $0xf,-0x44(%ebp)
4b0143:	c6 45 a8 00          	movb   $0x0,-0x58(%ebp)
4b0147:	8d 45 a8             	lea    -0x58(%ebp),%eax
4b014a:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
4b014e:	50                   	push   %eax
4b014f:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
4b0155:	8b cf                	mov    %edi,%ecx
4b0157:	50                   	push   %eax
4b0158:	e8 f3 f6 ff ff       	call   0x4af850
4b015d:	84 c0                	test   %al,%al
4b015f:	0f 84 a9 03 00 00    	je     0x4b050e
4b0165:	c7 45 c0 00 00 00 00 	movl   $0x0,-0x40(%ebp)
4b016c:	c7 45 d4 0f 00 00 00 	movl   $0xf,-0x2c(%ebp)
4b0173:	c7 45 d0 01 00 00 00 	movl   $0x1,-0x30(%ebp)
4b017a:	66 c7 45 c0 5d 00    	movw   $0x5d,-0x40(%ebp)
4b0180:	8d 45 c0             	lea    -0x40(%ebp),%eax
4b0183:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
4b0187:	50                   	push   %eax
4b0188:	8b cf                	mov    %edi,%ecx
4b018a:	e8 31 f4 ff ff       	call   0x4af5c0
4b018f:	8b 55 d4             	mov    -0x2c(%ebp),%edx
4b0192:	88 85 3b ff ff ff    	mov    %al,-0xc5(%ebp)
4b0198:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
4b019c:	83 fa 10             	cmp    $0x10,%edx
4b019f:	72 32                	jb     0x4b01d3
4b01a1:	8b 4d c0             	mov    -0x40(%ebp),%ecx
4b01a4:	42                   	inc    %edx
4b01a5:	8b c1                	mov    %ecx,%eax
4b01a7:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
4b01ad:	72 14                	jb     0x4b01c3
4b01af:	8b 49 fc             	mov    -0x4(%ecx),%ecx
4b01b2:	83 c2 23             	add    $0x23,%edx
4b01b5:	2b c1                	sub    %ecx,%eax
4b01b7:	83 c0 fc             	add    $0xfffffffc,%eax
4b01ba:	83 f8 1f             	cmp    $0x1f,%eax
4b01bd:	0f 87 bf 12 00 00    	ja     0x4b1482
4b01c3:	52                   	push   %edx
4b01c4:	51                   	push   %ecx
4b01c5:	e8 8b 10 12 00       	call   0x5d1255
4b01ca:	8a 85 3b ff ff ff    	mov    -0xc5(%ebp),%al
4b01d0:	83 c4 08             	add    $0x8,%esp
4b01d3:	84 c0                	test   %al,%al
4b01d5:	0f 84 33 03 00 00    	je     0x4b050e
4b01db:	c7 45 c0 00 00 00 00 	movl   $0x0,-0x40(%ebp)
4b01e2:	c7 45 d4 0f 00 00 00 	movl   $0xf,-0x2c(%ebp)
4b01e9:	c7 45 d0 01 00 00 00 	movl   $0x1,-0x30(%ebp)
4b01f0:	66 c7 45 c0 3a 00    	movw   $0x3a,-0x40(%ebp)
4b01f6:	83 7f 2c 10          	cmpl   $0x10,0x2c(%edi)
4b01fa:	8d 4f 18             	lea    0x18(%edi),%ecx
4b01fd:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
4b0201:	72 03                	jb     0x4b0206
4b0203:	8b 4f 18             	mov    0x18(%edi),%ecx
4b0206:	6a 01                	push   $0x1
4b0208:	8d 55 c0             	lea    -0x40(%ebp),%edx
4b020b:	52                   	push   %edx
4b020c:	ff 77 28             	push   0x28(%edi)
4b020f:	51                   	push   %ecx
4b0210:	e8 1b a3 fc ff       	call   0x47a530
4b0215:	83 c4 10             	add    $0x10,%esp
4b0218:	84 c0                	test   %al,%al
4b021a:	74 08                	je     0x4b0224
4b021c:	8d 4f 14             	lea    0x14(%edi),%ecx
4b021f:	e8 1c e3 01 00       	call   0x4ce540
4b0224:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
4b022b:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
4b0232:	c7 45 ec 0f 00 00 00 	movl   $0xf,-0x14(%ebp)
4b0239:	c6 45 d8 00          	movb   $0x0,-0x28(%ebp)
4b023d:	8b 4f 04             	mov    0x4(%edi),%ecx
4b0240:	c6 45 fc 06          	movb   $0x6,-0x4(%ebp)
4b0244:	85 c9                	test   %ecx,%ecx
4b0246:	74 15                	je     0x4b025d
4b0248:	8b 01                	mov    (%ecx),%eax
4b024a:	8d 95 78 ff ff ff    	lea    -0x88(%ebp),%edx
4b0250:	52                   	push   %edx
4b0251:	8d 55 a8             	lea    -0x58(%ebp),%edx
4b0254:	52                   	push   %edx
4b0255:	8b 40 0c             	mov    0xc(%eax),%eax
4b0258:	56                   	push   %esi
4b0259:	ff d0                	call   *%eax
4b025b:	eb 14                	jmp    0x4b0271
4b025d:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
4b0263:	50                   	push   %eax
4b0264:	8d 45 a8             	lea    -0x58(%ebp),%eax
4b0267:	50                   	push   %eax
4b0268:	56                   	push   %esi
4b0269:	e8 02 3f 00 00       	call   0x4b4170
4b026e:	83 c4 0c             	add    $0xc,%esp
4b0271:	85 c0                	test   %eax,%eax
4b0273:	0f 85 ef 00 00 00    	jne    0x4b0368
4b0279:	8b 4d b8             	mov    -0x48(%ebp),%ecx
4b027c:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
4b0281:	2b c1                	sub    %ecx,%eax
4b0283:	83 f8 15             	cmp    $0x15,%eax
4b0286:	0f 82 e7 11 00 00    	jb     0x4b1473
4b028c:	83 7d bc 10          	cmpl   $0x10,-0x44(%ebp)
4b0290:	8d 45 a8             	lea    -0x58(%ebp),%eax
4b0293:	51                   	push   %ecx
4b0294:	0f 43 45 a8          	cmovae -0x58(%ebp),%eax
4b0298:	8d 4d c0             	lea    -0x40(%ebp),%ecx
4b029b:	50                   	push   %eax
4b029c:	6a 15                	push   $0x15
4b029e:	68 00 c3 60 00       	push   $0x60c300
4b02a3:	8d 45 a8             	lea    -0x58(%ebp),%eax
4b02a6:	50                   	push   %eax
4b02a7:	ff b5 1c ff ff ff    	push   -0xe4(%ebp)
4b02ad:	e8 ce b8 fc ff       	call   0x47bb80
4b02b2:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
4b02b8:	c6 45 fc 07          	movb   $0x7,-0x4(%ebp)
4b02bc:	50                   	push   %eax
4b02bd:	8d 45 c0             	lea    -0x40(%ebp),%eax
4b02c0:	50                   	push   %eax
4b02c1:	8d 85 48 ff ff ff    	lea    -0xb8(%ebp),%eax
4b02c7:	50                   	push   %eax
4b02c8:	e8 33 5c fc ff       	call   0x475f00
4b02cd:	68 dc c2 60 00       	push   $0x60c2dc
4b02d2:	50                   	push   %eax
4b02d3:	8d 85 60 ff ff ff    	lea    -0xa0(%ebp),%eax
4b02d9:	c6 45 fc 08          	movb   $0x8,-0x4(%ebp)
4b02dd:	50                   	push   %eax
4b02de:	e8 7d 5c fc ff       	call   0x475f60
4b02e3:	83 c4 18             	add    $0x18,%esp
4b02e6:	50                   	push   %eax
4b02e7:	ff 77 34             	push   0x34(%edi)
4b02ea:	8b cf                	mov    %edi,%ecx
4b02ec:	c6 45 fc 09          	movb   $0x9,-0x4(%ebp)
4b02f0:	ff 77 30             	push   0x30(%edi)
4b02f3:	e8 48 6d 00 00       	call   0x4b7040
4b02f8:	8d 8d 60 ff ff ff    	lea    -0xa0(%ebp),%ecx
4b02fe:	e8 9d 67 fa ff       	call   0x456aa0
4b0303:	8d 8d 48 ff ff ff    	lea    -0xb8(%ebp),%ecx
4b0309:	e8 92 67 fa ff       	call   0x456aa0
4b030e:	8d 4d c0             	lea    -0x40(%ebp),%ecx
4b0311:	e8 8a 67 fa ff       	call   0x456aa0
4b0316:	c6 85 3b ff ff ff 00 	movb   $0x0,-0xc5(%ebp)
4b031d:	8b 55 ec             	mov    -0x14(%ebp),%edx
4b0320:	83 fa 10             	cmp    $0x10,%edx
4b0323:	72 2c                	jb     0x4b0351
4b0325:	8b 4d d8             	mov    -0x28(%ebp),%ecx
4b0328:	42                   	inc    %edx
4b0329:	8b c1                	mov    %ecx,%eax
4b032b:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
4b0331:	72 14                	jb     0x4b0347
4b0333:	8b 49 fc             	mov    -0x4(%ecx),%ecx
4b0336:	83 c2 23             	add    $0x23,%edx
4b0339:	2b c1                	sub    %ecx,%eax
4b033b:	83 c0 fc             	add    $0xfffffffc,%eax
4b033e:	83 f8 1f             	cmp    $0x1f,%eax
4b0341:	0f 87 3b 11 00 00    	ja     0x4b1482
4b0347:	52                   	push   %edx
4b0348:	51                   	push   %ecx
4b0349:	e8 07 0f 12 00       	call   0x5d1255
4b034e:	83 c4 08             	add    $0x8,%esp
4b0351:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
4b0358:	c7 45 ec 0f 00 00 00 	movl   $0xf,-0x14(%ebp)
4b035f:	c6 45 d8 00          	movb   $0x0,-0x28(%ebp)
4b0363:	e9 ad 01 00 00       	jmp    0x4b0515
4b0368:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4b036b:	51                   	push   %ecx
4b036c:	50                   	push   %eax
4b036d:	8b cf                	mov    %edi,%ecx
4b036f:	e8 0c f8 ff ff       	call   0x4afb80
4b0374:	84 c0                	test   %al,%al
4b0376:	74 9e                	je     0x4b0316
4b0378:	83 bf a0 00 00 00 01 	cmpl   $0x1,0xa0(%edi)
4b037f:	0f 85 fa 00 00 00    	jne    0x4b047f
4b0385:	8b 85 0c ff ff ff    	mov    -0xf4(%ebp),%eax
4b038b:	83 78 20 03          	cmpl   $0x3,0x20(%eax)
4b038f:	74 11                	je     0x4b03a2
4b0391:	8b 8d 30 ff ff ff    	mov    -0xd0(%ebp),%ecx
4b0397:	50                   	push   %eax
4b0398:	56                   	push   %esi
4b0399:	e8 22 5a fb ff       	call   0x465dc0
4b039e:	84 c0                	test   %al,%al
4b03a0:	75 25                	jne    0x4b03c7
4b03a2:	8b 85 08 ff ff ff    	mov    -0xf8(%ebp),%eax
4b03a8:	83 78 20 03          	cmpl   $0x3,0x20(%eax)
4b03ac:	0f 84 cd 00 00 00    	je     0x4b047f
4b03b2:	8b 8d 30 ff ff ff    	mov    -0xd0(%ebp),%ecx
4b03b8:	50                   	push   %eax
4b03b9:	56                   	push   %esi
4b03ba:	e8 01 5a fb ff       	call   0x465dc0
4b03bf:	84 c0                	test   %al,%al
4b03c1:	0f 84 b8 00 00 00    	je     0x4b047f
4b03c7:	c7 45 c0 00 00 00 00 	movl   $0x0,-0x40(%ebp)
4b03ce:	8d 4d c0             	lea    -0x40(%ebp),%ecx
4b03d1:	6a 30                	push   $0x30
4b03d3:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
4b03da:	c7 45 d4 0f 00 00 00 	movl   $0xf,-0x2c(%ebp)
4b03e1:	c6 45 c0 00          	movb   $0x0,-0x40(%ebp)
4b03e5:	e8 36 8a fa ff       	call   0x458e20
4b03ea:	0f 10 05 18 c3 60 00 	movups 0x60c318,%xmm0
4b03f1:	8b c8                	mov    %eax,%ecx
4b03f3:	c7 45 d0 2a 00 00 00 	movl   $0x2a,-0x30(%ebp)
4b03fa:	c7 45 d4 2f 00 00 00 	movl   $0x2f,-0x2c(%ebp)
4b0401:	0f 11 01             	movups %xmm0,(%ecx)
4b0404:	0f 10 05 28 c3 60 00 	movups 0x60c328,%xmm0
4b040b:	0f 11 41 10          	movups %xmm0,0x10(%ecx)
4b040f:	f3 0f 7e 05 38 c3 60 	movq   0x60c338,%xmm0
4b0416:	00
4b0417:	66 0f d6 41 20       	movq   %xmm0,0x20(%ecx)
4b041c:	66 a1 40 c3 60 00    	mov    0x60c340,%ax
4b0422:	66 89 41 28          	mov    %ax,0x28(%ecx)
4b0426:	c6 41 2a 00          	movb   $0x0,0x2a(%ecx)
4b042a:	89 4d c0             	mov    %ecx,-0x40(%ebp)
4b042d:	8d 45 c0             	lea    -0x40(%ebp),%eax
4b0430:	c6 45 fc 0a          	movb   $0xa,-0x4(%ebp)
4b0434:	50                   	push   %eax
4b0435:	ff 77 34             	push   0x34(%edi)
4b0438:	8b cf                	mov    %edi,%ecx
4b043a:	ff 77 30             	push   0x30(%edi)
4b043d:	e8 fe 6b 00 00       	call   0x4b7040
4b0442:	8b 55 d4             	mov    -0x2c(%ebp),%edx
4b0445:	83 fa 10             	cmp    $0x10,%edx
4b0448:	0f 82 c8 fe ff ff    	jb     0x4b0316
4b044e:	8b 4d c0             	mov    -0x40(%ebp),%ecx
4b0451:	42                   	inc    %edx
4b0452:	8b c1                	mov    %ecx,%eax
4b0454:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
4b045a:	72 14                	jb     0x4b0470
4b045c:	8b 49 fc             	mov    -0x4(%ecx),%ecx
4b045f:	83 c2 23             	add    $0x23,%edx
4b0462:	2b c1                	sub    %ecx,%eax
4b0464:	83 c0 fc             	add    $0xfffffffc,%eax
4b0467:	83 f8 1f             	cmp    $0x1f,%eax
4b046a:	0f 87 08 10 00 00    	ja     0x4b1478
4b0470:	52                   	push   %edx
4b0471:	51                   	push   %ecx
4b0472:	e8 de 0d 12 00       	call   0x5d1255
4b0477:	83 c4 08             	add    $0x8,%esp
4b047a:	e9 97 fe ff ff       	jmp    0x4b0316
4b047f:	83 ec 18             	sub    $0x18,%esp
4b0482:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
4b0487:	8b d4                	mov    %esp,%edx
4b0489:	89 95 1c ff ff ff    	mov    %edx,-0xe4(%ebp)
4b048f:	8b 7d b8             	mov    -0x48(%ebp),%edi
4b0492:	2b c7                	sub    %edi,%eax
4b0494:	3b 45 88             	cmp    -0x78(%ebp),%eax
4b0497:	0f 82 e0 0f 00 00    	jb     0x4b147d
4b049d:	83 7d bc 10          	cmpl   $0x10,-0x44(%ebp)
4b04a1:	8d 4d a8             	lea    -0x58(%ebp),%ecx
4b04a4:	ff 75 88             	push   -0x78(%ebp)
4b04a7:	0f 43 4d a8          	cmovae -0x58(%ebp),%ecx
4b04ab:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
4b04b1:	83 7d 8c 10          	cmpl   $0x10,-0x74(%ebp)
4b04b5:	0f 43 85 78 ff ff ff 	cmovae -0x88(%ebp),%eax
4b04bc:	50                   	push   %eax
4b04bd:	57                   	push   %edi
4b04be:	51                   	push   %ecx
4b04bf:	8d 45 a8             	lea    -0x58(%ebp),%eax
4b04c2:	8b ca                	mov    %edx,%ecx
4b04c4:	50                   	push   %eax
4b04c5:	ff b5 1c ff ff ff    	push   -0xe4(%ebp)
4b04cb:	e8 b0 b6 fc ff       	call   0x47bb80
4b04d0:	ff b5 0c ff ff ff    	push   -0xf4(%ebp)
4b04d6:	8b 8d 30 ff ff ff    	mov    -0xd0(%ebp),%ecx
4b04dc:	56                   	push   %esi
4b04dd:	e8 0e 72 fb ff       	call   0x4676f0
4b04e2:	83 ec 18             	sub    $0x18,%esp
4b04e5:	8d 45 d8             	lea    -0x28(%ebp),%eax
4b04e8:	8b cc                	mov    %esp,%ecx
4b04ea:	50                   	push   %eax
4b04eb:	e8 30 62 fa ff       	call   0x456720
4b04f0:	ff b5 08 ff ff ff    	push   -0xf8(%ebp)
4b04f6:	8b 8d 30 ff ff ff    	mov    -0xd0(%ebp),%ecx
4b04fc:	56                   	push   %esi
4b04fd:	e8 ee 71 fb ff       	call   0x4676f0
4b0502:	c6 85 3b ff ff ff 01 	movb   $0x1,-0xc5(%ebp)
4b0509:	e9 0f fe ff ff       	jmp    0x4b031d
4b050e:	c6 85 3b ff ff ff 00 	movb   $0x0,-0xc5(%ebp)
4b0515:	8b 55 bc             	mov    -0x44(%ebp),%edx
4b0518:	83 fa 10             	cmp    $0x10,%edx
4b051b:	72 2c                	jb     0x4b0549
4b051d:	8b 4d a8             	mov    -0x58(%ebp),%ecx
4b0520:	42                   	inc    %edx
4b0521:	8b c1                	mov    %ecx,%eax
4b0523:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
4b0529:	72 14                	jb     0x4b053f
4b052b:	8b 49 fc             	mov    -0x4(%ecx),%ecx
4b052e:	83 c2 23             	add    $0x23,%edx
4b0531:	2b c1                	sub    %ecx,%eax
4b0533:	83 c0 fc             	add    $0xfffffffc,%eax
4b0536:	83 f8 1f             	cmp    $0x1f,%eax
4b0539:	0f 87 43 0f 00 00    	ja     0x4b1482
4b053f:	52                   	push   %edx
4b0540:	51                   	push   %ecx
4b0541:	e8 0f 0d 12 00       	call   0x5d1255
4b0546:	83 c4 08             	add    $0x8,%esp
4b0549:	8b 55 8c             	mov    -0x74(%ebp),%edx
4b054c:	c7 45 b8 00 00 00 00 	movl   $0x0,-0x48(%ebp)
4b0553:	c7 45 bc 0f 00 00 00 	movl   $0xf,-0x44(%ebp)
4b055a:	c6 45 a8 00          	movb   $0x0,-0x58(%ebp)
4b055e:	83 fa 10             	cmp    $0x10,%edx
4b0561:	0f 82 5b 02 00 00    	jb     0x4b07c2
4b0567:	8b 8d 78 ff ff ff    	mov    -0x88(%ebp),%ecx
4b056d:	42                   	inc    %edx
4b056e:	8b c1                	mov    %ecx,%eax
4b0570:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
4b0576:	72 14                	jb     0x4b058c
4b0578:	8b 49 fc             	mov    -0x4(%ecx),%ecx
4b057b:	83 c2 23             	add    $0x23,%edx
4b057e:	2b c1                	sub    %ecx,%eax
4b0580:	83 c0 fc             	add    $0xfffffffc,%eax
4b0583:	83 f8 1f             	cmp    $0x1f,%eax
4b0586:	0f 87 f6 0e 00 00    	ja     0x4b1482
4b058c:	52                   	push   %edx
4b058d:	51                   	push   %ecx
4b058e:	e8 c2 0c 12 00       	call   0x5d1255
4b0593:	83 c4 08             	add    $0x8,%esp
4b0596:	e9 27 02 00 00       	jmp    0x4b07c2
4b059b:	6a 01                	push   $0x1
4b059d:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
4b05a4:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4b05a7:	68 cc 76 60 00       	push   $0x6076cc
4b05ac:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
4b05b3:	c7 45 ec 0f 00 00 00 	movl   $0xf,-0x14(%ebp)
4b05ba:	c6 45 d8 00          	movb   $0x0,-0x28(%ebp)
4b05be:	e8 5d 70 f9 ff       	call   0x447620
4b05c3:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
4b05c7:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4b05ca:	c6 45 fc 0b          	movb   $0xb,-0x4(%ebp)
4b05ce:	8d 57 18             	lea    0x18(%edi),%edx
4b05d1:	0f 43 4d d8          	cmovae -0x28(%ebp),%ecx
4b05d5:	83 7f 2c 10          	cmpl   $0x10,0x2c(%edi)
4b05d9:	72 03                	jb     0x4b05de
4b05db:	8b 57 18             	mov    0x18(%edi),%edx
4b05de:	ff 75 e8             	push   -0x18(%ebp)
4b05e1:	51                   	push   %ecx
4b05e2:	ff 77 28             	push   0x28(%edi)
4b05e5:	52                   	push   %edx
4b05e6:	e8 45 9f fc ff       	call   0x47a530
4b05eb:	83 c4 10             	add    $0x10,%esp
4b05ee:	84 c0                	test   %al,%al
4b05f0:	74 11                	je     0x4b0603
4b05f2:	8d 4f 14             	lea    0x14(%edi),%ecx