40ca58:	6a 00                	push   $0x0
40ca5a:	8d 45 98             	lea    -0x68(%ebp),%eax
40ca5d:	8b ce                	mov    %esi,%ecx
40ca5f:	50                   	push   %eax
40ca60:	e8 e8 fc ff ff       	call   0x40c74d
40ca65:	8b 8d 5c ff ff ff    	mov    -0xa4(%ebp),%ecx
40ca6b:	3b 8d 50 ff ff ff    	cmp    -0xb0(%ebp),%ecx
40ca71:	74 0e                	je     0x40ca81
40ca73:	89 8d 50 ff ff ff    	mov    %ecx,-0xb0(%ebp)
40ca79:	39 9d 70 ff ff ff    	cmp    %ebx,-0x90(%ebp)
40ca7f:	7f ba                	jg     0x40ca3b
40ca81:	8b b5 4c ff ff ff    	mov    -0xb4(%ebp),%esi
40ca87:	8b 46 04             	mov    0x4(%esi),%eax
40ca8a:	8d 7e 68             	lea    0x68(%esi),%edi
40ca8d:	8b 9d 58 ff ff ff    	mov    -0xa8(%ebp),%ebx
40ca93:	2b c1                	sub    %ecx,%eax
40ca95:	40                   	inc    %eax
40ca96:	c7 46 10 02 00 00 00 	movl   $0x2,0x10(%esi)
40ca9d:	99                   	cltd
40ca9e:	2b c2                	sub    %edx,%eax
40caa0:	0f b7 15 80 26 43 00 	movzwl 0x432680,%edx
40caa7:	d1 f8                	sar    $1,%eax
40caa9:	51                   	push   %ecx
40caaa:	89 46 14             	mov    %eax,0x14(%esi)
40caad:	8b cb                	mov    %ebx,%ecx
40caaf:	0f b7 05 3c 13 41 00 	movzwl 0x41133c,%eax
40cab6:	57                   	push   %edi
40cab7:	50                   	push   %eax
40cab8:	e8 2e 81 ff ff       	call   0x404beb
40cabd:	ff b5 48 ff ff ff    	push   -0xb8(%ebp)
40cac3:	53                   	push   %ebx
40cac4:	ff 15 ac 30 43 00    	call   *0x4330ac
40caca:	0f b7 0d 3c 13 41 00 	movzwl 0x41133c,%ecx
40cad1:	0f b7 05 80 26 43 00 	movzwl 0x432680,%eax
40cad8:	3b c1                	cmp    %ecx,%eax
40cada:	77 16                	ja     0x40caf2
40cadc:	2b c8                	sub    %eax,%ecx
40cade:	41                   	inc    %ecx
40cadf:	8b 06                	mov    (%esi),%eax
40cae1:	2b 07                	sub    (%edi),%eax
40cae3:	99                   	cltd
40cae4:	2b c2                	sub    %edx,%eax
40cae6:	d1 f8                	sar    $1,%eax
40cae8:	89 07                	mov    %eax,(%edi)
40caea:	8d 7f 04             	lea    0x4(%edi),%edi
40caed:	83 e9 01             	sub    $0x1,%ecx
40caf0:	75 ed                	jne    0x40cadf
40caf2:	53                   	push   %ebx
40caf3:	ff 35 14 19 43 00    	push   0x431914
40caf9:	ff 15 08 33 43 00    	call   *0x433308
40caff:	83 66 20 00          	andl   $0x0,0x20(%esi)
40cb03:	e8 1b 1e 00 00       	call   0x40e923
40cb08:	6a 01                	push   $0x1
40cb0a:	6a 00                	push   $0x0
40cb0c:	ff 35 14 19 43 00    	push   0x431914
40cb12:	ff 15 fc 31 43 00    	call   *0x4331fc
40cb18:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40cb1b:	5f                   	pop    %edi
40cb1c:	5e                   	pop    %esi
40cb1d:	33 cd                	xor    %ebp,%ecx
40cb1f:	5b                   	pop    %ebx
40cb20:	e8 0b 39 00 00       	call   0x410430
40cb25:	c9                   	leave
40cb26:	c2 08 00             	ret    $0x8
40cb29:	8b ff                	mov    %edi,%edi
40cb2b:	55                   	push   %ebp
40cb2c:	8b ec                	mov    %esp,%ebp
40cb2e:	83 ec 14             	sub    $0x14,%esp
40cb31:	53                   	push   %ebx
40cb32:	8b d9                	mov    %ecx,%ebx
40cb34:	56                   	push   %esi
40cb35:	57                   	push   %edi
40cb36:	6a 06                	push   $0x6
40cb38:	8b 03                	mov    (%ebx),%eax
40cb3a:	8b f2                	mov    %edx,%esi
40cb3c:	89 45 f0             	mov    %eax,-0x10(%ebp)
40cb3f:	8b 43 04             	mov    0x4(%ebx),%eax
40cb42:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40cb45:	89 45 f8             	mov    %eax,-0x8(%ebp)
40cb48:	ff 15 0c 32 43 00    	call   *0x43320c
40cb4e:	50                   	push   %eax
40cb4f:	6a 01                	push   $0x1
40cb51:	6a 00                	push   $0x0
40cb53:	ff 15 7c 30 43 00    	call   *0x43307c
40cb59:	50                   	push   %eax
40cb5a:	56                   	push   %esi
40cb5b:	ff 15 ac 30 43 00    	call   *0x4330ac
40cb61:	89 45 ec             	mov    %eax,-0x14(%ebp)
40cb64:	33 ff                	xor    %edi,%edi
40cb66:	8b 43 08             	mov    0x8(%ebx),%eax
40cb69:	40                   	inc    %eax
40cb6a:	47                   	inc    %edi
40cb6b:	6a 0b                	push   $0xb
40cb6d:	89 45 fc             	mov    %eax,-0x4(%ebp)
40cb70:	5b                   	pop    %ebx
40cb71:	6a 00                	push   $0x0
40cb73:	57                   	push   %edi
40cb74:	6a 01                	push   $0x1
40cb76:	56                   	push   %esi
40cb77:	ff 15 88 30 43 00    	call   *0x433088
40cb7d:	57                   	push   %edi
40cb7e:	ff 75 fc             	push   -0x4(%ebp)
40cb81:	56                   	push   %esi
40cb82:	ff 15 84 30 43 00    	call   *0x433084
40cb88:	03 7d f8             	add    -0x8(%ebp),%edi
40cb8b:	83 eb 01             	sub    $0x1,%ebx
40cb8e:	75 e1                	jne    0x40cb71
40cb90:	8b 45 f4             	mov    -0xc(%ebp),%eax
40cb93:	33 ff                	xor    %edi,%edi
40cb95:	8b 1d b0 10 41 00    	mov    0x4110b0,%ebx
40cb9b:	47                   	inc    %edi
40cb9c:	8b 40 0c             	mov    0xc(%eax),%eax
40cb9f:	89 45 f4             	mov    %eax,-0xc(%ebp)
40cba2:	03 df                	add    %edi,%ebx
40cba4:	74 1f                	je     0x40cbc5
40cba6:	6a 00                	push   $0x0
40cba8:	6a 01                	push   $0x1
40cbaa:	57                   	push   %edi
40cbab:	56                   	push   %esi
40cbac:	ff 15 88 30 43 00    	call   *0x433088
40cbb2:	ff 75 f4             	push   -0xc(%ebp)
40cbb5:	57                   	push   %edi
40cbb6:	56                   	push   %esi
40cbb7:	ff 15 84 30 43 00    	call   *0x433084
40cbbd:	03 7d f0             	add    -0x10(%ebp),%edi
40cbc0:	83 eb 01             	sub    $0x1,%ebx
40cbc3:	75 e1                	jne    0x40cba6
40cbc5:	ff 75 ec             	push   -0x14(%ebp)
40cbc8:	56                   	push   %esi
40cbc9:	ff 15 ac 30 43 00    	call   *0x4330ac
40cbcf:	50                   	push   %eax
40cbd0:	ff 15 b4 30 43 00    	call   *0x4330b4
40cbd6:	5f                   	pop    %edi
40cbd7:	5e                   	pop    %esi
40cbd8:	5b                   	pop    %ebx
40cbd9:	c9                   	leave
40cbda:	c3                   	ret
40cbdb:	8b ff                	mov    %edi,%edi
40cbdd:	55                   	push   %ebp
40cbde:	8b ec                	mov    %esp,%ebp
40cbe0:	83 ec 34             	sub    $0x34,%esp
40cbe3:	a1 64 10 41 00       	mov    0x411064,%eax
40cbe8:	33 c5                	xor    %ebp,%eax
40cbea:	89 45 fc             	mov    %eax,-0x4(%ebp)
40cbed:	53                   	push   %ebx
40cbee:	56                   	push   %esi
40cbef:	8b f1                	mov    %ecx,%esi
40cbf1:	57                   	push   %edi
40cbf2:	8b fa                	mov    %edx,%edi
40cbf4:	8b 06                	mov    (%esi),%eax
40cbf6:	8b 5e 04             	mov    0x4(%esi),%ebx
40cbf9:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40cbfc:	a1 48 26 43 00       	mov    0x432648,%eax
40cc01:	85 c0                	test   %eax,%eax
40cc03:	0f 84 21 01 00 00    	je     0x40cd2a
40cc09:	33 c9                	xor    %ecx,%ecx
40cc0b:	66 39 08             	cmp    %cx,(%eax)
40cc0e:	0f 84 16 01 00 00    	je     0x40cd2a
40cc14:	ff 76 5c             	push   0x5c(%esi)
40cc17:	57                   	push   %edi
40cc18:	ff 15 ac 30 43 00    	call   *0x4330ac
40cc1e:	6a 08                	push   $0x8
40cc20:	89 45 cc             	mov    %eax,-0x34(%ebp)
40cc23:	ff 15 0c 32 43 00    	call   *0x43320c
40cc29:	50                   	push   %eax
40cc2a:	57                   	push   %edi
40cc2b:	ff 15 80 30 43 00    	call   *0x433080
40cc31:	6a 05                	push   $0x5
40cc33:	ff 15 0c 32 43 00    	call   *0x43320c
40cc39:	50                   	push   %eax
40cc3a:	57                   	push   %edi
40cc3b:	ff 15 94 30 43 00    	call   *0x433094
40cc41:	6a 02                	push   $0x2
40cc43:	57                   	push   %edi
40cc44:	ff 15 6c 30 43 00    	call   *0x43306c
40cc4a:	0f b7 05 80 26 43 00 	movzwl 0x432680,%eax
40cc51:	8b 15 b0 10 41 00    	mov    0x4110b0,%edx
40cc57:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40cc5a:	89 45 dc             	mov    %eax,-0x24(%ebp)
40cc5d:	8d 46 68             	lea    0x68(%esi),%eax
40cc60:	89 45 e0             	mov    %eax,-0x20(%ebp)
40cc63:	8b 46 14             	mov    0x14(%esi),%eax
40cc66:	89 45 d8             	mov    %eax,-0x28(%ebp)
40cc69:	8d 43 01             	lea    0x1(%ebx),%eax
40cc6c:	89 45 f8             	mov    %eax,-0x8(%ebp)
40cc6f:	33 c0                	xor    %eax,%eax
40cc71:	c7 45 f0 02 00 00 00 	movl   $0x2,-0x10(%ebp)
40cc78:	40                   	inc    %eax
40cc79:	89 45 d0             	mov    %eax,-0x30(%ebp)
40cc7c:	8b 46 10             	mov    0x10(%esi),%eax
40cc7f:	89 45 ec             	mov    %eax,-0x14(%ebp)
40cc82:	48                   	dec    %eax
40cc83:	03 c1                	add    %ecx,%eax
40cc85:	89 45 f4             	mov    %eax,-0xc(%ebp)
40cc88:	33 c0                	xor    %eax,%eax
40cc8a:	85 d2                	test   %edx,%edx
40cc8c:	7e 7d                	jle    0x40cd0b
40cc8e:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40cc91:	40                   	inc    %eax
40cc92:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40cc95:	66 3b 0d 3c 13 41 00 	cmp    0x41133c,%cx
40cc9c:	77 6a                	ja     0x40cd08
40cc9e:	a1 48 26 43 00       	mov    0x432648,%eax
40cca3:	0f b7 c9             	movzwl %cx,%ecx
40cca6:	8d 14 48             	lea    (%eax,%ecx,2),%edx
40cca9:	8b 0d 14 19 43 00    	mov    0x431914,%ecx
40ccaf:	66 8b 02             	mov    (%edx),%ax
40ccb2:	66 89 45 e8          	mov    %ax,-0x18(%ebp)
40ccb6:	8d 45 e8             	lea    -0x18(%ebp),%eax
40ccb9:	50                   	push   %eax
40ccba:	e8 03 f6 ff ff       	call   0x40c2c2
40ccbf:	8b 55 e0             	mov    -0x20(%ebp),%edx
40ccc2:	8d 45 e8             	lea    -0x18(%ebp),%eax
40ccc5:	51                   	push   %ecx
40ccc6:	6a 01                	push   $0x1
40ccc8:	50                   	push   %eax
40ccc9:	8b 12                	mov    (%edx),%edx
40cccb:	8d 45 ec             	lea    -0x14(%ebp),%eax
40ccce:	03 55 ec             	add    -0x14(%ebp),%edx
40ccd1:	8b cf                	mov    %edi,%ecx
40ccd3:	50                   	push   %eax
40ccd4:	6a 06                	push   $0x6
40ccd6:	ff 75 d8             	push   -0x28(%ebp)
40ccd9:	e8 ab 33 00 00       	call   0x410089
40ccde:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40cce1:	83 45 e0 04          	addl   $0x4,-0x20(%ebp)
40cce5:	41                   	inc    %ecx
40cce6:	89 4d dc             	mov    %ecx,-0x24(%ebp)
40cce9:	66 3b 0d 38 13 41 00 	cmp    0x411338,%cx
40ccf0:	77 38                	ja     0x40cd2a
40ccf2:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40ccf5:	01 45 ec             	add    %eax,-0x14(%ebp)
40ccf8:	01 45 f4             	add    %eax,-0xc(%ebp)
40ccfb:	8b 15 b0 10 41 00    	mov    0x4110b0,%edx
40cd01:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40cd04:	3b c2                	cmp    %edx,%eax
40cd06:	7c 89                	jl     0x40cc91
40cd08:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40cd0b:	01 5d d8             	add    %ebx,-0x28(%ebp)
40cd0e:	01 5d f0             	add    %ebx,-0x10(%ebp)
40cd11:	01 5d f8             	add    %ebx,-0x8(%ebp)
40cd14:	8b 45 d0             	mov    -0x30(%ebp),%eax
40cd17:	83 f8 0a             	cmp    $0xa,%eax
40cd1a:	0f 8c 58 ff ff ff    	jl     0x40cc78
40cd20:	ff 75 cc             	push   -0x34(%ebp)
40cd23:	57                   	push   %edi
40cd24:	ff 15 ac 30 43 00    	call   *0x4330ac
40cd2a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40cd2d:	5f                   	pop    %edi
40cd2e:	5e                   	pop    %esi
40cd2f:	33 cd                	xor    %ebp,%ecx
40cd31:	5b                   	pop    %ebx
40cd32:	e8 f9 36 00 00       	call   0x410430
40cd37:	c9                   	leave
40cd38:	c3                   	ret
40cd39:	8b ff                	mov    %edi,%edi
40cd3b:	55                   	push   %ebp
40cd3c:	8b ec                	mov    %esp,%ebp
40cd3e:	83 ec 1c             	sub    $0x1c,%esp
40cd41:	a1 64 10 41 00       	mov    0x411064,%eax
40cd46:	33 c5                	xor    %ebp,%eax
40cd48:	89 45 fc             	mov    %eax,-0x4(%ebp)
40cd4b:	8b 45 0c             	mov    0xc(%ebp),%eax
40cd4e:	53                   	push   %ebx
40cd4f:	56                   	push   %esi
40cd50:	8b 31                	mov    (%ecx),%esi
40cd52:	8b da                	mov    %edx,%ebx
40cd54:	57                   	push   %edi
40cd55:	8b 79 04             	mov    0x4(%ecx),%edi
40cd58:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40cd5b:	33 c9                	xor    %ecx,%ecx
40cd5d:	85 c0                	test   %eax,%eax
40cd5f:	0f 95 c1             	setne  %cl
40cd62:	83 c1 05             	add    $0x5,%ecx
40cd65:	51                   	push   %ecx
40cd66:	ff 15 0c 32 43 00    	call   *0x43320c
40cd6c:	50                   	push   %eax
40cd6d:	ff 15 5c 30 43 00    	call   *0x43305c
40cd73:	50                   	push   %eax
40cd74:	53                   	push   %ebx
40cd75:	ff 15 ac 30 43 00    	call   *0x4330ac
40cd7b:	66 8b 4d 08          	mov    0x8(%ebp),%cx
40cd7f:	66 2b 0d 80 26 43 00 	sub    0x432680,%cx
40cd86:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40cd89:	0f b7 c1             	movzwl %cx,%eax
40cd8c:	8d 4e ff             	lea    -0x1(%esi),%ecx
40cd8f:	99                   	cltd
40cd90:	f7 3d b0 10 41 00    	idivl  0x4110b0
40cd96:	68 21 00 f0 00       	push   $0xf00021
40cd9b:	0f af c7             	imul   %edi,%eax
40cd9e:	0f af d6             	imul   %esi,%edx
40cda1:	6a 01                	push   $0x1
40cda3:	83 c2 02             	add    $0x2,%edx
40cda6:	03 ca                	add    %edx,%ecx
40cda8:	89 55 ec             	mov    %edx,-0x14(%ebp)
40cdab:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40cdae:	8d 48 02             	lea    0x2(%eax),%ecx
40cdb1:	8d 47 ff             	lea    -0x1(%edi),%eax
40cdb4:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40cdb7:	03 c1                	add    %ecx,%eax
40cdb9:	4e                   	dec    %esi
40cdba:	56                   	push   %esi
40cdbb:	89 45 f8             	mov    %eax,-0x8(%ebp)
40cdbe:	8d 41 fe             	lea    -0x2(%ecx),%eax
40cdc1:	50                   	push   %eax
40cdc2:	52                   	push   %edx
40cdc3:	53                   	push   %ebx
40cdc4:	ff 15 58 30 43 00    	call   *0x433058
40cdca:	8b 45 f8             	mov    -0x8(%ebp),%eax
40cdcd:	68 21 00 f0 00       	push   $0xf00021
40cdd2:	6a 01                	push   $0x1
40cdd4:	56                   	push   %esi
40cdd5:	40                   	inc    %eax
40cdd6:	50                   	push   %eax
40cdd7:	ff 75 ec             	push   -0x14(%ebp)
40cdda:	53                   	push   %ebx
40cddb:	ff 15 58 30 43 00    	call   *0x433058
40cde1:	8b 45 ec             	mov    -0x14(%ebp),%eax
40cde4:	8d 77 ff             	lea    -0x1(%edi),%esi
40cde7:	bf 21 00 f0 00       	mov    $0xf00021,%edi
40cdec:	83 c0 fe             	add    $0xfffffffe,%eax
40cdef:	57                   	push   %edi
40cdf0:	56                   	push   %esi
40cdf1:	6a 01                	push   $0x1
40cdf3:	ff 75 f0             	push   -0x10(%ebp)
40cdf6:	50                   	push   %eax
40cdf7:	53                   	push   %ebx
40cdf8:	ff 15 58 30 43 00    	call   *0x433058
40cdfe:	8b 45 f4             	mov    -0xc(%ebp),%eax
40ce01:	57                   	push   %edi
40ce02:	56                   	push   %esi
40ce03:	6a 01                	push   $0x1
40ce05:	ff 75 f0             	push   -0x10(%ebp)
40ce08:	40                   	inc    %eax
40ce09:	50                   	push   %eax
40ce0a:	53                   	push   %ebx
40ce0b:	ff 15 58 30 43 00    	call   *0x433058
40ce11:	6a 05                	push   $0x5
40ce13:	ff 15 54 30 43 00    	call   *0x433054
40ce19:	50                   	push   %eax
40ce1a:	53                   	push   %ebx
40ce1b:	ff 15 ac 30 43 00    	call   *0x4330ac
40ce21:	50                   	push   %eax
40ce22:	ff 15 b4 30 43 00    	call   *0x4330b4
40ce28:	8b 75 e8             	mov    -0x18(%ebp),%esi
40ce2b:	8b 7d 10             	mov    0x10(%ebp),%edi
40ce2e:	3b 7e 40             	cmp    0x40(%esi),%edi
40ce31:	74 0e                	je     0x40ce41
40ce33:	8d 45 ec             	lea    -0x14(%ebp),%eax
40ce36:	50                   	push   %eax