4016eb:	55                   	push   %ebp
4016ec:	8b ec                	mov    %esp,%ebp
4016ee:	8b 45 0c             	mov    0xc(%ebp),%eax
4016f1:	56                   	push   %esi
4016f2:	8b f1                	mov    %ecx,%esi
4016f4:	83 66 10 00          	andl   $0x0,0x10(%esi)
4016f8:	c7 46 14 0f 00 00 00 	movl   $0xf,0x14(%esi)
4016ff:	c6 06 00             	movb   $0x0,(%esi)
401702:	39 45 08             	cmp    %eax,0x8(%ebp)
401705:	74 0c                	je     0x401713
401707:	2b 45 08             	sub    0x8(%ebp),%eax
40170a:	50                   	push   %eax
40170b:	ff 75 08             	push   0x8(%ebp)
40170e:	e8 97 e0 01 00       	call   0x41f7aa
401713:	8b c6                	mov    %esi,%eax
401715:	5e                   	pop    %esi
401716:	5d                   	pop    %ebp
401717:	c2 0c 00             	ret    $0xc
40171a:	55                   	push   %ebp
40171b:	8b ec                	mov    %esp,%ebp
40171d:	56                   	push   %esi
40171e:	8b f1                	mov    %ecx,%esi
401720:	33 c0                	xor    %eax,%eax
401722:	83 66 10 00          	andl   $0x0,0x10(%esi)
401726:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
40172d:	66 89 06             	mov    %ax,(%esi)
401730:	8b 45 0c             	mov    0xc(%ebp),%eax
401733:	39 45 08             	cmp    %eax,0x8(%ebp)
401736:	74 0e                	je     0x401746
401738:	2b 45 08             	sub    0x8(%ebp),%eax
40173b:	d1 f8                	sar    $1,%eax
40173d:	50                   	push   %eax
40173e:	ff 75 08             	push   0x8(%ebp)
401741:	e8 5d e1 01 00       	call   0x41f8a3
401746:	8b c6                	mov    %esi,%eax
401748:	5e                   	pop    %esi
401749:	5d                   	pop    %ebp
40174a:	c2 0c 00             	ret    $0xc
40174d:	55                   	push   %ebp
40174e:	8b ec                	mov    %esp,%ebp
401750:	8b 45 08             	mov    0x8(%ebp),%eax
401753:	83 78 14 10          	cmpl   $0x10,0x14(%eax)
401757:	72 02                	jb     0x40175b
401759:	8b 00                	mov    (%eax),%eax
40175b:	89 01                	mov    %eax,(%ecx)
40175d:	8b c1                	mov    %ecx,%eax
40175f:	5d                   	pop    %ebp
401760:	c2 04 00             	ret    $0x4
401763:	55                   	push   %ebp
401764:	8b ec                	mov    %esp,%ebp
401766:	8b 45 08             	mov    0x8(%ebp),%eax
401769:	8b d0                	mov    %eax,%edx
40176b:	83 78 14 10          	cmpl   $0x10,0x14(%eax)
40176f:	72 02                	jb     0x401773
401771:	8b 10                	mov    (%eax),%edx
401773:	89 11                	mov    %edx,(%ecx)
401775:	8b 40 10             	mov    0x10(%eax),%eax
401778:	89 41 04             	mov    %eax,0x4(%ecx)
40177b:	8b c1                	mov    %ecx,%eax
40177d:	5d                   	pop    %ebp
40177e:	c2 04 00             	ret    $0x4
401781:	55                   	push   %ebp
401782:	8b ec                	mov    %esp,%ebp
401784:	8b 45 08             	mov    0x8(%ebp),%eax
401787:	8b d0                	mov    %eax,%edx
401789:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
40178d:	72 02                	jb     0x401791
40178f:	8b 10                	mov    (%eax),%edx
401791:	89 11                	mov    %edx,(%ecx)
401793:	8b 40 10             	mov    0x10(%eax),%eax
401796:	89 41 04             	mov    %eax,0x4(%ecx)
401799:	8b c1                	mov    %ecx,%eax
40179b:	5d                   	pop    %ebp
40179c:	c2 04 00             	ret    $0x4
40179f:	6a 08                	push   $0x8
4017a1:	b8 9c 9c 48 00       	mov    $0x489c9c,%eax
4017a6:	e8 9f e2 03 00       	call   0x43fa4a
4017ab:	8b f1                	mov    %ecx,%esi
4017ad:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4017b4:	33 db                	xor    %ebx,%ebx
4017b6:	88 5d f0             	mov    %bl,-0x10(%ebp)
4017b9:	8d 45 70             	lea    0x70(%ebp),%eax
4017bc:	ff 75 f0             	push   -0x10(%ebp)
4017bf:	89 1e                	mov    %ebx,(%esi)
4017c1:	83 ec 68             	sub    $0x68,%esp
4017c4:	89 5e 04             	mov    %ebx,0x4(%esi)
4017c7:	8b cc                	mov    %esp,%ecx
4017c9:	89 65 f0             	mov    %esp,-0x10(%ebp)
4017cc:	89 5e 08             	mov    %ebx,0x8(%esi)
4017cf:	50                   	push   %eax
4017d0:	e8 bf a0 00 00       	call   0x40b894
4017d5:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
4017d9:	83 ec 68             	sub    $0x68,%esp
4017dc:	8d 45 08             	lea    0x8(%ebp),%eax
4017df:	89 65 ec             	mov    %esp,-0x14(%ebp)
4017e2:	8b cc                	mov    %esp,%ecx
4017e4:	50                   	push   %eax
4017e5:	e8 aa a0 00 00       	call   0x40b894
4017ea:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
4017ee:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
4017f2:	8b ce                	mov    %esi,%ecx
4017f4:	e8 a4 34 00 00       	call   0x404c9d
4017f9:	88 5d fc             	mov    %bl,-0x4(%ebp)
4017fc:	8d 4d 08             	lea    0x8(%ebp),%ecx
4017ff:	e8 c9 cb 00 00       	call   0x40e3cd
401804:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
401808:	8d 4d 70             	lea    0x70(%ebp),%ecx
40180b:	e8 bd cb 00 00       	call   0x40e3cd
401810:	8b c6                	mov    %esi,%eax
401812:	e8 fc e1 03 00       	call   0x43fa13
401817:	c2 d4 00             	ret    $0xd4
40181a:	55                   	push   %ebp
40181b:	8b ec                	mov    %esp,%ebp
40181d:	83 ec 0c             	sub    $0xc,%esp
401820:	56                   	push   %esi
401821:	ff 75 08             	push   0x8(%ebp)
401824:	8b f1                	mov    %ecx,%esi
401826:	83 26 00             	andl   $0x0,(%esi)
401829:	83 66 04 00          	andl   $0x0,0x4(%esi)
40182d:	e8 99 18 00 00       	call   0x4030cb
401832:	84 c0                	test   %al,%al
401834:	74 07                	je     0x40183d
401836:	8b c6                	mov    %esi,%eax
401838:	5e                   	pop    %esi
401839:	c9                   	leave
40183a:	c2 04 00             	ret    $0x4
40183d:	8d 4d f4             	lea    -0xc(%ebp),%ecx
401840:	e8 38 b5 00 00       	call   0x40cd7d
401845:	68 98 16 4b 00       	push   $0x4b1698
40184a:	8d 45 f4             	lea    -0xc(%ebp),%eax
40184d:	50                   	push   %eax
40184e:	e8 6f 29 04 00       	call   0x4441c2
401853:	cc                   	int3
401854:	55                   	push   %ebp
401855:	8b ec                	mov    %esp,%ebp
401857:	6a ff                	push   $0xffffffff
401859:	68 bf 9c 48 00       	push   $0x489cbf
40185e:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
401864:	50                   	push   %eax
401865:	51                   	push   %ecx
401866:	51                   	push   %ecx
401867:	56                   	push   %esi
401868:	a1 94 80 4b 00       	mov    0x4b8094,%eax
40186d:	33 c5                	xor    %ebp,%eax
40186f:	50                   	push   %eax
401870:	8d 45 f4             	lea    -0xc(%ebp),%eax
401873:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
401879:	8b f1                	mov    %ecx,%esi
40187b:	ff 75 08             	push   0x8(%ebp)
40187e:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
401882:	8d 4d ec             	lea    -0x14(%ebp),%ecx
401885:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
401889:	e8 f8 52 00 00       	call   0x406b86
40188e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
401892:	8b 06                	mov    (%esi),%eax
401894:	8b 4d ec             	mov    -0x14(%ebp),%ecx
401897:	89 0e                	mov    %ecx,(%esi)
401899:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40189c:	89 45 ec             	mov    %eax,-0x14(%ebp)
40189f:	8b 46 04             	mov    0x4(%esi),%eax
4018a2:	89 45 f0             	mov    %eax,-0x10(%ebp)
4018a5:	89 4e 04             	mov    %ecx,0x4(%esi)
4018a8:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
4018ac:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4018af:	e8 d3 64 01 00       	call   0x417d87
4018b4:	8b c6                	mov    %esi,%eax
4018b6:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4018b9:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4018c0:	59                   	pop    %ecx
4018c1:	5e                   	pop    %esi
4018c2:	c9                   	leave
4018c3:	c2 04 00             	ret    $0x4
4018c6:	6a 20                	push   $0x20
4018c8:	b8 e2 9c 48 00       	mov    $0x489ce2,%eax
4018cd:	e8 e3 e1 03 00       	call   0x43fab5
4018d2:	8b 5d 08             	mov    0x8(%ebp),%ebx
4018d5:	33 ff                	xor    %edi,%edi
4018d7:	8b c7                	mov    %edi,%eax
4018d9:	89 45 e8             	mov    %eax,-0x18(%ebp)
4018dc:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4018df:	8d 51 02             	lea    0x2(%ecx),%edx
4018e2:	66 8b 01             	mov    (%ecx),%ax
4018e5:	83 c1 02             	add    $0x2,%ecx
4018e8:	66 3b c7             	cmp    %di,%ax
4018eb:	75 f5                	jne    0x4018e2
4018ed:	2b ca                	sub    %edx,%ecx
4018ef:	d1 f9                	sar    $1,%ecx
4018f1:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
4018f4:	8b 03                	mov    (%ebx),%eax
4018f6:	8b 40 04             	mov    0x4(%eax),%eax
4018f9:	8b 74 18 20          	mov    0x20(%eax,%ebx,1),%esi
4018fd:	8b 44 18 24          	mov    0x24(%eax,%ebx,1),%eax
401901:	3b c7                	cmp    %edi,%eax
401903:	7c 16                	jl     0x40191b
401905:	7f 0e                	jg     0x401915
401907:	3b f7                	cmp    %edi,%esi
401909:	76 10                	jbe    0x40191b
40190b:	3b c7                	cmp    %edi,%eax
40190d:	7c 0c                	jl     0x40191b
40190f:	7f 04                	jg     0x401915
401911:	3b f1                	cmp    %ecx,%esi
401913:	76 06                	jbe    0x40191b
401915:	2b f1                	sub    %ecx,%esi
401917:	1b c7                	sbb    %edi,%eax
401919:	eb 0e                	jmp    0x401929
40191b:	0f 57 c0             	xorps  %xmm0,%xmm0
40191e:	66 0f 13 45 dc       	movlpd %xmm0,-0x24(%ebp)
401923:	8b 45 e0             	mov    -0x20(%ebp),%eax
401926:	8b 75 dc             	mov    -0x24(%ebp),%esi
401929:	89 45 ec             	mov    %eax,-0x14(%ebp)
40192c:	53                   	push   %ebx
40192d:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
401930:	e8 b4 b7 00 00       	call   0x40d0e9
401935:	89 7d fc             	mov    %edi,-0x4(%ebp)
401938:	80 7d d8 00          	cmpb   $0x0,-0x28(%ebp)
40193c:	75 08                	jne    0x401946
40193e:	6a 04                	push   $0x4
401940:	5a                   	pop    %edx
401941:	e9 0e 01 00 00       	jmp    0x401a54
401946:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40194a:	8b 0b                	mov    (%ebx),%ecx
40194c:	8b 41 04             	mov    0x4(%ecx),%eax
40194f:	8b 44 18 14          	mov    0x14(%eax,%ebx,1),%eax
401953:	25 c0 01 00 00       	and    $0x1c0,%eax
401958:	83 f8 40             	cmp    $0x40,%eax
40195b:	74 44                	je     0x4019a1
40195d:	8b 45 ec             	mov    -0x14(%ebp),%eax
401960:	3b c7                	cmp    %edi,%eax
401962:	7c 3b                	jl     0x40199f
401964:	7f 04                	jg     0x40196a
401966:	3b f7                	cmp    %edi,%esi
401968:	76 35                	jbe    0x40199f
40196a:	8b 03                	mov    (%ebx),%eax
40196c:	8b 40 04             	mov    0x4(%eax),%eax
40196f:	8b 4c 18 38          	mov    0x38(%eax,%ebx,1),%ecx
401973:	0f b7 44 18 40       	movzwl 0x40(%eax,%ebx,1),%eax
401978:	50                   	push   %eax
401979:	e8 5b 13 02 00       	call   0x422cd9
40197e:	0f b7 c0             	movzwl %ax,%eax
401981:	b9 ff ff 00 00       	mov    $0xffff,%ecx
401986:	66 3b c8             	cmp    %ax,%cx
401989:	74 7a                	je     0x401a05
40198b:	83 c6 ff             	add    $0xffffffff,%esi
40198e:	89 75 dc             	mov    %esi,-0x24(%ebp)
401991:	8b 45 ec             	mov    -0x14(%ebp),%eax
401994:	83 d0 ff             	adc    $0xffffffff,%eax
401997:	89 45 ec             	mov    %eax,-0x14(%ebp)
40199a:	89 45 e0             	mov    %eax,-0x20(%ebp)
40199d:	eb c1                	jmp    0x401960
40199f:	8b 0b                	mov    (%ebx),%ecx
4019a1:	8b 41 04             	mov    0x4(%ecx),%eax
4019a4:	8b 4c 18 38          	mov    0x38(%eax,%ebx,1),%ecx
4019a8:	8b 01                	mov    (%ecx),%eax
4019aa:	8b 40 24             	mov    0x24(%eax),%eax
4019ad:	57                   	push   %edi
4019ae:	ff 75 e4             	push   -0x1c(%ebp)
4019b1:	ff 75 0c             	push   0xc(%ebp)
4019b4:	ff d0                	call   *%eax
4019b6:	3b 45 e4             	cmp    -0x1c(%ebp),%eax
4019b9:	75 4a                	jne    0x401a05
4019bb:	3b d7                	cmp    %edi,%edx
4019bd:	75 46                	jne    0x401a05
4019bf:	8b 45 ec             	mov    -0x14(%ebp),%eax
4019c2:	3b c7                	cmp    %edi,%eax
4019c4:	7c 3b                	jl     0x401a01
4019c6:	7f 04                	jg     0x4019cc
4019c8:	3b f7                	cmp    %edi,%esi
4019ca:	76 35                	jbe    0x401a01
4019cc:	8b 03                	mov    (%ebx),%eax
4019ce:	8b 40 04             	mov    0x4(%eax),%eax
4019d1:	8b 4c 18 38          	mov    0x38(%eax,%ebx,1),%ecx
4019d5:	0f b7 44 18 40       	movzwl 0x40(%eax,%ebx,1),%eax
4019da:	50                   	push   %eax
4019db:	e8 f9 12 02 00       	call   0x422cd9
4019e0:	0f b7 c0             	movzwl %ax,%eax
4019e3:	b9 ff ff 00 00       	mov    $0xffff,%ecx
4019e8:	66 3b c8             	cmp    %ax,%cx
4019eb:	74 18                	je     0x401a05
4019ed:	83 c6 ff             	add    $0xffffffff,%esi
4019f0:	89 75 dc             	mov    %esi,-0x24(%ebp)
4019f3:	8b 45 ec             	mov    -0x14(%ebp),%eax
4019f6:	83 d0 ff             	adc    $0xffffffff,%eax
4019f9:	89 45 ec             	mov    %eax,-0x14(%ebp)
4019fc:	89 45 e0             	mov    %eax,-0x20(%ebp)
4019ff:	eb c1                	jmp    0x4019c2
401a01:	8b d7                	mov    %edi,%edx
401a03:	eb 06                	jmp    0x401a0b
401a05:	6a 04                	push   $0x4
401a07:	5a                   	pop    %edx
401a08:	89 55 e8             	mov    %edx,-0x18(%ebp)
401a0b:	8b 03                	mov    (%ebx),%eax
401a0d:	8b 40 04             	mov    0x4(%eax),%eax
401a10:	89 7c 18 20          	mov    %edi,0x20(%eax,%ebx,1)
401a14:	89 7c 18 24          	mov    %edi,0x24(%eax,%ebx,1)
401a18:	89 7d fc             	mov    %edi,-0x4(%ebp)
401a1b:	eb 37                	jmp    0x401a54
401a1d:	8b 4d 08             	mov    0x8(%ebp),%ecx
401a20:	8b 01                	mov    (%ecx),%eax
401a22:	8b 70 04             	mov    0x4(%eax),%esi
401a25:	03 f1                	add    %ecx,%esi
401a27:	8b 56 0c             	mov    0xc(%esi),%edx
401a2a:	83 ca 04             	or     $0x4,%edx
401a2d:	6a 01                	push   $0x1
401a2f:	8b c2                	mov    %edx,%eax
401a31:	83 c8 04             	or     $0x4,%eax
401a34:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
401a38:	0f 44 d0             	cmove  %eax,%edx
401a3b:	52                   	push   %edx
401a3c:	8b ce                	mov    %esi,%ecx
401a3e:	e8 06 df 01 00       	call   0x41f949
401a43:	b8 49 1a 40 00       	mov    $0x401a49,%eax
401a48:	c3                   	ret
401a49:	33 ff                	xor    %edi,%edi
401a4b:	89 7d fc             	mov    %edi,-0x4(%ebp)
401a4e:	8b 5d 08             	mov    0x8(%ebp),%ebx
401a51:	8b 55 e8             	mov    -0x18(%ebp),%edx
401a54:	8b 03                	mov    (%ebx),%eax
401a56:	8b 48 04             	mov    0x4(%eax),%ecx
401a59:	03 cb                	add    %ebx,%ecx
401a5b:	8b 71 0c             	mov    0xc(%ecx),%esi
401a5e:	0b f2                	or     %edx,%esi
401a60:	57                   	push   %edi
401a61:	8b d6                	mov    %esi,%edx
401a63:	83 ca 04             	or     $0x4,%edx
401a66:	39 79 38             	cmp    %edi,0x38(%ecx)
401a69:	0f 44 f2             	cmove  %edx,%esi
401a6c:	56                   	push   %esi
401a6d:	e8 d7 de 01 00       	call   0x41f949
401a72:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
401a76:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
401a79:	e8 dc da 00 00       	call   0x40f55a
401a7e:	8b c3                	mov    %ebx,%eax
401a80:	e8 8e df 03 00       	call   0x43fa13
401a85:	c3                   	ret
401a86:	55                   	push   %ebp
401a87:	8b ec                	mov    %esp,%ebp
401a89:	8b 45 0c             	mov    0xc(%ebp),%eax
401a8c:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
401a90:	8b 48 10             	mov    0x10(%eax),%ecx
401a93:	72 02                	jb     0x401a97
401a95:	8b 00                	mov    (%eax),%eax
401a97:	51                   	push   %ecx
401a98:	50                   	push   %eax
401a99:	ff 75 08             	push   0x8(%ebp)
401a9c:	e8 38 26 00 00       	call   0x4040d9
401aa1:	83 c4 0c             	add    $0xc,%esp
401aa4:	5d                   	pop    %ebp
401aa5:	c3                   	ret
401aa6:	55                   	push   %ebp
401aa7:	8b ec                	mov    %esp,%ebp