401857:	83 f9 08             	cmp    $0x8,%ecx
40185a:	72 32                	jb     0x40188e
40185c:	8b 55 c0             	mov    -0x40(%ebp),%edx
40185f:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
401866:	8b c2                	mov    %edx,%eax
401868:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40186e:	72 14                	jb     0x401884
401870:	8b 50 fc             	mov    -0x4(%eax),%edx
401873:	83 c1 23             	add    $0x23,%ecx
401876:	2b c2                	sub    %edx,%eax
401878:	83 c0 fc             	add    $0xfffffffc,%eax
40187b:	83 f8 1f             	cmp    $0x1f,%eax
40187e:	0f 87 ac 07 00 00    	ja     0x402030
401884:	51                   	push   %ecx
401885:	52                   	push   %edx
401886:	e8 83 a0 01 00       	call   0x41b90e
40188b:	83 c4 08             	add    $0x8,%esp
40188e:	8b 8d 68 ff ff ff    	mov    -0x98(%ebp),%ecx
401894:	33 c0                	xor    %eax,%eax
401896:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
40189d:	c7 45 d4 07 00 00 00 	movl   $0x7,-0x2c(%ebp)
4018a4:	66 89 45 c0          	mov    %ax,-0x40(%ebp)
4018a8:	83 f9 08             	cmp    $0x8,%ecx
4018ab:	0f 82 95 06 00 00    	jb     0x401f46
4018b1:	8b 95 54 ff ff ff    	mov    -0xac(%ebp),%edx
4018b7:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4018be:	8b c2                	mov    %edx,%eax
4018c0:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4018c6:	72 14                	jb     0x4018dc
4018c8:	8b 50 fc             	mov    -0x4(%eax),%edx
4018cb:	83 c1 23             	add    $0x23,%ecx
4018ce:	2b c2                	sub    %edx,%eax
4018d0:	83 c0 fc             	add    $0xfffffffc,%eax
4018d3:	83 f8 1f             	cmp    $0x1f,%eax
4018d6:	0f 87 54 07 00 00    	ja     0x402030
4018dc:	51                   	push   %ecx
4018dd:	52                   	push   %edx
4018de:	e8 2b a0 01 00       	call   0x41b90e
4018e3:	83 c4 08             	add    $0x8,%esp
4018e6:	e9 5b 06 00 00       	jmp    0x401f46
4018eb:	83 ec 18             	sub    $0x18,%esp
4018ee:	8b cc                	mov    %esp,%ecx
4018f0:	89 a5 a4 fd ff ff    	mov    %esp,-0x25c(%ebp)
4018f6:	6a 00                	push   $0x0
4018f8:	68 2c af 44 00       	push   $0x44af2c
4018fd:	c7 01 00 00 00 00    	movl   $0x0,(%ecx)
401903:	c7 41 10 00 00 00 00 	movl   $0x0,0x10(%ecx)
40190a:	c7 41 14 00 00 00 00 	movl   $0x0,0x14(%ecx)
401911:	e8 fa 0b 00 00       	call   0x402510
401916:	83 ec 18             	sub    $0x18,%esp
401919:	c6 45 fc 0c          	movb   $0xc,-0x4(%ebp)
40191d:	8b cc                	mov    %esp,%ecx
40191f:	89 a5 a0 fd ff ff    	mov    %esp,-0x260(%ebp)
401925:	6a 05                	push   $0x5
401927:	68 3c b0 44 00       	push   $0x44b03c
40192c:	c7 01 00 00 00 00    	movl   $0x0,(%ecx)
401932:	c7 41 10 00 00 00 00 	movl   $0x0,0x10(%ecx)
401939:	c7 41 14 00 00 00 00 	movl   $0x0,0x14(%ecx)
401940:	e8 cb 0b 00 00       	call   0x402510
401945:	83 ec 18             	sub    $0x18,%esp
401948:	c6 45 fc 0d          	movb   $0xd,-0x4(%ebp)
40194c:	8d 85 54 ff ff ff    	lea    -0xac(%ebp),%eax
401952:	8b cc                	mov    %esp,%ecx
401954:	50                   	push   %eax
401955:	e8 66 09 00 00       	call   0x4022c0
40195a:	8d 8d b8 fe ff ff    	lea    -0x148(%ebp),%ecx
401960:	c6 45 fc 0b          	movb   $0xb,-0x4(%ebp)
401964:	e8 27 23 01 00       	call   0x413c90
401969:	8b bd 64 ff ff ff    	mov    -0x9c(%ebp),%edi
40196f:	8d 8d 54 ff ff ff    	lea    -0xac(%ebp),%ecx
401975:	8b 45 d4             	mov    -0x2c(%ebp),%eax
401978:	83 c4 48             	add    $0x48,%esp
40197b:	83 bd 68 ff ff ff 08 	cmpl   $0x8,-0x98(%ebp)
401982:	0f 43 8d 54 ff ff ff 	cmovae -0xac(%ebp),%ecx
401989:	3b f8                	cmp    %eax,%edi
40198b:	77 23                	ja     0x4019b0
40198d:	83 f8 08             	cmp    $0x8,%eax
401990:	89 7d d0             	mov    %edi,-0x30(%ebp)
401993:	8d 04 3f             	lea    (%edi,%edi,1),%eax
401996:	50                   	push   %eax
401997:	8d 75 c0             	lea    -0x40(%ebp),%esi
40199a:	0f 43 75 c0          	cmovae -0x40(%ebp),%esi
40199e:	51                   	push   %ecx
40199f:	56                   	push   %esi
4019a0:	e8 ab ba 01 00       	call   0x41d450
4019a5:	83 c4 0c             	add    $0xc,%esp
4019a8:	33 c0                	xor    %eax,%eax
4019aa:	66 89 04 7e          	mov    %ax,(%esi,%edi,2)
4019ae:	eb 17                	jmp    0x4019c7
4019b0:	51                   	push   %ecx
4019b1:	c6 85 a4 fd ff ff 00 	movb   $0x0,-0x25c(%ebp)
4019b8:	8d 4d c0             	lea    -0x40(%ebp),%ecx
4019bb:	ff b5 a4 fd ff ff    	push   -0x25c(%ebp)
4019c1:	57                   	push   %edi
4019c2:	e8 49 0c 00 00       	call   0x402610
4019c7:	6a 0b                	push   $0xb
4019c9:	68 48 b0 44 00       	push   $0x44b048
4019ce:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4019d1:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
4019d8:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
4019df:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
4019e6:	e8 25 0b 00 00       	call   0x402510
4019eb:	c6 45 fc 0e          	movb   $0xe,-0x4(%ebp)
4019ef:	bb 02 00 00 00       	mov    $0x2,%ebx
4019f4:	8b 4d d0             	mov    -0x30(%ebp),%ecx
4019f7:	85 c9                	test   %ecx,%ecx
4019f9:	0f 84 bf 00 00 00    	je     0x401abe
4019ff:	8b 45 e8             	mov    -0x18(%ebp),%eax
401a02:	85 c0                	test   %eax,%eax
401a04:	0f 84 b4 00 00 00    	je     0x401abe
401a0a:	8d 71 0b             	lea    0xb(%ecx),%esi
401a0d:	33 c9                	xor    %ecx,%ecx
401a0f:	03 f0                	add    %eax,%esi
401a11:	8b c6                	mov    %esi,%eax
401a13:	f7 e3                	mul    %ebx
401a15:	0f 90 c1             	seto   %cl
401a18:	f7 d9                	neg    %ecx
401a1a:	0b c8                	or     %eax,%ecx
401a1c:	51                   	push   %ecx
401a1d:	e8 31 4c 02 00       	call   0x426653
401a22:	8b d8                	mov    %eax,%ebx
401a24:	83 c4 04             	add    $0x4,%esp
401a27:	85 db                	test   %ebx,%ebx
401a29:	0f 84 8a 00 00 00    	je     0x401ab9
401a2f:	83 7d d4 08          	cmpl   $0x8,-0x2c(%ebp)
401a33:	8d 4d c0             	lea    -0x40(%ebp),%ecx
401a36:	0f 43 4d c0          	cmovae -0x40(%ebp),%ecx
401a3a:	51                   	push   %ecx
401a3b:	56                   	push   %esi
401a3c:	53                   	push   %ebx
401a3d:	e8 34 4a 02 00       	call   0x426476
401a42:	83 c4 0c             	add    $0xc,%esp
401a45:	8d 45 d8             	lea    -0x28(%ebp),%eax
401a48:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
401a4c:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
401a50:	50                   	push   %eax
401a51:	53                   	push   %ebx
401a52:	ff 15 fc f1 43 00    	call   *0x43f1fc
401a58:	8b cb                	mov    %ebx,%ecx
401a5a:	8d 51 02             	lea    0x2(%ecx),%edx
401a5d:	0f 1f 00             	nopl   (%eax)
401a60:	66 8b 01             	mov    (%ecx),%ax
401a63:	83 c1 02             	add    $0x2,%ecx
401a66:	66 85 c0             	test   %ax,%ax
401a69:	75 f5                	jne    0x401a60
401a6b:	8b 45 d4             	mov    -0x2c(%ebp),%eax
401a6e:	2b ca                	sub    %edx,%ecx
401a70:	d1 f9                	sar    $1,%ecx
401a72:	3b c8                	cmp    %eax,%ecx
401a74:	77 23                	ja     0x401a99
401a76:	8d 34 09             	lea    (%ecx,%ecx,1),%esi
401a79:	89 4d d0             	mov    %ecx,-0x30(%ebp)
401a7c:	83 f8 08             	cmp    $0x8,%eax
401a7f:	8d 7d c0             	lea    -0x40(%ebp),%edi
401a82:	56                   	push   %esi
401a83:	0f 43 7d c0          	cmovae -0x40(%ebp),%edi
401a87:	53                   	push   %ebx
401a88:	57                   	push   %edi
401a89:	e8 c2 b9 01 00       	call   0x41d450
401a8e:	83 c4 0c             	add    $0xc,%esp
401a91:	33 c0                	xor    %eax,%eax
401a93:	66 89 04 37          	mov    %ax,(%edi,%esi,1)
401a97:	eb 17                	jmp    0x401ab0
401a99:	53                   	push   %ebx
401a9a:	c6 85 a4 fd ff ff 00 	movb   $0x0,-0x25c(%ebp)
401aa1:	ff b5 a4 fd ff ff    	push   -0x25c(%ebp)
401aa7:	51                   	push   %ecx
401aa8:	8d 4d c0             	lea    -0x40(%ebp),%ecx
401aab:	e8 60 0b 00 00       	call   0x402610
401ab0:	53                   	push   %ebx
401ab1:	e8 97 45 02 00       	call   0x42604d
401ab6:	83 c4 04             	add    $0x4,%esp
401ab9:	bb 02 00 00 00       	mov    $0x2,%ebx
401abe:	c6 45 fc 0b          	movb   $0xb,-0x4(%ebp)
401ac2:	8b 4d ec             	mov    -0x14(%ebp),%ecx
401ac5:	83 f9 08             	cmp    $0x8,%ecx
401ac8:	72 32                	jb     0x401afc
401aca:	8b 55 d8             	mov    -0x28(%ebp),%edx
401acd:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
401ad4:	8b c2                	mov    %edx,%eax
401ad6:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
401adc:	72 14                	jb     0x401af2
401ade:	8b 50 fc             	mov    -0x4(%eax),%edx
401ae1:	83 c1 23             	add    $0x23,%ecx
401ae4:	2b c2                	sub    %edx,%eax
401ae6:	83 c0 fc             	add    $0xfffffffc,%eax
401ae9:	83 f8 1f             	cmp    $0x1f,%eax
401aec:	0f 87 43 05 00 00    	ja     0x402035
401af2:	51                   	push   %ecx
401af3:	52                   	push   %edx
401af4:	e8 15 9e 01 00       	call   0x41b90e
401af9:	83 c4 08             	add    $0x8,%esp
401afc:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
401b02:	50                   	push   %eax
401b03:	8d 4d c0             	lea    -0x40(%ebp),%ecx
401b06:	e8 e5 17 01 00       	call   0x4132f0
401b0b:	83 c4 04             	add    $0x4,%esp
401b0e:	84 c0                	test   %al,%al
401b10:	75 22                	jne    0x401b34
401b12:	83 7d d4 08          	cmpl   $0x8,-0x2c(%ebp)
401b16:	8d 45 c0             	lea    -0x40(%ebp),%eax
401b19:	0f 43 45 c0          	cmovae -0x40(%ebp),%eax
401b1d:	50                   	push   %eax
401b1e:	68 60 b0 44 00       	push   $0x44b060
401b23:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
401b29:	6a 00                	push   $0x0
401b2b:	50                   	push   %eax
401b2c:	e8 1f d5 00 00       	call   0x40f050
401b31:	83 c4 10             	add    $0x10,%esp
401b34:	8d 85 54 ff ff ff    	lea    -0xac(%ebp),%eax
401b3a:	50                   	push   %eax
401b3b:	8d 4d 84             	lea    -0x7c(%ebp),%ecx
401b3e:	e8 7d 07 00 00       	call   0x4022c0
401b43:	c6 45 fc 0f          	movb   $0xf,-0x4(%ebp)
401b47:	8d 4d d8             	lea    -0x28(%ebp),%ecx
401b4a:	6a 14                	push   $0x14
401b4c:	68 88 b0 44 00       	push   $0x44b088
401b51:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
401b58:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
401b5f:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
401b66:	e8 a5 09 00 00       	call   0x402510
401b6b:	c6 45 fc 10          	movb   $0x10,-0x4(%ebp)
401b6f:	8b 4d 94             	mov    -0x6c(%ebp),%ecx
401b72:	85 c9                	test   %ecx,%ecx
401b74:	0f 84 bf 00 00 00    	je     0x401c39
401b7a:	8b 45 e8             	mov    -0x18(%ebp),%eax
401b7d:	85 c0                	test   %eax,%eax
401b7f:	0f 84 b4 00 00 00    	je     0x401c39
401b85:	8d 71 0b             	lea    0xb(%ecx),%esi
401b88:	33 c9                	xor    %ecx,%ecx
401b8a:	03 f0                	add    %eax,%esi
401b8c:	8b c6                	mov    %esi,%eax
401b8e:	f7 e3                	mul    %ebx
401b90:	0f 90 c1             	seto   %cl
401b93:	f7 d9                	neg    %ecx
401b95:	0b c8                	or     %eax,%ecx
401b97:	51                   	push   %ecx
401b98:	e8 b6 4a 02 00       	call   0x426653
401b9d:	8b d8                	mov    %eax,%ebx
401b9f:	83 c4 04             	add    $0x4,%esp
401ba2:	85 db                	test   %ebx,%ebx
401ba4:	0f 84 8f 00 00 00    	je     0x401c39
401baa:	83 7d 98 08          	cmpl   $0x8,-0x68(%ebp)
401bae:	8d 4d 84             	lea    -0x7c(%ebp),%ecx
401bb1:	0f 43 4d 84          	cmovae -0x7c(%ebp),%ecx
401bb5:	51                   	push   %ecx
401bb6:	56                   	push   %esi
401bb7:	53                   	push   %ebx
401bb8:	e8 b9 48 02 00       	call   0x426476
401bbd:	83 c4 0c             	add    $0xc,%esp
401bc0:	8d 45 d8             	lea    -0x28(%ebp),%eax
401bc3:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
401bc7:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
401bcb:	50                   	push   %eax
401bcc:	53                   	push   %ebx
401bcd:	ff 15 fc f1 43 00    	call   *0x43f1fc
401bd3:	8b cb                	mov    %ebx,%ecx
401bd5:	8d 51 02             	lea    0x2(%ecx),%edx
401bd8:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
401bdf:	00
401be0:	66 8b 01             	mov    (%ecx),%ax
401be3:	83 c1 02             	add    $0x2,%ecx
401be6:	66 85 c0             	test   %ax,%ax
401be9:	75 f5                	jne    0x401be0
401beb:	8b 45 98             	mov    -0x68(%ebp),%eax
401bee:	2b ca                	sub    %edx,%ecx
401bf0:	d1 f9                	sar    $1,%ecx
401bf2:	3b c8                	cmp    %eax,%ecx
401bf4:	77 23                	ja     0x401c19
401bf6:	8d 34 09             	lea    (%ecx,%ecx,1),%esi
401bf9:	89 4d 94             	mov    %ecx,-0x6c(%ebp)
401bfc:	83 f8 08             	cmp    $0x8,%eax
401bff:	8d 7d 84             	lea    -0x7c(%ebp),%edi
401c02:	56                   	push   %esi
401c03:	0f 43 7d 84          	cmovae -0x7c(%ebp),%edi
401c07:	53                   	push   %ebx
401c08:	57                   	push   %edi
401c09:	e8 42 b8 01 00       	call   0x41d450
401c0e:	83 c4 0c             	add    $0xc,%esp
401c11:	33 c0                	xor    %eax,%eax
401c13:	66 89 04 37          	mov    %ax,(%edi,%esi,1)
401c17:	eb 17                	jmp    0x401c30
401c19:	53                   	push   %ebx
401c1a:	c6 85 a4 fd ff ff 00 	movb   $0x0,-0x25c(%ebp)
401c21:	ff b5 a4 fd ff ff    	push   -0x25c(%ebp)
401c27:	51                   	push   %ecx
401c28:	8d 4d 84             	lea    -0x7c(%ebp),%ecx
401c2b:	e8 e0 09 00 00       	call   0x402610
401c30:	53                   	push   %ebx
401c31:	e8 17 44 02 00       	call   0x42604d
401c36:	83 c4 04             	add    $0x4,%esp
401c39:	c6 45 fc 0f          	movb   $0xf,-0x4(%ebp)
401c3d:	8b 4d ec             	mov    -0x14(%ebp),%ecx
401c40:	83 f9 08             	cmp    $0x8,%ecx
401c43:	72 32                	jb     0x401c77
401c45:	8b 55 d8             	mov    -0x28(%ebp),%edx
401c48:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
401c4f:	8b c2                	mov    %edx,%eax
401c51:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
401c57:	72 14                	jb     0x401c6d
401c59:	8b 50 fc             	mov    -0x4(%eax),%edx
401c5c:	83 c1 23             	add    $0x23,%ecx
401c5f:	2b c2                	sub    %edx,%eax
401c61:	83 c0 fc             	add    $0xfffffffc,%eax
401c64:	83 f8 1f             	cmp    $0x1f,%eax
401c67:	0f 87 cd 03 00 00    	ja     0x40203a
401c6d:	51                   	push   %ecx
401c6e:	52                   	push   %edx
401c6f:	e8 9a 9c 01 00       	call   0x41b90e
401c74:	83 c4 08             	add    $0x8,%esp
401c77:	0f 57 c0             	xorps  %xmm0,%xmm0
401c7a:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
401c81:	66 0f d6 45 e4       	movq   %xmm0,-0x1c(%ebp)
401c86:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
401c8d:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
401c94:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
401c9b:	51                   	push   %ecx
401c9c:	6a 01                	push   $0x1
401c9e:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
401ca4:	c6 45 fc 11          	movb   $0x11,-0x4(%ebp)
401ca8:	50                   	push   %eax
401ca9:	83 ec 08             	sub    $0x8,%esp
401cac:	8d 55 e4             	lea    -0x1c(%ebp),%edx
401caf:	8d 4d 84             	lea    -0x7c(%ebp),%ecx
401cb2:	e8 49 06 01 00       	call   0x412300
401cb7:	83 c4 14             	add    $0x14,%esp
401cba:	c6 45 fc 0f          	movb   $0xf,-0x4(%ebp)
401cbe:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
401cc1:	8a d8                	mov    %al,%bl
401cc3:	e8 a8 77 00 00       	call   0x409470
401cc8:	84 db                	test   %bl,%bl
401cca:	75 22                	jne    0x401cee
401ccc:	83 7d 98 08          	cmpl   $0x8,-0x68(%ebp)
401cd0:	8d 45 84             	lea    -0x7c(%ebp),%eax
401cd3:	0f 43 45 84          	cmovae -0x7c(%ebp),%eax
401cd7:	50                   	push   %eax
401cd8:	68 60 b0 44 00       	push   $0x44b060
401cdd:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
401ce3:	6a 00                	push   $0x0
401ce5:	50                   	push   %eax
401ce6:	e8 65 d3 00 00       	call   0x40f050
401ceb:	83 c4 10             	add    $0x10,%esp
401cee:	8d 85 54 ff ff ff    	lea    -0xac(%ebp),%eax
401cf4:	50                   	push   %eax
401cf5:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
401cf8:	e8 c3 05 00 00       	call   0x4022c0
401cfd:	c6 45 fc 12          	movb   $0x12,-0x4(%ebp)
401d01:	8d 4d d8             	lea    -0x28(%ebp),%ecx
401d04:	6a 14                	push   $0x14
401d06:	68 b4 b0 44 00       	push   $0x44b0b4