409883:	8d 45 fc             	lea    -0x4(%ebp),%eax
409886:	33 f6                	xor    %esi,%esi
409888:	21 75 fc             	and    %esi,-0x4(%ebp)
40988b:	21 75 f4             	and    %esi,-0xc(%ebp)
40988e:	50                   	push   %eax
40988f:	e8 39 a1 03 00       	call   0x4439cd
409894:	83 7d fc 02          	cmpl   $0x2,-0x4(%ebp)
409898:	7e 33                	jle    0x4098cd
40989a:	8b 7d 0c             	mov    0xc(%ebp),%edi
40989d:	39 37                	cmp    %esi,(%edi)
40989f:	74 5d                	je     0x4098fe
4098a1:	8d 45 f8             	lea    -0x8(%ebp),%eax
4098a4:	50                   	push   %eax
4098a5:	ff 37                	push   (%edi)
4098a7:	ff 75 08             	push   0x8(%ebp)
4098aa:	e8 05 ff ff ff       	call   0x4097b4
4098af:	8b f0                	mov    %eax,%esi
4098b1:	85 f6                	test   %esi,%esi
4098b3:	79 12                	jns    0x4098c7
4098b5:	ff 37                	push   (%edi)
4098b7:	68 c8 db 44 00       	push   $0x44dbc8
4098bc:	56                   	push   %esi
4098bd:	e8 6d 68 03 00       	call   0x44012f
4098c2:	83 c4 0c             	add    $0xc,%esp
4098c5:	eb 37                	jmp    0x4098fe
4098c7:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
4098cb:	75 31                	jne    0x4098fe
4098cd:	bf 7e 04 07 80       	mov    $0x8007047e,%edi
4098d2:	57                   	push   %edi
4098d3:	ff 75 14             	push   0x14(%ebp)
4098d6:	ff 75 10             	push   0x10(%ebp)
4098d9:	e8 16 4c 01 00       	call   0x41e4f4
4098de:	8b f0                	mov    %eax,%esi
4098e0:	85 f6                	test   %esi,%esi
4098e2:	79 0f                	jns    0x4098f3
4098e4:	68 ec db 44 00       	push   $0x44dbec
4098e9:	56                   	push   %esi
4098ea:	e8 40 68 03 00       	call   0x44012f
4098ef:	59                   	pop    %ecx
4098f0:	59                   	pop    %ecx
4098f1:	eb 0b                	jmp    0x4098fe
4098f3:	8b 45 18             	mov    0x18(%ebp),%eax
4098f6:	89 38                	mov    %edi,(%eax)
4098f8:	8b 45 1c             	mov    0x1c(%ebp),%eax
4098fb:	83 20 00             	andl   $0x0,(%eax)
4098fe:	5f                   	pop    %edi
4098ff:	8b c6                	mov    %esi,%eax
409901:	5e                   	pop    %esi
409902:	8b e5                	mov    %ebp,%esp
409904:	5d                   	pop    %ebp
409905:	c2 18 00             	ret    $0x18
409908:	55                   	push   %ebp
409909:	8b ec                	mov    %esp,%ebp
40990b:	51                   	push   %ecx
40990c:	51                   	push   %ecx
40990d:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
409911:	8d 45 f8             	lea    -0x8(%ebp),%eax
409914:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
409918:	56                   	push   %esi
409919:	50                   	push   %eax
40991a:	68 0c dc 44 00       	push   $0x44dc0c
40991f:	ff 75 0c             	push   0xc(%ebp)
409922:	e8 63 9f 03 00       	call   0x44388a
409927:	8b f0                	mov    %eax,%esi
409929:	83 fe 01             	cmp    $0x1,%esi
40992c:	75 04                	jne    0x409932
40992e:	33 f6                	xor    %esi,%esi
409930:	eb 44                	jmp    0x409976
409932:	85 f6                	test   %esi,%esi
409934:	79 07                	jns    0x40993d
409936:	68 20 dc 44 00       	push   $0x44dc20
40993b:	eb 31                	jmp    0x40996e
40993d:	8d 45 fc             	lea    -0x4(%ebp),%eax
409940:	50                   	push   %eax
409941:	ff 75 f8             	push   -0x8(%ebp)
409944:	e8 7f 9a 03 00       	call   0x4433c8
409949:	8b f0                	mov    %eax,%esi
40994b:	85 f6                	test   %esi,%esi
40994d:	79 07                	jns    0x409956
40994f:	68 44 dc 44 00       	push   $0x44dc44
409954:	eb 18                	jmp    0x40996e
409956:	6a 00                	push   $0x0
409958:	ff 75 fc             	push   -0x4(%ebp)
40995b:	ff 75 08             	push   0x8(%ebp)
40995e:	e8 42 88 ff ff       	call   0x4021a5
409963:	8b f0                	mov    %eax,%esi
409965:	85 f6                	test   %esi,%esi
409967:	79 0d                	jns    0x409976
409969:	68 68 dc 44 00       	push   $0x44dc68
40996e:	56                   	push   %esi
40996f:	e8 bb 67 03 00       	call   0x44012f
409974:	59                   	pop    %ecx
409975:	59                   	pop    %ecx
409976:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40997a:	74 09                	je     0x409985
40997c:	ff 75 fc             	push   -0x4(%ebp)
40997f:	ff 15 20 b3 44 00    	call   *0x44b320
409985:	8b 4d f8             	mov    -0x8(%ebp),%ecx
409988:	85 c9                	test   %ecx,%ecx
40998a:	74 06                	je     0x409992
40998c:	8b 01                	mov    (%ecx),%eax
40998e:	51                   	push   %ecx
40998f:	ff 50 08             	call   *0x8(%eax)
409992:	8b c6                	mov    %esi,%eax
409994:	5e                   	pop    %esi
409995:	8b e5                	mov    %ebp,%esp
409997:	5d                   	pop    %ebp
409998:	c2 08 00             	ret    $0x8
40999b:	55                   	push   %ebp
40999c:	8b ec                	mov    %esp,%ebp
40999e:	83 ec 0c             	sub    $0xc,%esp
4099a1:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4099a5:	8d 45 fc             	lea    -0x4(%ebp),%eax
4099a8:	56                   	push   %esi
4099a9:	57                   	push   %edi
4099aa:	8b 7d 08             	mov    0x8(%ebp),%edi
4099ad:	6a 00                	push   $0x0
4099af:	50                   	push   %eax
4099b0:	ff 77 14             	push   0x14(%edi)
4099b3:	ff 75 0c             	push   0xc(%ebp)
4099b6:	e8 14 d8 ff ff       	call   0x4071cf
4099bb:	8b f0                	mov    %eax,%esi
4099bd:	85 f6                	test   %esi,%esi
4099bf:	79 0a                	jns    0x4099cb
4099c1:	68 94 e6 44 00       	push   $0x44e694
4099c6:	e9 88 00 00 00       	jmp    0x409a53
4099cb:	ff 75 fc             	push   -0x4(%ebp)
4099ce:	ff 15 6c b1 44 00    	call   *0x44b16c
4099d4:	83 f8 ff             	cmp    $0xffffffff,%eax
4099d7:	75 4d                	jne    0x409a26
4099d9:	ff 15 e8 b0 44 00    	call   *0x44b0e8
4099df:	0f b7 f0             	movzwl %ax,%esi
4099e2:	81 ce 00 00 07 80    	or     $0x80070000,%esi
4099e8:	85 c0                	test   %eax,%eax
4099ea:	0f 4e f0             	cmovle %eax,%esi
4099ed:	81 fe 02 00 07 80    	cmp    $0x80070002,%esi
4099f3:	74 08                	je     0x4099fd
4099f5:	81 fe 03 00 07 80    	cmp    $0x80070003,%esi
4099fb:	75 02                	jne    0x4099ff
4099fd:	33 f6                	xor    %esi,%esi
4099ff:	0f 57 c0             	xorps  %xmm0,%xmm0
409a02:	66 0f 13 45 f4       	movlpd %xmm0,-0xc(%ebp)
409a07:	8b 4d f4             	mov    -0xc(%ebp),%ecx
409a0a:	8b 45 f8             	mov    -0x8(%ebp),%eax
409a0d:	85 f6                	test   %esi,%esi
409a0f:	79 28                	jns    0x409a39
409a11:	ff 75 fc             	push   -0x4(%ebp)
409a14:	ff 37                	push   (%edi)
409a16:	68 b8 e6 44 00       	push   $0x44e6b8
409a1b:	56                   	push   %esi
409a1c:	e8 0e 67 03 00       	call   0x44012f
409a21:	83 c4 10             	add    $0x10,%esp
409a24:	eb 35                	jmp    0x409a5b
409a26:	0f 57 c0             	xorps  %xmm0,%xmm0
409a29:	66 0f 13 45 f4       	movlpd %xmm0,-0xc(%ebp)
409a2e:	a8 10                	test   $0x10,%al
409a30:	74 d5                	je     0x409a07
409a32:	33 c9                	xor    %ecx,%ecx
409a34:	41                   	inc    %ecx
409a35:	33 c0                	xor    %eax,%eax
409a37:	eb d4                	jmp    0x409a0d
409a39:	6a 00                	push   $0x0
409a3b:	50                   	push   %eax
409a3c:	51                   	push   %ecx
409a3d:	ff 77 04             	push   0x4(%edi)
409a40:	ff 75 0c             	push   0xc(%ebp)
409a43:	e8 0a e7 ff ff       	call   0x408152
409a48:	8b f0                	mov    %eax,%esi
409a4a:	85 f6                	test   %esi,%esi
409a4c:	79 0d                	jns    0x409a5b
409a4e:	68 18 d2 44 00       	push   $0x44d218
409a53:	56                   	push   %esi
409a54:	e8 d6 66 03 00       	call   0x44012f
409a59:	59                   	pop    %ecx
409a5a:	59                   	pop    %ecx
409a5b:	ff 75 fc             	push   -0x4(%ebp)
409a5e:	e8 30 8d ff ff       	call   0x402793
409a63:	5f                   	pop    %edi
409a64:	8b c6                	mov    %esi,%eax
409a66:	5e                   	pop    %esi
409a67:	8b e5                	mov    %ebp,%esp
409a69:	5d                   	pop    %ebp
409a6a:	c2 08 00             	ret    $0x8
409a6d:	55                   	push   %ebp
409a6e:	8b ec                	mov    %esp,%ebp
409a70:	51                   	push   %ecx
409a71:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
409a75:	8d 45 fc             	lea    -0x4(%ebp),%eax
409a78:	56                   	push   %esi
409a79:	57                   	push   %edi
409a7a:	8b 7d 08             	mov    0x8(%ebp),%edi
409a7d:	6a 00                	push   $0x0
409a7f:	50                   	push   %eax
409a80:	ff 77 14             	push   0x14(%edi)
409a83:	ff 75 0c             	push   0xc(%ebp)
409a86:	e8 44 d7 ff ff       	call   0x4071cf
409a8b:	8b f0                	mov    %eax,%esi
409a8d:	85 f6                	test   %esi,%esi
409a8f:	79 12                	jns    0x409aa3
409a91:	68 94 e6 44 00       	push   $0x44e694
409a96:	56                   	push   %esi
409a97:	e8 93 66 03 00       	call   0x44012f
409a9c:	59                   	pop    %ecx
409a9d:	59                   	pop    %ecx
409a9e:	e9 8a 00 00 00       	jmp    0x409b2d
409aa3:	ff 75 fc             	push   -0x4(%ebp)
409aa6:	ff 15 6c b1 44 00    	call   *0x44b16c
409aac:	83 f8 ff             	cmp    $0xffffffff,%eax
409aaf:	75 16                	jne    0x409ac7
409ab1:	ff 15 e8 b0 44 00    	call   *0x44b0e8
409ab7:	0f b7 f0             	movzwl %ax,%esi
409aba:	81 ce 00 00 07 80    	or     $0x80070000,%esi
409ac0:	85 c0                	test   %eax,%eax
409ac2:	0f 4e f0             	cmovle %eax,%esi
409ac5:	eb 26                	jmp    0x409aed
409ac7:	a8 10                	test   $0x10,%al
409ac9:	74 1d                	je     0x409ae8
409acb:	6a 00                	push   $0x0
409acd:	ff 75 fc             	push   -0x4(%ebp)
409ad0:	ff 77 04             	push   0x4(%edi)
409ad3:	ff 75 0c             	push   0xc(%ebp)
409ad6:	e8 1b e6 ff ff       	call   0x4080f6
409adb:	8b f0                	mov    %eax,%esi
409add:	85 f6                	test   %esi,%esi
409adf:	79 0c                	jns    0x409aed
409ae1:	68 f4 e6 44 00       	push   $0x44e6f4
409ae6:	eb ae                	jmp    0x409a96
409ae8:	be 03 00 07 80       	mov    $0x80070003,%esi
409aed:	81 fe 02 00 07 80    	cmp    $0x80070002,%esi
409af3:	74 21                	je     0x409b16
409af5:	81 fe 03 00 07 80    	cmp    $0x80070003,%esi
409afb:	74 19                	je     0x409b16
409afd:	85 f6                	test   %esi,%esi
409aff:	79 2c                	jns    0x409b2d
409b01:	ff 75 fc             	push   -0x4(%ebp)
409b04:	ff 37                	push   (%edi)
409b06:	68 b8 e6 44 00       	push   $0x44e6b8
409b0b:	56                   	push   %esi
409b0c:	e8 1e 66 03 00       	call   0x44012f
409b11:	83 c4 10             	add    $0x10,%esp
409b14:	eb 17                	jmp    0x409b2d
409b16:	56                   	push   %esi
409b17:	ff 75 fc             	push   -0x4(%ebp)
409b1a:	ff 37                	push   (%edi)
409b1c:	68 24 e7 44 00       	push   $0x44e724
409b21:	6a 02                	push   $0x2
409b23:	e8 f2 6a 03 00       	call   0x44061a
409b28:	83 c4 14             	add    $0x14,%esp
409b2b:	33 f6                	xor    %esi,%esi
409b2d:	ff 75 fc             	push   -0x4(%ebp)
409b30:	e8 5e 8c ff ff       	call   0x402793
409b35:	5f                   	pop    %edi
409b36:	8b c6                	mov    %esi,%eax
409b38:	5e                   	pop    %esi
409b39:	8b e5                	mov    %ebp,%esp
409b3b:	5d                   	pop    %ebp
409b3c:	c2 08 00             	ret    $0x8
409b3f:	55                   	push   %ebp
409b40:	8b ec                	mov    %esp,%ebp
409b42:	83 ec 0c             	sub    $0xc,%esp
409b45:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
409b49:	8d 45 fc             	lea    -0x4(%ebp),%eax
409b4c:	56                   	push   %esi
409b4d:	57                   	push   %edi
409b4e:	8b 7d 08             	mov    0x8(%ebp),%edi
409b51:	6a 00                	push   $0x0
409b53:	50                   	push   %eax
409b54:	ff 77 14             	push   0x14(%edi)
409b57:	ff 75 0c             	push   0xc(%ebp)
409b5a:	e8 70 d6 ff ff       	call   0x4071cf
409b5f:	8b f0                	mov    %eax,%esi
409b61:	85 f6                	test   %esi,%esi
409b63:	79 0a                	jns    0x409b6f
409b65:	68 94 e6 44 00       	push   $0x44e694
409b6a:	e9 9d 00 00 00       	jmp    0x409c0c
409b6f:	ff 75 fc             	push   -0x4(%ebp)
409b72:	ff 15 6c b1 44 00    	call   *0x44b16c
409b78:	83 f8 ff             	cmp    $0xffffffff,%eax
409b7b:	0f 85 a5 00 00 00    	jne    0x409c26
409b81:	ff 15 e8 b0 44 00    	call   *0x44b0e8
409b87:	83 f8 02             	cmp    $0x2,%eax
409b8a:	74 44                	je     0x409bd0
409b8c:	83 f8 03             	cmp    $0x3,%eax
409b8f:	74 3f                	je     0x409bd0
409b91:	85 c0                	test   %eax,%eax
409b93:	74 4f                	je     0x409be4
409b95:	0f b7 f0             	movzwl %ax,%esi
409b98:	81 ce 00 00 07 80    	or     $0x80070000,%esi
409b9e:	85 c0                	test   %eax,%eax
409ba0:	0f 4e f0             	cmovle %eax,%esi
409ba3:	b8 05 40 00 80       	mov    $0x80004005,%eax
409ba8:	85 f6                	test   %esi,%esi
409baa:	0f 49 f0             	cmovns %eax,%esi
409bad:	56                   	push   %esi
409bae:	68 8b 02 00 00       	push   $0x28b
409bb3:	68 c4 e1 44 00       	push   $0x44e1c4
409bb8:	e8 16 9c ff ff       	call   0x4037d3
409bbd:	ff 77 14             	push   0x14(%edi)
409bc0:	68 8c e7 44 00       	push   $0x44e78c
409bc5:	56                   	push   %esi
409bc6:	e8 64 65 03 00       	call   0x44012f
409bcb:	83 c4 0c             	add    $0xc,%esp
409bce:	eb 44                	jmp    0x409c14
409bd0:	ff 75 fc             	push   -0x4(%ebp)
409bd3:	ff 37                	push   (%edi)
409bd5:	68 60 e7 44 00       	push   $0x44e760
409bda:	6a 02                	push   $0x2
409bdc:	e8 39 6a 03 00       	call   0x44061a
409be1:	83 c4 10             	add    $0x10,%esp
409be4:	0f 57 c0             	xorps  %xmm0,%xmm0
409be7:	66 0f 13 45 f4       	movlpd %xmm0,-0xc(%ebp)
409bec:	8b 4d f4             	mov    -0xc(%ebp),%ecx
409bef:	8b 45 f8             	mov    -0x8(%ebp),%eax
409bf2:	6a 00                	push   $0x0
409bf4:	50                   	push   %eax
409bf5:	51                   	push   %ecx
409bf6:	ff 77 04             	push   0x4(%edi)
409bf9:	ff 75 0c             	push   0xc(%ebp)
409bfc:	e8 51 e5 ff ff       	call   0x408152
409c01:	8b f0                	mov    %eax,%esi
409c03:	85 f6                	test   %esi,%esi
409c05:	79 0d                	jns    0x409c14
409c07:	68 18 d2 44 00       	push   $0x44d218
409c0c:	56                   	push   %esi
409c0d:	e8 1d 65 03 00       	call   0x44012f
409c12:	59                   	pop    %ecx
409c13:	59                   	pop    %ecx
409c14:	ff 75 fc             	push   -0x4(%ebp)
409c17:	e8 77 8b ff ff       	call   0x402793
409c1c:	5f                   	pop    %edi
409c1d:	8b c6                	mov    %esi,%eax
409c1f:	5e                   	pop    %esi
409c20:	8b e5                	mov    %ebp,%esp
409c22:	5d                   	pop    %ebp
409c23:	c2 08 00             	ret    $0x8
409c26:	0f 57 c0             	xorps  %xmm0,%xmm0
409c29:	66 0f 13 45 f4       	movlpd %xmm0,-0xc(%ebp)
409c2e:	a8 10                	test   $0x10,%al
409c30:	75 ba                	jne    0x409bec
409c32:	33 c9                	xor    %ecx,%ecx
409c34:	41                   	inc    %ecx
409c35:	33 c0                	xor    %eax,%eax
409c37:	eb b9                	jmp    0x409bf2
409c39:	55                   	push   %ebp
409c3a:	8b ec                	mov    %esp,%ebp
409c3c:	51                   	push   %ecx
409c3d:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
409c41:	8d 45 fc             	lea    -0x4(%ebp),%eax
409c44:	56                   	push   %esi
409c45:	57                   	push   %edi