40a646:	e8 66 ff ff ff       	call   0x40a5b1
40a64b:	59                   	pop    %ecx
40a64c:	59                   	pop    %ecx
40a64d:	85 c0                	test   %eax,%eax
40a64f:	75 1d                	jne    0x40a66e
40a651:	8b 47 0c             	mov    0xc(%edi),%eax
40a654:	90                   	nop
40a655:	c1 e8 0b             	shr    $0xb,%eax
40a658:	a8 01                	test   $0x1,%al
40a65a:	74 15                	je     0x40a671
40a65c:	57                   	push   %edi
40a65d:	e8 97 07 00 00       	call   0x40adf9
40a662:	50                   	push   %eax
40a663:	e8 9c 12 00 00       	call   0x40b904
40a668:	59                   	pop    %ecx
40a669:	59                   	pop    %ecx
40a66a:	85 c0                	test   %eax,%eax
40a66c:	74 03                	je     0x40a671
40a66e:	83 ce ff             	or     $0xffffffff,%esi
40a671:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40a674:	e8 df b3 ff ff       	call   0x405a58
40a679:	5f                   	pop    %edi
40a67a:	8b c6                	mov    %esi,%eax
40a67c:	5e                   	pop    %esi
40a67d:	c9                   	leave
40a67e:	c3                   	ret
40a67f:	6a 01                	push   $0x1
40a681:	e8 8a fe ff ff       	call   0x40a510
40a686:	59                   	pop    %ecx
40a687:	c3                   	ret
40a688:	a1 80 73 41 00       	mov    0x417380,%eax
40a68d:	56                   	push   %esi
40a68e:	6a 03                	push   $0x3
40a690:	5e                   	pop    %esi
40a691:	85 c0                	test   %eax,%eax
40a693:	75 07                	jne    0x40a69c
40a695:	b8 00 02 00 00       	mov    $0x200,%eax
40a69a:	eb 06                	jmp    0x40a6a2
40a69c:	3b c6                	cmp    %esi,%eax
40a69e:	7d 07                	jge    0x40a6a7
40a6a0:	8b c6                	mov    %esi,%eax
40a6a2:	a3 80 73 41 00       	mov    %eax,0x417380
40a6a7:	6a 04                	push   $0x4
40a6a9:	50                   	push   %eax
40a6aa:	e8 b4 d2 ff ff       	call   0x407963
40a6af:	6a 00                	push   $0x0
40a6b1:	a3 84 73 41 00       	mov    %eax,0x417384
40a6b6:	e8 be d1 ff ff       	call   0x407879
40a6bb:	83 c4 0c             	add    $0xc,%esp
40a6be:	83 3d 84 73 41 00 00 	cmpl   $0x0,0x417384
40a6c5:	75 2b                	jne    0x40a6f2
40a6c7:	6a 04                	push   $0x4
40a6c9:	56                   	push   %esi
40a6ca:	89 35 80 73 41 00    	mov    %esi,0x417380
40a6d0:	e8 8e d2 ff ff       	call   0x407963
40a6d5:	6a 00                	push   $0x0
40a6d7:	a3 84 73 41 00       	mov    %eax,0x417384
40a6dc:	e8 98 d1 ff ff       	call   0x407879
40a6e1:	83 c4 0c             	add    $0xc,%esp
40a6e4:	83 3d 84 73 41 00 00 	cmpl   $0x0,0x417384
40a6eb:	75 05                	jne    0x40a6f2
40a6ed:	83 c8 ff             	or     $0xffffffff,%eax
40a6f0:	5e                   	pop    %esi
40a6f1:	c3                   	ret
40a6f2:	57                   	push   %edi
40a6f3:	33 ff                	xor    %edi,%edi
40a6f5:	be a8 66 41 00       	mov    $0x4166a8,%esi
40a6fa:	6a 00                	push   $0x0
40a6fc:	68 a0 0f 00 00       	push   $0xfa0
40a701:	8d 46 20             	lea    0x20(%esi),%eax
40a704:	50                   	push   %eax
40a705:	e8 81 f7 ff ff       	call   0x409e8b
40a70a:	a1 84 73 41 00       	mov    0x417384,%eax
40a70f:	8b d7                	mov    %edi,%edx
40a711:	c1 fa 06             	sar    $0x6,%edx
40a714:	89 34 b8             	mov    %esi,(%eax,%edi,4)
40a717:	8b c7                	mov    %edi,%eax
40a719:	83 e0 3f             	and    $0x3f,%eax
40a71c:	6b c8 38             	imul   $0x38,%eax,%ecx
40a71f:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40a726:	8b 44 08 18          	mov    0x18(%eax,%ecx,1),%eax
40a72a:	83 f8 ff             	cmp    $0xffffffff,%eax
40a72d:	74 09                	je     0x40a738
40a72f:	83 f8 fe             	cmp    $0xfffffffe,%eax
40a732:	74 04                	je     0x40a738
40a734:	85 c0                	test   %eax,%eax
40a736:	75 07                	jne    0x40a73f
40a738:	c7 46 10 fe ff ff ff 	movl   $0xfffffffe,0x10(%esi)
40a73f:	83 c6 38             	add    $0x38,%esi
40a742:	47                   	inc    %edi
40a743:	81 fe 50 67 41 00    	cmp    $0x416750,%esi
40a749:	75 af                	jne    0x40a6fa
40a74b:	5f                   	pop    %edi
40a74c:	33 c0                	xor    %eax,%eax
40a74e:	5e                   	pop    %esi
40a74f:	c3                   	ret
40a750:	8b ff                	mov    %edi,%edi
40a752:	56                   	push   %esi
40a753:	e8 27 ff ff ff       	call   0x40a67f
40a758:	e8 f3 1c 00 00       	call   0x40c450
40a75d:	33 f6                	xor    %esi,%esi
40a75f:	a1 84 73 41 00       	mov    0x417384,%eax
40a764:	ff 34 06             	push   (%esi,%eax,1)
40a767:	e8 8f 1d 00 00       	call   0x40c4fb
40a76c:	a1 84 73 41 00       	mov    0x417384,%eax
40a771:	59                   	pop    %ecx
40a772:	8b 04 06             	mov    (%esi,%eax,1),%eax
40a775:	83 c0 20             	add    $0x20,%eax
40a778:	50                   	push   %eax
40a779:	ff 15 6c f0 40 00    	call   *0x40f06c
40a77f:	83 c6 04             	add    $0x4,%esi
40a782:	83 fe 0c             	cmp    $0xc,%esi
40a785:	75 d8                	jne    0x40a75f
40a787:	ff 35 84 73 41 00    	push   0x417384
40a78d:	e8 e7 d0 ff ff       	call   0x407879
40a792:	83 25 84 73 41 00 00 	andl   $0x0,0x417384
40a799:	59                   	pop    %ecx
40a79a:	5e                   	pop    %esi
40a79b:	c3                   	ret
40a79c:	8b ff                	mov    %edi,%edi
40a79e:	55                   	push   %ebp
40a79f:	8b ec                	mov    %esp,%ebp
40a7a1:	8b 45 08             	mov    0x8(%ebp),%eax
40a7a4:	83 c0 20             	add    $0x20,%eax
40a7a7:	50                   	push   %eax
40a7a8:	ff 15 64 f0 40 00    	call   *0x40f064
40a7ae:	5d                   	pop    %ebp
40a7af:	c3                   	ret
40a7b0:	8b ff                	mov    %edi,%edi
40a7b2:	55                   	push   %ebp
40a7b3:	8b ec                	mov    %esp,%ebp
40a7b5:	8b 45 08             	mov    0x8(%ebp),%eax
40a7b8:	83 c0 20             	add    $0x20,%eax
40a7bb:	50                   	push   %eax
40a7bc:	ff 15 68 f0 40 00    	call   *0x40f068
40a7c2:	5d                   	pop    %ebp
40a7c3:	c3                   	ret
40a7c4:	8b ff                	mov    %edi,%edi
40a7c6:	55                   	push   %ebp
40a7c7:	8b ec                	mov    %esp,%ebp
40a7c9:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a7cc:	8b c1                	mov    %ecx,%eax
40a7ce:	53                   	push   %ebx
40a7cf:	83 e0 10             	and    $0x10,%eax
40a7d2:	bb 00 02 00 00       	mov    $0x200,%ebx
40a7d7:	56                   	push   %esi
40a7d8:	c1 e0 03             	shl    $0x3,%eax
40a7db:	57                   	push   %edi
40a7dc:	f6 c1 08             	test   $0x8,%cl
40a7df:	74 02                	je     0x40a7e3
40a7e1:	0b c3                	or     %ebx,%eax
40a7e3:	f6 c1 04             	test   $0x4,%cl
40a7e6:	74 05                	je     0x40a7ed
40a7e8:	0d 00 04 00 00       	or     $0x400,%eax
40a7ed:	f6 c1 02             	test   $0x2,%cl
40a7f0:	74 05                	je     0x40a7f7
40a7f2:	0d 00 08 00 00       	or     $0x800,%eax
40a7f7:	f6 c1 01             	test   $0x1,%cl
40a7fa:	74 05                	je     0x40a801
40a7fc:	0d 00 10 00 00       	or     $0x1000,%eax
40a801:	be 00 01 00 00       	mov    $0x100,%esi
40a806:	f7 c1 00 00 08 00    	test   $0x80000,%ecx
40a80c:	74 02                	je     0x40a810
40a80e:	0b c6                	or     %esi,%eax
40a810:	8b d1                	mov    %ecx,%edx
40a812:	bf 00 03 00 00       	mov    $0x300,%edi
40a817:	23 d7                	and    %edi,%edx
40a819:	74 1f                	je     0x40a83a
40a81b:	3b d6                	cmp    %esi,%edx
40a81d:	74 16                	je     0x40a835
40a81f:	3b d3                	cmp    %ebx,%edx
40a821:	74 0b                	je     0x40a82e
40a823:	3b d7                	cmp    %edi,%edx
40a825:	75 13                	jne    0x40a83a
40a827:	0d 00 60 00 00       	or     $0x6000,%eax
40a82c:	eb 0c                	jmp    0x40a83a
40a82e:	0d 00 40 00 00       	or     $0x4000,%eax
40a833:	eb 05                	jmp    0x40a83a
40a835:	0d 00 20 00 00       	or     $0x2000,%eax
40a83a:	ba 00 00 00 03       	mov    $0x3000000,%edx
40a83f:	5f                   	pop    %edi
40a840:	23 ca                	and    %edx,%ecx
40a842:	5e                   	pop    %esi
40a843:	5b                   	pop    %ebx
40a844:	81 f9 00 00 00 01    	cmp    $0x1000000,%ecx
40a84a:	74 18                	je     0x40a864
40a84c:	81 f9 00 00 00 02    	cmp    $0x2000000,%ecx
40a852:	74 0b                	je     0x40a85f
40a854:	3b ca                	cmp    %edx,%ecx
40a856:	75 11                	jne    0x40a869
40a858:	0d 00 80 00 00       	or     $0x8000,%eax
40a85d:	5d                   	pop    %ebp
40a85e:	c3                   	ret
40a85f:	83 c8 40             	or     $0x40,%eax
40a862:	5d                   	pop    %ebp
40a863:	c3                   	ret
40a864:	0d 40 80 00 00       	or     $0x8040,%eax
40a869:	5d                   	pop    %ebp
40a86a:	c3                   	ret
40a86b:	8b ff                	mov    %edi,%edi
40a86d:	55                   	push   %ebp
40a86e:	8b ec                	mov    %esp,%ebp
40a870:	83 ec 10             	sub    $0x10,%esp
40a873:	9b d9 7d f8          	fstcw  -0x8(%ebp)
40a877:	66 8b 45 f8          	mov    -0x8(%ebp),%ax
40a87b:	0f b7 c8             	movzwl %ax,%ecx
40a87e:	83 e1 01             	and    $0x1,%ecx
40a881:	c1 e1 04             	shl    $0x4,%ecx
40a884:	a8 04                	test   $0x4,%al
40a886:	74 03                	je     0x40a88b
40a888:	83 c9 08             	or     $0x8,%ecx
40a88b:	a8 08                	test   $0x8,%al
40a88d:	74 03                	je     0x40a892
40a88f:	83 c9 04             	or     $0x4,%ecx
40a892:	a8 10                	test   $0x10,%al
40a894:	74 03                	je     0x40a899
40a896:	83 c9 02             	or     $0x2,%ecx
40a899:	a8 20                	test   $0x20,%al
40a89b:	74 03                	je     0x40a8a0
40a89d:	83 c9 01             	or     $0x1,%ecx
40a8a0:	a8 02                	test   $0x2,%al
40a8a2:	74 06                	je     0x40a8aa
40a8a4:	81 c9 00 00 08 00    	or     $0x80000,%ecx
40a8aa:	53                   	push   %ebx
40a8ab:	56                   	push   %esi
40a8ac:	0f b7 f0             	movzwl %ax,%esi
40a8af:	bb 00 0c 00 00       	mov    $0xc00,%ebx
40a8b4:	8b d6                	mov    %esi,%edx
40a8b6:	57                   	push   %edi
40a8b7:	bf 00 02 00 00       	mov    $0x200,%edi
40a8bc:	23 d3                	and    %ebx,%edx
40a8be:	74 26                	je     0x40a8e6
40a8c0:	81 fa 00 04 00 00    	cmp    $0x400,%edx
40a8c6:	74 18                	je     0x40a8e0
40a8c8:	81 fa 00 08 00 00    	cmp    $0x800,%edx
40a8ce:	74 0c                	je     0x40a8dc
40a8d0:	3b d3                	cmp    %ebx,%edx
40a8d2:	75 12                	jne    0x40a8e6
40a8d4:	81 c9 00 03 00 00    	or     $0x300,%ecx
40a8da:	eb 0a                	jmp    0x40a8e6
40a8dc:	0b cf                	or     %edi,%ecx
40a8de:	eb 06                	jmp    0x40a8e6
40a8e0:	81 c9 00 01 00 00    	or     $0x100,%ecx
40a8e6:	81 e6 00 03 00 00    	and    $0x300,%esi
40a8ec:	74 0c                	je     0x40a8fa
40a8ee:	3b f7                	cmp    %edi,%esi
40a8f0:	75 0e                	jne    0x40a900
40a8f2:	81 c9 00 00 01 00    	or     $0x10000,%ecx
40a8f8:	eb 06                	jmp    0x40a900
40a8fa:	81 c9 00 00 02 00    	or     $0x20000,%ecx
40a900:	0f b7 c0             	movzwl %ax,%eax
40a903:	ba 00 10 00 00       	mov    $0x1000,%edx
40a908:	85 c2                	test   %eax,%edx
40a90a:	74 06                	je     0x40a912
40a90c:	81 c9 00 00 04 00    	or     $0x40000,%ecx
40a912:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a915:	8b f7                	mov    %edi,%esi
40a917:	8b 45 08             	mov    0x8(%ebp),%eax
40a91a:	f7 d6                	not    %esi
40a91c:	23 f1                	and    %ecx,%esi
40a91e:	23 c7                	and    %edi,%eax
40a920:	0b f0                	or     %eax,%esi
40a922:	3b f1                	cmp    %ecx,%esi
40a924:	0f 84 a8 00 00 00    	je     0x40a9d2
40a92a:	56                   	push   %esi
40a92b:	e8 3c 02 00 00       	call   0x40ab6c
40a930:	59                   	pop    %ecx
40a931:	66 89 45 fc          	mov    %ax,-0x4(%ebp)
40a935:	d9 6d fc             	fldcw  -0x4(%ebp)
40a938:	9b d9 7d fc          	fstcw  -0x4(%ebp)
40a93c:	66 8b 45 fc          	mov    -0x4(%ebp),%ax
40a940:	0f b7 f0             	movzwl %ax,%esi
40a943:	83 e6 01             	and    $0x1,%esi
40a946:	c1 e6 04             	shl    $0x4,%esi
40a949:	a8 04                	test   $0x4,%al
40a94b:	74 03                	je     0x40a950
40a94d:	83 ce 08             	or     $0x8,%esi
40a950:	a8 08                	test   $0x8,%al
40a952:	74 03                	je     0x40a957
40a954:	83 ce 04             	or     $0x4,%esi
40a957:	a8 10                	test   $0x10,%al
40a959:	74 03                	je     0x40a95e
40a95b:	83 ce 02             	or     $0x2,%esi
40a95e:	a8 20                	test   $0x20,%al
40a960:	74 03                	je     0x40a965
40a962:	83 ce 01             	or     $0x1,%esi
40a965:	a8 02                	test   $0x2,%al
40a967:	74 06                	je     0x40a96f
40a969:	81 ce 00 00 08 00    	or     $0x80000,%esi
40a96f:	0f b7 d0             	movzwl %ax,%edx
40a972:	8b ca                	mov    %edx,%ecx
40a974:	23 cb                	and    %ebx,%ecx
40a976:	74 2a                	je     0x40a9a2
40a978:	81 f9 00 04 00 00    	cmp    $0x400,%ecx
40a97e:	74 1c                	je     0x40a99c
40a980:	81 f9 00 08 00 00    	cmp    $0x800,%ecx
40a986:	74 0c                	je     0x40a994
40a988:	3b cb                	cmp    %ebx,%ecx
40a98a:	75 16                	jne    0x40a9a2
40a98c:	81 ce 00 03 00 00    	or     $0x300,%esi
40a992:	eb 0e                	jmp    0x40a9a2
40a994:	81 ce 00 02 00 00    	or     $0x200,%esi
40a99a:	eb 06                	jmp    0x40a9a2
40a99c:	81 ce 00 01 00 00    	or     $0x100,%esi
40a9a2:	81 e2 00 03 00 00    	and    $0x300,%edx
40a9a8:	74 10                	je     0x40a9ba
40a9aa:	81 fa 00 02 00 00    	cmp    $0x200,%edx
40a9b0:	75 0e                	jne    0x40a9c0
40a9b2:	81 ce 00 00 01 00    	or     $0x10000,%esi
40a9b8:	eb 06                	jmp    0x40a9c0
40a9ba:	81 ce 00 00 02 00    	or     $0x20000,%esi
40a9c0:	0f b7 c0             	movzwl %ax,%eax
40a9c3:	ba 00 10 00 00       	mov    $0x1000,%edx
40a9c8:	85 c2                	test   %eax,%edx
40a9ca:	74 06                	je     0x40a9d2
40a9cc:	81 ce 00 00 04 00    	or     $0x40000,%esi
40a9d2:	83 3d bc 69 41 00 01 	cmpl   $0x1,0x4169bc
40a9d9:	0f 8c 86 01 00 00    	jl     0x40ab65
40a9df:	81 e7 1f 03 08 03    	and    $0x308031f,%edi
40a9e5:	0f ae 5d f0          	stmxcsr -0x10(%ebp)
40a9e9:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a9ec:	8b c1                	mov    %ecx,%eax
40a9ee:	c1 e8 03             	shr    $0x3,%eax
40a9f1:	83 e0 10             	and    $0x10,%eax
40a9f4:	f7 c1 00 02 00 00    	test   $0x200,%ecx
40a9fa:	74 03                	je     0x40a9ff
40a9fc:	83 c8 08             	or     $0x8,%eax
40a9ff:	f7 c1 00 04 00 00    	test   $0x400,%ecx
40aa05:	74 03                	je     0x40aa0a
40aa07:	83 c8 04             	or     $0x4,%eax
40aa0a:	f7 c1 00 08 00 00    	test   $0x800,%ecx
40aa10:	74 03                	je     0x40aa15
40aa12:	83 c8 02             	or     $0x2,%eax
40aa15:	85 ca                	test   %ecx,%edx
40aa17:	74 03                	je     0x40aa1c
40aa19:	83 c8 01             	or     $0x1,%eax
40aa1c:	f7 c1 00 01 00 00    	test   $0x100,%ecx
40aa22:	74 05                	je     0x40aa29
40aa24:	0d 00 00 08 00       	or     $0x80000,%eax
40aa29:	8b d1                	mov    %ecx,%edx
40aa2b:	bb 00 60 00 00       	mov    $0x6000,%ebx
40aa30:	23 d3                	and    %ebx,%edx
40aa32:	74 27                	je     0x40aa5b
40aa34:	81 fa 00 20 00 00    	cmp    $0x2000,%edx
40aa3a:	74 1a                	je     0x40aa56
40aa3c:	81 fa 00 40 00 00    	cmp    $0x4000,%edx
40aa42:	74 0b                	je     0x40aa4f
40aa44:	3b d3                	cmp    %ebx,%edx
40aa46:	75 13                	jne    0x40aa5b
40aa48:	0d 00 03 00 00       	or     $0x300,%eax