52a9c3:	77 01                	ja     0x52a9c6
52a9c5:	46                   	inc    %esi
52a9c6:	8b 9c b0 54 0b 00 00 	mov    0xb54(%eax,%esi,4),%ebx
52a9cd:	66 8b 1c 9a          	mov    (%edx,%ebx,4),%bx
52a9d1:	66 3b 19             	cmp    (%ecx),%bx
52a9d4:	77 41                	ja     0x52aa17
52a9d6:	8b bc b0 54 0b 00 00 	mov    0xb54(%eax,%esi,4),%edi
52a9dd:	66 8b 1c ba          	mov    (%edx,%edi,4),%bx
52a9e1:	66 3b 19             	cmp    (%ecx),%bx
52a9e4:	75 0f                	jne    0x52a9f5
52a9e6:	8b 5c 24 08          	mov    0x8(%esp),%ebx
52a9ea:	8a 1b                	mov    (%ebx),%bl
52a9ec:	3a 9c 38 50 14 00 00 	cmp    0x1450(%eax,%edi,1),%bl
52a9f3:	76 22                	jbe    0x52aa17
52a9f5:	8b 1c 24             	mov    (%esp),%ebx
52a9f8:	8b bc b0 54 0b 00 00 	mov    0xb54(%eax,%esi,4),%edi
52a9ff:	89 bc 98 54 0b 00 00 	mov    %edi,0xb54(%eax,%ebx,4)
52aa06:	89 34 24             	mov    %esi,(%esp)
52aa09:	03 f6                	add    %esi,%esi
52aa0b:	3b b0 48 14 00 00    	cmp    0x1448(%eax),%esi
52aa11:	0f 8e 58 ff ff ff    	jle    0x52a96f
52aa17:	8b 14 24             	mov    (%esp),%edx
52aa1a:	8b 4c 24 04          	mov    0x4(%esp),%ecx
52aa1e:	89 8c 90 54 0b 00 00 	mov    %ecx,0xb54(%eax,%edx,4)
52aa25:	83 c4 0c             	add    $0xc,%esp
52aa28:	5f                   	pop    %edi
52aa29:	5e                   	pop    %esi
52aa2a:	5b                   	pop    %ebx
52aa2b:	c3                   	ret
52aa2c:	53                   	push   %ebx
52aa2d:	56                   	push   %esi
52aa2e:	57                   	push   %edi
52aa2f:	55                   	push   %ebp
52aa30:	83 c4 d8             	add    $0xffffffd8,%esp
52aa33:	89 04 24             	mov    %eax,(%esp)
52aa36:	8b 42 04             	mov    0x4(%edx),%eax
52aa39:	8b 32                	mov    (%edx),%esi
52aa3b:	89 44 24 04          	mov    %eax,0x4(%esp)
52aa3f:	8b 42 08             	mov    0x8(%edx),%eax
52aa42:	33 d2                	xor    %edx,%edx
52aa44:	8b 08                	mov    (%eax),%ecx
52aa46:	89 4c 24 08          	mov    %ecx,0x8(%esp)
52aa4a:	8b 48 04             	mov    0x4(%eax),%ecx
52aa4d:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
52aa51:	8b 48 08             	mov    0x8(%eax),%ecx
52aa54:	89 4c 24 10          	mov    %ecx,0x10(%esp)
52aa58:	8b 40 10             	mov    0x10(%eax),%eax
52aa5b:	89 54 24 20          	mov    %edx,0x20(%esp)
52aa5f:	33 d2                	xor    %edx,%edx
52aa61:	8b 0c 24             	mov    (%esp),%ecx
52aa64:	81 c1 34 0b 00 00    	add    $0xb34,%ecx
52aa6a:	66 c7 01 00 00       	movw   $0x0,(%ecx)
52aa6f:	42                   	inc    %edx
52aa70:	83 c1 02             	add    $0x2,%ecx
52aa73:	83 fa 0f             	cmp    $0xf,%edx
52aa76:	7e f2                	jle    0x52aa6a
52aa78:	8b 14 24             	mov    (%esp),%edx
52aa7b:	8b 0c 24             	mov    (%esp),%ecx
52aa7e:	8b 92 4c 14 00 00    	mov    0x144c(%edx),%edx
52aa84:	8b 94 91 54 0b 00 00 	mov    0xb54(%ecx,%edx,4),%edx
52aa8b:	66 c7 44 96 02 00 00 	movw   $0x0,0x2(%esi,%edx,4)
52aa92:	8b 0c 24             	mov    (%esp),%ecx
52aa95:	8b 91 4c 14 00 00    	mov    0x144c(%ecx),%edx
52aa9b:	42                   	inc    %edx
52aa9c:	89 54 24 14          	mov    %edx,0x14(%esp)
52aaa0:	81 7c 24 14 3d 02 00 	cmpl   $0x23d,0x14(%esp)
52aaa7:	00
52aaa8:	8b 54 24 14          	mov    0x14(%esp),%edx
52aaac:	8b 0c 24             	mov    (%esp),%ecx
52aaaf:	8d 8c 91 54 0b 00 00 	lea    0xb54(%ecx,%edx,4),%ecx
52aab6:	0f 8d a3 00 00 00    	jge    0x52ab5f
52aabc:	8b 19                	mov    (%ecx),%ebx
52aabe:	0f b7 54 9e 02       	movzwl 0x2(%esi,%ebx,4),%edx
52aac3:	0f b7 54 96 02       	movzwl 0x2(%esi,%edx,4),%edx
52aac8:	42                   	inc    %edx
52aac9:	3b c2                	cmp    %edx,%eax
52aacb:	7d 06                	jge    0x52aad3
52aacd:	8b d0                	mov    %eax,%edx
52aacf:	ff 44 24 20          	incl   0x20(%esp)
52aad3:	66 89 54 9e 02       	mov    %dx,0x2(%esi,%ebx,4)
52aad8:	3b 5c 24 04          	cmp    0x4(%esp),%ebx
52aadc:	7f 6c                	jg     0x52ab4a
52aade:	8b 3c 24             	mov    (%esp),%edi
52aae1:	66 ff 84 57 34 0b 00 	incw   0xb34(%edi,%edx,2)
52aae8:	00
52aae9:	33 ff                	xor    %edi,%edi
52aaeb:	89 7c 24 18          	mov    %edi,0x18(%esp)
52aaef:	3b 5c 24 10          	cmp    0x10(%esp),%ebx
52aaf3:	7c 12                	jl     0x52ab07
52aaf5:	8b fb                	mov    %ebx,%edi
52aaf7:	2b 7c 24 10          	sub    0x10(%esp),%edi
52aafb:	8b 6c 24 0c          	mov    0xc(%esp),%ebp
52aaff:	8b 7c bd 00          	mov    0x0(%ebp,%edi,4),%edi
52ab03:	89 7c 24 18          	mov    %edi,0x18(%esp)
52ab07:	66 8b 3c 9e          	mov    (%esi,%ebx,4),%di
52ab0b:	66 89 7c 24 1c       	mov    %di,0x1c(%esp)
52ab10:	0f b7 7c 24 1c       	movzwl 0x1c(%esp),%edi
52ab15:	03 54 24 18          	add    0x18(%esp),%edx
52ab19:	0f af fa             	imul   %edx,%edi
52ab1c:	8b 14 24             	mov    (%esp),%edx
52ab1f:	01 ba a0 16 00 00    	add    %edi,0x16a0(%edx)
52ab25:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
52ab2a:	74 1e                	je     0x52ab4a
52ab2c:	8b 54 24 08          	mov    0x8(%esp),%edx
52ab30:	0f b7 54 9a 02       	movzwl 0x2(%edx,%ebx,4),%edx
52ab35:	03 54 24 18          	add    0x18(%esp),%edx
52ab39:	0f b7 5c 24 1c       	movzwl 0x1c(%esp),%ebx
52ab3e:	0f af d3             	imul   %ebx,%edx
52ab41:	8b 1c 24             	mov    (%esp),%ebx
52ab44:	01 93 a4 16 00 00    	add    %edx,0x16a4(%ebx)
52ab4a:	ff 44 24 14          	incl   0x14(%esp)
52ab4e:	83 c1 04             	add    $0x4,%ecx
52ab51:	81 7c 24 14 3d 02 00 	cmpl   $0x23d,0x14(%esp)
52ab58:	00
52ab59:	0f 8c 5d ff ff ff    	jl     0x52aabc
52ab5f:	83 7c 24 20 00       	cmpl   $0x0,0x20(%esp)
52ab64:	0f 84 b9 00 00 00    	je     0x52ac23
52ab6a:	8d 50 ff             	lea    -0x1(%eax),%edx
52ab6d:	8b 0c 24             	mov    (%esp),%ecx
52ab70:	8d 8c 51 34 0b 00 00 	lea    0xb34(%ecx,%edx,2),%ecx
52ab77:	eb 04                	jmp    0x52ab7d
52ab79:	4a                   	dec    %edx
52ab7a:	83 c1 fe             	add    $0xfffffffe,%ecx
52ab7d:	66 83 39 00          	cmpw   $0x0,(%ecx)
52ab81:	74 f6                	je     0x52ab79
52ab83:	8b 0c 24             	mov    (%esp),%ecx
52ab86:	66 ff 8c 51 34 0b 00 	decw   0xb34(%ecx,%edx,2)
52ab8d:	00
52ab8e:	8b 0c 24             	mov    (%esp),%ecx
52ab91:	66 83 84 51 36 0b 00 	addw   $0x2,0xb36(%ecx,%edx,2)
52ab98:	00 02
52ab9a:	8b 14 24             	mov    (%esp),%edx
52ab9d:	66 ff 8c 42 34 0b 00 	decw   0xb34(%edx,%eax,2)
52aba4:	00
52aba5:	83 6c 24 20 02       	subl   $0x2,0x20(%esp)
52abaa:	83 7c 24 20 00       	cmpl   $0x0,0x20(%esp)
52abaf:	7f b9                	jg     0x52ab6a
52abb1:	8b d0                	mov    %eax,%edx
52abb3:	8b 04 24             	mov    (%esp),%eax
52abb6:	85 d2                	test   %edx,%edx
52abb8:	8d 8c 50 34 0b 00 00 	lea    0xb34(%eax,%edx,2),%ecx
52abbf:	89 4c 24 24          	mov    %ecx,0x24(%esp)
52abc3:	74 5e                	je     0x52ac23
52abc5:	8b 44 24 24          	mov    0x24(%esp),%eax
52abc9:	0f b7 18             	movzwl (%eax),%ebx
52abcc:	8b 04 24             	mov    (%esp),%eax
52abcf:	8b 4c 24 14          	mov    0x14(%esp),%ecx
52abd3:	8d 84 88 54 0b 00 00 	lea    0xb54(%eax,%ecx,4),%eax
52abda:	85 db                	test   %ebx,%ebx
52abdc:	74 3b                	je     0x52ac19
52abde:	ff 4c 24 14          	decl   0x14(%esp)
52abe2:	83 c0 fc             	add    $0xfffffffc,%eax
52abe5:	8b 08                	mov    (%eax),%ecx
52abe7:	3b 4c 24 04          	cmp    0x4(%esp),%ecx
52abeb:	7f df                	jg     0x52abcc
52abed:	0f b7 7c 8e 02       	movzwl 0x2(%esi,%ecx,4),%edi
52abf2:	3b fa                	cmp    %edx,%edi
52abf4:	74 1e                	je     0x52ac14
52abf6:	0f b7 7c 8e 02       	movzwl 0x2(%esi,%ecx,4),%edi
52abfb:	8b ea                	mov    %edx,%ebp
52abfd:	2b ef                	sub    %edi,%ebp
52abff:	0f b7 3c 8e          	movzwl (%esi,%ecx,4),%edi
52ac03:	0f af ef             	imul   %edi,%ebp
52ac06:	8b 3c 24             	mov    (%esp),%edi
52ac09:	01 af a0 16 00 00    	add    %ebp,0x16a0(%edi)
52ac0f:	66 89 54 8e 02       	mov    %dx,0x2(%esi,%ecx,4)
52ac14:	4b                   	dec    %ebx
52ac15:	85 db                	test   %ebx,%ebx
52ac17:	75 c5                	jne    0x52abde
52ac19:	4a                   	dec    %edx
52ac1a:	83 44 24 24 fe       	addl   $0xfffffffe,0x24(%esp)
52ac1f:	85 d2                	test   %edx,%edx
52ac21:	75 a2                	jne    0x52abc5
52ac23:	83 c4 28             	add    $0x28,%esp
52ac26:	5d                   	pop    %ebp
52ac27:	5f                   	pop    %edi
52ac28:	5e                   	pop    %esi
52ac29:	5b                   	pop    %ebx
52ac2a:	c3                   	ret
52ac2b:	90                   	nop
52ac2c:	53                   	push   %ebx
52ac2d:	56                   	push   %esi
52ac2e:	57                   	push   %edi
52ac2f:	83 c4 d8             	add    $0xffffffd8,%esp
52ac32:	89 4c 24 04          	mov    %ecx,0x4(%esp)
52ac36:	89 14 24             	mov    %edx,(%esp)
52ac39:	33 f6                	xor    %esi,%esi
52ac3b:	b9 01 00 00 00       	mov    $0x1,%ecx
52ac40:	8d 5c 24 0a          	lea    0xa(%esp),%ebx
52ac44:	8b 54 24 04          	mov    0x4(%esp),%edx
52ac48:	66 8b 3a             	mov    (%edx),%di
52ac4b:	83 c2 02             	add    $0x2,%edx
52ac4e:	66 03 fe             	add    %si,%di
52ac51:	41                   	inc    %ecx
52ac52:	03 ff                	add    %edi,%edi
52ac54:	66 89 3b             	mov    %di,(%ebx)
52ac57:	83 c3 02             	add    $0x2,%ebx
52ac5a:	83 f9 0f             	cmp    $0xf,%ecx
52ac5d:	8b f7                	mov    %edi,%esi
52ac5f:	7e e7                	jle    0x52ac48
52ac61:	33 ff                	xor    %edi,%edi
52ac63:	8d 58 02             	lea    0x2(%eax),%ebx
52ac66:	3b 3c 24             	cmp    (%esp),%edi
52ac69:	7f 28                	jg     0x52ac93
52ac6b:	0f b7 33             	movzwl (%ebx),%esi
52ac6e:	85 f6                	test   %esi,%esi
52ac70:	74 18                	je     0x52ac8a
52ac72:	66 8b 44 74 08       	mov    0x8(%esp,%esi,2),%ax
52ac77:	66 ff 44 74 08       	incw   0x8(%esp,%esi,2)
52ac7c:	0f b7 c0             	movzwl %ax,%eax
52ac7f:	8b d6                	mov    %esi,%edx
52ac81:	e8 92 18 00 00       	call   0x52c518
52ac86:	66 89 43 fe          	mov    %ax,-0x2(%ebx)
52ac8a:	47                   	inc    %edi
52ac8b:	83 c3 04             	add    $0x4,%ebx
52ac8e:	3b 3c 24             	cmp    (%esp),%edi
52ac91:	7e d8                	jle    0x52ac6b
52ac93:	83 c4 28             	add    $0x28,%esp
52ac96:	5f                   	pop    %edi
52ac97:	5e                   	pop    %esi
52ac98:	5b                   	pop    %ebx
52ac99:	c3                   	ret
52ac9a:	90                   	nop
52ac9b:	90                   	nop
52ac9c:	53                   	push   %ebx
52ac9d:	56                   	push   %esi
52ac9e:	57                   	push   %edi
52ac9f:	55                   	push   %ebp
52aca0:	83 c4 f0             	add    $0xfffffff0,%esp
52aca3:	8b d8                	mov    %eax,%ebx
52aca5:	33 f6                	xor    %esi,%esi
52aca7:	89 14 24             	mov    %edx,(%esp)
52acaa:	8b 04 24             	mov    (%esp),%eax
52acad:	8b 28                	mov    (%eax),%ebp
52acaf:	8b 04 24             	mov    (%esp),%eax
52acb2:	8b 40 08             	mov    0x8(%eax),%eax
52acb5:	8b 10                	mov    (%eax),%edx
52acb7:	89 54 24 04          	mov    %edx,0x4(%esp)
52acbb:	8d 93 50 14 00 00    	lea    0x1450(%ebx),%edx
52acc1:	8b 48 0c             	mov    0xc(%eax),%ecx
52acc4:	33 c0                	xor    %eax,%eax
52acc6:	89 4c 24 08          	mov    %ecx,0x8(%esp)
52acca:	c7 44 24 0c ff ff ff 	movl   $0xffffffff,0xc(%esp)
52acd1:	ff
52acd2:	89 83 48 14 00 00    	mov    %eax,0x1448(%ebx)
52acd8:	8b c5                	mov    %ebp,%eax
52acda:	c7 83 4c 14 00 00 3d 	movl   $0x23d,0x144c(%ebx)
52ace1:	02 00 00
52ace4:	3b 74 24 08          	cmp    0x8(%esp),%esi
52ace8:	0f 8d 88 00 00 00    	jge    0x52ad76
52acee:	66 83 38 00          	cmpw   $0x0,(%eax)
52acf2:	74 1c                	je     0x52ad10
52acf4:	89 74 24 0c          	mov    %esi,0xc(%esp)
52acf8:	ff 83 48 14 00 00    	incl   0x1448(%ebx)
52acfe:	8b 8b 48 14 00 00    	mov    0x1448(%ebx),%ecx
52ad04:	89 b4 8b 54 0b 00 00 	mov    %esi,0xb54(%ebx,%ecx,4)
52ad0b:	c6 02 00             	movb   $0x0,(%edx)
52ad0e:	eb 06                	jmp    0x52ad16
52ad10:	66 c7 40 02 00 00    	movw   $0x0,0x2(%eax)
52ad16:	46                   	inc    %esi
52ad17:	42                   	inc    %edx
52ad18:	83 c0 04             	add    $0x4,%eax
52ad1b:	3b 74 24 08          	cmp    0x8(%esp),%esi
52ad1f:	7c cd                	jl     0x52acee
52ad21:	eb 53                	jmp    0x52ad76
52ad23:	83 7c 24 0c 02       	cmpl   $0x2,0xc(%esp)
52ad28:	7d 0a                	jge    0x52ad34
52ad2a:	ff 44 24 0c          	incl   0xc(%esp)
52ad2e:	8b 44 24 0c          	mov    0xc(%esp),%eax
52ad32:	eb 02                	jmp    0x52ad36
52ad34:	33 c0                	xor    %eax,%eax
52ad36:	ff 83 48 14 00 00    	incl   0x1448(%ebx)
52ad3c:	8b f8                	mov    %eax,%edi
52ad3e:	8b 93 48 14 00 00    	mov    0x1448(%ebx),%edx
52ad44:	89 84 93 54 0b 00 00 	mov    %eax,0xb54(%ebx,%edx,4)
52ad4b:	66 c7 44 bd 00 01 00 	movw   $0x1,0x0(%ebp,%edi,4)
52ad52:	c6 84 3b 50 14 00 00 	movb   $0x0,0x1450(%ebx,%edi,1)
52ad59:	00
52ad5a:	ff 8b a0 16 00 00    	decl   0x16a0(%ebx)
52ad60:	83 7c 24 04 00       	cmpl   $0x0,0x4(%esp)
52ad65:	74 0f                	je     0x52ad76
52ad67:	8b 44 24 04          	mov    0x4(%esp),%eax
52ad6b:	0f b7 54 b8 02       	movzwl 0x2(%eax,%edi,4),%edx
52ad70:	29 93 a4 16 00 00    	sub    %edx,0x16a4(%ebx)
52ad76:	83 bb 48 14 00 00 02 	cmpl   $0x2,0x1448(%ebx)
52ad7d:	7c a4                	jl     0x52ad23
52ad7f:	8b 0c 24             	mov    (%esp),%ecx
52ad82:	8b 44 24 0c          	mov    0xc(%esp),%eax
52ad86:	89 41 04             	mov    %eax,0x4(%ecx)
52ad89:	8b b3 48 14 00 00    	mov    0x1448(%ebx),%esi
52ad8f:	d1 fe                	sar    $1,%esi
52ad91:	79 03                	jns    0x52ad96
52ad93:	83 d6 00             	adc    $0x0,%esi
52ad96:	83 fe 01             	cmp    $0x1,%esi
52ad99:	7c 11                	jl     0x52adac
52ad9b:	8b ce                	mov    %esi,%ecx
52ad9d:	8b d5                	mov    %ebp,%edx
52ad9f:	8b c3                	mov    %ebx,%eax
52ada1:	e8 92 fb ff ff       	call   0x52a938
52ada6:	4e                   	dec    %esi
52ada7:	83 fe 01             	cmp    $0x1,%esi
52adaa:	7d ef                	jge    0x52ad9b
52adac:	8b 7c 24 08          	mov    0x8(%esp),%edi
52adb0:	8b 83 48 14 00 00    	mov    0x1448(%ebx),%eax
52adb6:	8b b3 58 0b 00 00    	mov    0xb58(%ebx),%esi
52adbc:	83 83 48 14 00 00 ff 	addl   $0xffffffff,0x1448(%ebx)
52adc3:	8b 94 83 54 0b 00 00 	mov    0xb54(%ebx,%eax,4),%edx
52adca:	8b c3                	mov    %ebx,%eax
52adcc:	89 93 58 0b 00 00    	mov    %edx,0xb58(%ebx)
52add2:	8b d5                	mov    %ebp,%edx
52add4:	b9 01 00 00 00       	mov    $0x1,%ecx
52add9:	e8 5a fb ff ff       	call   0x52a938
52adde:	8b 83 58 0b 00 00    	mov    0xb58(%ebx),%eax
52ade4:	ff 8b 4c 14 00 00    	decl   0x144c(%ebx)
52adea:	8b 93 4c 14 00 00    	mov    0x144c(%ebx),%edx
52adf0:	89 b4 93 54 0b 00 00 	mov    %esi,0xb54(%ebx,%edx,4)
52adf7:	ff 8b 4c 14 00 00    	decl   0x144c(%ebx)
52adfd:	8b 8b 4c 14 00 00    	mov    0x144c(%ebx),%ecx
52ae03:	89 84 8b 54 0b 00 00 	mov    %eax,0xb54(%ebx,%ecx,4)
52ae0a:	66 8b 54 85 00       	mov    0x0(%ebp,%eax,4),%dx
52ae0f:	66 03 54 b5 00       	add    0x0(%ebp,%esi,4),%dx
52ae14:	52                   	push   %edx
52ae15:	59                   	pop    %ecx
52ae16:	66 89 4c bd 00       	mov    %cx,0x0(%ebp,%edi,4)
52ae1b:	8a 94 03 50 14 00 00 	mov    0x1450(%ebx,%eax,1),%dl
52ae22:	3a 94 33 50 14 00 00 	cmp    0x1450(%ebx,%esi,1),%dl
52ae29:	77 09                	ja     0x52ae34
52ae2b:	8a 8c 33 50 14 00 00 	mov    0x1450(%ebx,%esi,1),%cl
52ae32:	eb 07                	jmp    0x52ae3b
52ae34:	8a 8c 03 50 14 00 00 	mov    0x1450(%ebx,%eax,1),%cl
52ae3b:	41                   	inc    %ecx
52ae3c:	8b d5                	mov    %ebp,%edx
52ae3e:	88 8c 3b 50 14 00 00 	mov    %cl,0x1450(%ebx,%edi,1)
52ae45:	b9 01 00 00 00       	mov    $0x1,%ecx
52ae4a:	66 89 7c 85 02       	mov    %di,0x2(%ebp,%eax,4)
52ae4f:	8b c3                	mov    %ebx,%eax
52ae51:	66 89 7c b5 02       	mov    %di,0x2(%ebp,%esi,4)
52ae56:	89 bb 58 0b 00 00    	mov    %edi,0xb58(%ebx)
52ae5c:	47                   	inc    %edi
52ae5d:	e8 d6 fa ff ff       	call   0x52a938
52ae62:	83 bb 48 14 00 00 02 	cmpl   $0x2,0x1448(%ebx)
52ae69:	0f 8d 41 ff ff ff    	jge    0x52adb0
52ae6f:	ff 8b 4c 14 00 00    	decl   0x144c(%ebx)
52ae75:	8b 83 4c 14 00 00    	mov    0x144c(%ebx),%eax
52ae7b:	8b 93 58 0b 00 00    	mov    0xb58(%ebx),%edx
52ae81:	89 94 83 54 0b 00 00 	mov    %edx,0xb54(%ebx,%eax,4)
52ae88:	8b c3                	mov    %ebx,%eax
52ae8a:	8b 14 24             	mov    (%esp),%edx
52ae8d:	e8 9a fb ff ff       	call   0x52aa2c
52ae92:	8d 8b 34 0b 00 00    	lea    0xb34(%ebx),%ecx