40272d:	24 30                	and    $0x30,%al
40272f:	32 00                	xor    (%eax),%al
402731:	00 00                	add    %al,(%eax)
402733:	00 20                	add    %ah,(%eax)
402735:	00 00                	add    %al,(%eax)
402737:	00 49 ae             	add    %cl,-0x52(%ecx)
40273a:	b0 98                	mov    $0x98,%al
40273c:	5d                   	pop    %ebp
40273d:	58                   	pop    %eax
40273e:	25 1d f3 67 b8       	and    $0xb867f31d,%eax
402743:	b4 ef                	mov    $0xef,%ah
402745:	2d f4 5c e4 cf       	sub    $0xcfe45cf4,%eax
40274a:	a9 0a cb 06 32       	test   $0x3206cb0a,%eax
40274f:	69 f4 f0 02 61 b7    	imul   $0xb76102f0,%esp,%esi
402755:	b8 87 a8 00 00       	mov    $0xa887,%eax
40275a:	00 00                	add    %al,(%eax)
40275c:	00 00                	add    %al,(%eax)
40275e:	00 00                	add    %al,(%eax)
402760:	8b ff                	mov    %edi,%edi
402762:	55                   	push   %ebp
402763:	8b ec                	mov    %esp,%ebp
402765:	33 c0                	xor    %eax,%eax
402767:	85 d2                	test   %edx,%edx
402769:	74 08                	je     0x402773
40276b:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
402771:	76 05                	jbe    0x402778
402773:	b8 57 00 07 80       	mov    $0x80070057,%eax
402778:	85 c0                	test   %eax,%eax
40277a:	78 0c                	js     0x402788
40277c:	51                   	push   %ecx
40277d:	ff 75 08             	push   0x8(%ebp)
402780:	51                   	push   %ecx
402781:	e8 e4 00 00 00       	call   0x40286a
402786:	eb 09                	jmp    0x402791
402788:	85 d2                	test   %edx,%edx
40278a:	74 05                	je     0x402791
40278c:	33 d2                	xor    %edx,%edx
40278e:	66 89 11             	mov    %dx,(%ecx)
402791:	5d                   	pop    %ebp
402792:	c2 04 00             	ret    $0x4
402795:	8b ff                	mov    %edi,%edi
402797:	55                   	push   %ebp
402798:	8b ec                	mov    %esp,%ebp
40279a:	53                   	push   %ebx
40279b:	56                   	push   %esi
40279c:	57                   	push   %edi
40279d:	33 ff                	xor    %edi,%edi
40279f:	bb 57 00 07 80       	mov    $0x80070057,%ebx
4027a4:	8b f7                	mov    %edi,%esi
4027a6:	85 d2                	test   %edx,%edx
4027a8:	74 08                	je     0x4027b2
4027aa:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
4027b0:	76 02                	jbe    0x4027b4
4027b2:	8b f3                	mov    %ebx,%esi
4027b4:	85 f6                	test   %esi,%esi
4027b6:	78 42                	js     0x4027fa
4027b8:	8b f2                	mov    %edx,%esi
4027ba:	8b c1                	mov    %ecx,%eax
4027bc:	85 d2                	test   %edx,%edx
4027be:	74 0d                	je     0x4027cd
4027c0:	66 39 38             	cmp    %di,(%eax)
4027c3:	74 08                	je     0x4027cd
4027c5:	83 c0 02             	add    $0x2,%eax
4027c8:	83 ee 01             	sub    $0x1,%esi
4027cb:	75 f3                	jne    0x4027c0
4027cd:	8b fe                	mov    %esi,%edi
4027cf:	8b c2                	mov    %edx,%eax
4027d1:	f7 de                	neg    %esi
4027d3:	1b f6                	sbb    %esi,%esi
4027d5:	2b c7                	sub    %edi,%eax
4027d7:	81 e6 a9 ff f8 7f    	and    $0x7ff8ffa9,%esi
4027dd:	03 f3                	add    %ebx,%esi
4027df:	f7 df                	neg    %edi
4027e1:	1b ff                	sbb    %edi,%edi
4027e3:	23 f8                	and    %eax,%edi
4027e5:	85 f6                	test   %esi,%esi
4027e7:	78 11                	js     0x4027fa
4027e9:	51                   	push   %ecx
4027ea:	ff 75 08             	push   0x8(%ebp)
4027ed:	2b d7                	sub    %edi,%edx
4027ef:	51                   	push   %ecx
4027f0:	8d 0c 79             	lea    (%ecx,%edi,2),%ecx
4027f3:	e8 72 00 00 00       	call   0x40286a
4027f8:	8b f0                	mov    %eax,%esi
4027fa:	5f                   	pop    %edi
4027fb:	8b c6                	mov    %esi,%eax
4027fd:	5e                   	pop    %esi
4027fe:	5b                   	pop    %ebx
4027ff:	5d                   	pop    %ebp
402800:	c2 04 00             	ret    $0x4
402803:	8b ff                	mov    %edi,%edi
402805:	55                   	push   %ebp
402806:	8b ec                	mov    %esp,%ebp
402808:	8b 45 0c             	mov    0xc(%ebp),%eax
40280b:	56                   	push   %esi
40280c:	33 f6                	xor    %esi,%esi
40280e:	85 c0                	test   %eax,%eax
402810:	74 07                	je     0x402819
402812:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
402817:	76 05                	jbe    0x40281e
402819:	be 57 00 07 80       	mov    $0x80070057,%esi
40281e:	85 f6                	test   %esi,%esi
402820:	78 37                	js     0x402859
402822:	53                   	push   %ebx
402823:	8b 5d 08             	mov    0x8(%ebp),%ebx
402826:	33 f6                	xor    %esi,%esi
402828:	57                   	push   %edi
402829:	8d 78 ff             	lea    -0x1(%eax),%edi
40282c:	8d 45 14             	lea    0x14(%ebp),%eax
40282f:	50                   	push   %eax
402830:	ff 75 10             	push   0x10(%ebp)
402833:	57                   	push   %edi
402834:	53                   	push   %ebx
402835:	ff 15 e0 f1 40 00    	call   *0x40f1e0
40283b:	83 c4 10             	add    $0x10,%esp
40283e:	85 c0                	test   %eax,%eax
402840:	78 08                	js     0x40284a
402842:	3b c7                	cmp    %edi,%eax
402844:	77 04                	ja     0x40284a
402846:	75 0d                	jne    0x402855
402848:	eb 05                	jmp    0x40284f
40284a:	be 7a 00 07 80       	mov    $0x8007007a,%esi
40284f:	33 c0                	xor    %eax,%eax
402851:	66 89 04 7b          	mov    %ax,(%ebx,%edi,2)
402855:	5f                   	pop    %edi
402856:	5b                   	pop    %ebx
402857:	eb 0c                	jmp    0x402865
402859:	85 c0                	test   %eax,%eax
40285b:	74 08                	je     0x402865
40285d:	8b 4d 08             	mov    0x8(%ebp),%ecx
402860:	33 c0                	xor    %eax,%eax
402862:	66 89 01             	mov    %ax,(%ecx)
402865:	8b c6                	mov    %esi,%eax
402867:	5e                   	pop    %esi
402868:	5d                   	pop    %ebp
402869:	c3                   	ret
40286a:	8b ff                	mov    %edi,%edi
40286c:	55                   	push   %ebp
40286d:	8b ec                	mov    %esp,%ebp
40286f:	85 d2                	test   %edx,%edx
402871:	74 2b                	je     0x40289e
402873:	8b 45 0c             	mov    0xc(%ebp),%eax
402876:	56                   	push   %esi
402877:	57                   	push   %edi
402878:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
40287d:	2b c1                	sub    %ecx,%eax
40287f:	85 f6                	test   %esi,%esi
402881:	74 15                	je     0x402898
402883:	0f b7 3c 08          	movzwl (%eax,%ecx,1),%edi
402887:	66 85 ff             	test   %di,%di
40288a:	74 0c                	je     0x402898
40288c:	66 89 39             	mov    %di,(%ecx)
40288f:	83 c1 02             	add    $0x2,%ecx
402892:	4e                   	dec    %esi
402893:	83 ea 01             	sub    $0x1,%edx
402896:	75 e7                	jne    0x40287f
402898:	5f                   	pop    %edi
402899:	5e                   	pop    %esi
40289a:	85 d2                	test   %edx,%edx
40289c:	75 03                	jne    0x4028a1
40289e:	83 e9 02             	sub    $0x2,%ecx
4028a1:	f7 da                	neg    %edx
4028a3:	1b d2                	sbb    %edx,%edx
4028a5:	81 e2 86 ff f8 7f    	and    $0x7ff8ff86,%edx
4028ab:	33 c0                	xor    %eax,%eax
4028ad:	66 89 01             	mov    %ax,(%ecx)
4028b0:	8d 82 7a 00 07 80    	lea    -0x7ff8ff86(%edx),%eax
4028b6:	5d                   	pop    %ebp
4028b7:	c2 0c 00             	ret    $0xc
4028ba:	8b ff                	mov    %edi,%edi
4028bc:	55                   	push   %ebp
4028bd:	8b ec                	mov    %esp,%ebp
4028bf:	51                   	push   %ecx
4028c0:	51                   	push   %ecx
4028c1:	56                   	push   %esi
4028c2:	68 00 80 00 00       	push   $0x8000
4028c7:	ff 15 a4 f0 40 00    	call   *0x40f0a4
4028cd:	8b f0                	mov    %eax,%esi
4028cf:	85 f6                	test   %esi,%esi
4028d1:	0f 84 92 00 00 00    	je     0x402969
4028d7:	57                   	push   %edi
4028d8:	8d 45 0c             	lea    0xc(%ebp),%eax
4028db:	50                   	push   %eax
4028dc:	ff 75 08             	push   0x8(%ebp)
4028df:	68 00 40 00 00       	push   $0x4000
4028e4:	56                   	push   %esi
4028e5:	ff 15 c4 f1 40 00    	call   *0x40f1c4
4028eb:	83 c4 10             	add    $0x10,%esp
4028ee:	33 ff                	xor    %edi,%edi
4028f0:	83 3d a0 e3 40 00 02 	cmpl   $0x2,0x40e3a0
4028f7:	75 29                	jne    0x402922
4028f9:	8b ce                	mov    %esi,%ecx
4028fb:	8d 51 02             	lea    0x2(%ecx),%edx
4028fe:	66 8b 01             	mov    (%ecx),%ax
402901:	83 c1 02             	add    $0x2,%ecx
402904:	66 3b c7             	cmp    %di,%ax
402907:	75 f5                	jne    0x4028fe
402909:	57                   	push   %edi
40290a:	2b ca                	sub    %edx,%ecx
40290c:	8d 45 f8             	lea    -0x8(%ebp),%eax
40290f:	50                   	push   %eax
402910:	d1 f9                	sar    $1,%ecx
402912:	51                   	push   %ecx
402913:	56                   	push   %esi
402914:	ff 35 88 a3 40 00    	push   0x40a388
40291a:	ff 15 d4 f0 40 00    	call   *0x40f0d4
402920:	eb 3f                	jmp    0x402961
402922:	51                   	push   %ecx
402923:	8d 55 fc             	lea    -0x4(%ebp),%edx
402926:	89 7d fc             	mov    %edi,-0x4(%ebp)
402929:	8b ce                	mov    %esi,%ecx
40292b:	e8 a2 06 00 00       	call   0x402fd2
402930:	85 c0                	test   %eax,%eax
402932:	75 2d                	jne    0x402961
402934:	8b 4d fc             	mov    -0x4(%ebp),%ecx
402937:	8d 51 01             	lea    0x1(%ecx),%edx
40293a:	8a 01                	mov    (%ecx),%al
40293c:	41                   	inc    %ecx
40293d:	84 c0                	test   %al,%al
40293f:	75 f9                	jne    0x40293a
402941:	57                   	push   %edi
402942:	8d 45 f8             	lea    -0x8(%ebp),%eax
402945:	2b ca                	sub    %edx,%ecx
402947:	50                   	push   %eax
402948:	51                   	push   %ecx
402949:	ff 75 fc             	push   -0x4(%ebp)
40294c:	ff 35 88 a3 40 00    	push   0x40a388
402952:	ff 15 ec f0 40 00    	call   *0x40f0ec
402958:	ff 75 fc             	push   -0x4(%ebp)
40295b:	ff 15 b0 f0 40 00    	call   *0x40f0b0
402961:	56                   	push   %esi
402962:	ff 15 b0 f0 40 00    	call   *0x40f0b0
402968:	5f                   	pop    %edi
402969:	5e                   	pop    %esi
40296a:	c9                   	leave
40296b:	c3                   	ret
40296c:	8b ff                	mov    %edi,%edi
40296e:	55                   	push   %ebp
40296f:	8b ec                	mov    %esp,%ebp
402971:	56                   	push   %esi
402972:	ff 75 08             	push   0x8(%ebp)
402975:	8b f2                	mov    %edx,%esi
402977:	56                   	push   %esi
402978:	51                   	push   %ecx
402979:	6a 00                	push   $0x0
40297b:	ff 15 20 f1 40 00    	call   *0x40f120
402981:	85 c0                	test   %eax,%eax
402983:	75 03                	jne    0x402988
402985:	66 89 06             	mov    %ax,(%esi)
402988:	8b c6                	mov    %esi,%eax
40298a:	5e                   	pop    %esi
40298b:	5d                   	pop    %ebp
40298c:	c2 04 00             	ret    $0x4
40298f:	8b ff                	mov    %edi,%edi
402991:	55                   	push   %ebp
402992:	8b ec                	mov    %esp,%ebp
402994:	51                   	push   %ecx
402995:	51                   	push   %ecx
402996:	56                   	push   %esi
402997:	68 00 08 00 00       	push   $0x800
40299c:	ff 15 a4 f0 40 00    	call   *0x40f0a4
4029a2:	8b f0                	mov    %eax,%esi
4029a4:	85 f6                	test   %esi,%esi
4029a6:	0f 84 b0 00 00 00    	je     0x402a5c
4029ac:	53                   	push   %ebx
4029ad:	68 00 02 00 00       	push   $0x200
4029b2:	56                   	push   %esi
4029b3:	ff 75 08             	push   0x8(%ebp)
4029b6:	33 db                	xor    %ebx,%ebx
4029b8:	53                   	push   %ebx
4029b9:	ff 15 20 f1 40 00    	call   *0x40f120
4029bf:	85 c0                	test   %eax,%eax
4029c1:	0f 84 8d 00 00 00    	je     0x402a54
4029c7:	57                   	push   %edi
4029c8:	8d 45 0c             	lea    0xc(%ebp),%eax
4029cb:	50                   	push   %eax
4029cc:	56                   	push   %esi
4029cd:	8d be 00 04 00 00    	lea    0x400(%esi),%edi
4029d3:	68 00 02 00 00       	push   $0x200
4029d8:	57                   	push   %edi
4029d9:	ff 15 c4 f1 40 00    	call   *0x40f1c4
4029df:	83 c4 10             	add    $0x10,%esp
4029e2:	83 3d a0 e3 40 00 02 	cmpl   $0x2,0x40e3a0
4029e9:	75 29                	jne    0x402a14
4029eb:	8b cf                	mov    %edi,%ecx
4029ed:	8d 51 02             	lea    0x2(%ecx),%edx
4029f0:	66 8b 01             	mov    (%ecx),%ax
4029f3:	83 c1 02             	add    $0x2,%ecx
4029f6:	66 3b c3             	cmp    %bx,%ax
4029f9:	75 f5                	jne    0x4029f0
4029fb:	53                   	push   %ebx
4029fc:	2b ca                	sub    %edx,%ecx
4029fe:	8d 45 f8             	lea    -0x8(%ebp),%eax
402a01:	50                   	push   %eax
402a02:	d1 f9                	sar    $1,%ecx
402a04:	51                   	push   %ecx
402a05:	57                   	push   %edi
402a06:	ff 35 88 a3 40 00    	push   0x40a388
402a0c:	ff 15 d4 f0 40 00    	call   *0x40f0d4
402a12:	eb 3f                	jmp    0x402a53
402a14:	51                   	push   %ecx
402a15:	8d 55 fc             	lea    -0x4(%ebp),%edx
402a18:	89 5d fc             	mov    %ebx,-0x4(%ebp)
402a1b:	8b cf                	mov    %edi,%ecx
402a1d:	e8 b0 05 00 00       	call   0x402fd2
402a22:	85 c0                	test   %eax,%eax
402a24:	75 2d                	jne    0x402a53
402a26:	8b 4d fc             	mov    -0x4(%ebp),%ecx
402a29:	8d 51 01             	lea    0x1(%ecx),%edx
402a2c:	8a 01                	mov    (%ecx),%al
402a2e:	41                   	inc    %ecx
402a2f:	84 c0                	test   %al,%al
402a31:	75 f9                	jne    0x402a2c
402a33:	53                   	push   %ebx
402a34:	8d 45 f8             	lea    -0x8(%ebp),%eax
402a37:	2b ca                	sub    %edx,%ecx
402a39:	50                   	push   %eax
402a3a:	51                   	push   %ecx
402a3b:	ff 75 fc             	push   -0x4(%ebp)
402a3e:	ff 35 88 a3 40 00    	push   0x40a388
402a44:	ff 15 ec f0 40 00    	call   *0x40f0ec
402a4a:	ff 75 fc             	push   -0x4(%ebp)
402a4d:	ff 15 b0 f0 40 00    	call   *0x40f0b0
402a53:	5f                   	pop    %edi
402a54:	56                   	push   %esi
402a55:	ff 15 b0 f0 40 00    	call   *0x40f0b0
402a5b:	5b                   	pop    %ebx
402a5c:	5e                   	pop    %esi
402a5d:	c9                   	leave
402a5e:	c3                   	ret
402a5f:	8b ff                	mov    %edi,%edi
402a61:	53                   	push   %ebx
402a62:	56                   	push   %esi
402a63:	8b f1                	mov    %ecx,%esi
402a65:	85 f6                	test   %esi,%esi
402a67:	75 0d                	jne    0x402a76
402a69:	68 e8 03 00 00       	push   $0x3e8
402a6e:	e8 1c ff ff ff       	call   0x40298f
402a73:	59                   	pop    %ecx
402a74:	eb 05                	jmp    0x402a7b
402a76:	83 fe 01             	cmp    $0x1,%esi
402a79:	75 0b                	jne    0x402a86
402a7b:	68 e9 03 00 00       	push   $0x3e9
402a80:	e8 0a ff ff ff       	call   0x40298f
402a85:	59                   	pop    %ecx
402a86:	85 f6                	test   %esi,%esi
402a88:	74 05                	je     0x402a8f
402a8a:	83 fe 02             	cmp    $0x2,%esi
402a8d:	75 0b                	jne    0x402a9a
402a8f:	68 ea 03 00 00       	push   $0x3ea