40178f:	55                   	push   %ebp
401790:	83 c4 e8             	add    $0xffffffe8,%esp
401793:	8b d9                	mov    %ecx,%ebx
401795:	89 14 24             	mov    %edx,(%esp)
401798:	8d 74 24 08          	lea    0x8(%esp),%esi
40179c:	8d 7c 24 04          	lea    0x4(%esp),%edi
4017a0:	8d 6c 24 0c          	lea    0xc(%esp),%ebp
4017a4:	8b d0                	mov    %eax,%edx
4017a6:	8b ca                	mov    %edx,%ecx
4017a8:	81 e1 00 f0 ff ff    	and    $0xfffff000,%ecx
4017ae:	89 4c 24 10          	mov    %ecx,0x10(%esp)
4017b2:	03 14 24             	add    (%esp),%edx
4017b5:	81 c2 ff 0f 00 00    	add    $0xfff,%edx
4017bb:	81 e2 00 f0 ff ff    	and    $0xfffff000,%edx
4017c1:	89 54 24 14          	mov    %edx,0x14(%esp)
4017c5:	8b 44 24 10          	mov    0x10(%esp),%eax
4017c9:	89 03                	mov    %eax,(%ebx)
4017cb:	8b 44 24 14          	mov    0x14(%esp),%eax
4017cf:	2b 44 24 10          	sub    0x10(%esp),%eax
4017d3:	89 43 04             	mov    %eax,0x4(%ebx)
4017d6:	a1 e4 15 46 00       	mov    0x4615e4,%eax
4017db:	89 07                	mov    %eax,(%edi)
4017dd:	eb 5b                	jmp    0x40183a
4017df:	8b 07                	mov    (%edi),%eax
4017e1:	8b 40 08             	mov    0x8(%eax),%eax
4017e4:	89 06                	mov    %eax,(%esi)
4017e6:	8b 07                	mov    (%edi),%eax
4017e8:	8b 40 0c             	mov    0xc(%eax),%eax
4017eb:	03 06                	add    (%esi),%eax
4017ed:	89 45 00             	mov    %eax,0x0(%ebp)
4017f0:	8b 06                	mov    (%esi),%eax
4017f2:	3b 44 24 10          	cmp    0x10(%esp),%eax
4017f6:	73 06                	jae    0x4017fe
4017f8:	8b 44 24 10          	mov    0x10(%esp),%eax
4017fc:	89 06                	mov    %eax,(%esi)
4017fe:	8b 45 00             	mov    0x0(%ebp),%eax
401801:	3b 44 24 14          	cmp    0x14(%esp),%eax
401805:	76 07                	jbe    0x40180e
401807:	8b 44 24 14          	mov    0x14(%esp),%eax
40180b:	89 45 00             	mov    %eax,0x0(%ebp)
40180e:	8b 06                	mov    (%esi),%eax
401810:	3b 45 00             	cmp    0x0(%ebp),%eax
401813:	73 1f                	jae    0x401834
401815:	6a 04                	push   $0x4
401817:	68 00 10 00 00       	push   $0x1000
40181c:	8b 45 00             	mov    0x0(%ebp),%eax
40181f:	2b 06                	sub    (%esi),%eax
401821:	50                   	push   %eax
401822:	8b 06                	mov    (%esi),%eax
401824:	50                   	push   %eax
401825:	e8 26 fb ff ff       	call   0x401350
40182a:	85 c0                	test   %eax,%eax
40182c:	75 06                	jne    0x401834
40182e:	33 c0                	xor    %eax,%eax
401830:	89 03                	mov    %eax,(%ebx)
401832:	eb 0f                	jmp    0x401843
401834:	8b 07                	mov    (%edi),%eax
401836:	8b 00                	mov    (%eax),%eax
401838:	89 07                	mov    %eax,(%edi)
40183a:	b8 e4 15 46 00       	mov    $0x4615e4,%eax
40183f:	3b 07                	cmp    (%edi),%eax
401841:	75 9c                	jne    0x4017df
401843:	83 c4 18             	add    $0x18,%esp
401846:	5d                   	pop    %ebp
401847:	5f                   	pop    %edi
401848:	5e                   	pop    %esi
401849:	5b                   	pop    %ebx
40184a:	c3                   	ret
40184b:	90                   	nop
40184c:	53                   	push   %ebx
40184d:	56                   	push   %esi
40184e:	57                   	push   %edi
40184f:	55                   	push   %ebp
401850:	83 c4 e8             	add    $0xffffffe8,%esp
401853:	89 14 24             	mov    %edx,(%esp)
401856:	8d 74 24 08          	lea    0x8(%esp),%esi
40185a:	8d 7c 24 04          	lea    0x4(%esp),%edi
40185e:	8d 5c 24 0c          	lea    0xc(%esp),%ebx
401862:	8b d0                	mov    %eax,%edx
401864:	8b ea                	mov    %edx,%ebp
401866:	81 c5 ff 0f 00 00    	add    $0xfff,%ebp
40186c:	81 e5 00 f0 ff ff    	and    $0xfffff000,%ebp
401872:	89 6c 24 10          	mov    %ebp,0x10(%esp)
401876:	03 14 24             	add    (%esp),%edx
401879:	81 e2 00 f0 ff ff    	and    $0xfffff000,%edx
40187f:	89 54 24 14          	mov    %edx,0x14(%esp)
401883:	8b 44 24 10          	mov    0x10(%esp),%eax
401887:	89 01                	mov    %eax,(%ecx)
401889:	8b 44 24 14          	mov    0x14(%esp),%eax
40188d:	2b 44 24 10          	sub    0x10(%esp),%eax
401891:	89 41 04             	mov    %eax,0x4(%ecx)
401894:	a1 e4 15 46 00       	mov    0x4615e4,%eax
401899:	89 07                	mov    %eax,(%edi)
40189b:	eb 58                	jmp    0x4018f5
40189d:	8b 07                	mov    (%edi),%eax
40189f:	8b 40 08             	mov    0x8(%eax),%eax
4018a2:	89 06                	mov    %eax,(%esi)
4018a4:	8b 07                	mov    (%edi),%eax
4018a6:	8b 40 0c             	mov    0xc(%eax),%eax
4018a9:	03 06                	add    (%esi),%eax
4018ab:	89 03                	mov    %eax,(%ebx)
4018ad:	8b 06                	mov    (%esi),%eax
4018af:	3b 44 24 10          	cmp    0x10(%esp),%eax
4018b3:	73 06                	jae    0x4018bb
4018b5:	8b 44 24 10          	mov    0x10(%esp),%eax
4018b9:	89 06                	mov    %eax,(%esi)
4018bb:	8b 03                	mov    (%ebx),%eax
4018bd:	3b 44 24 14          	cmp    0x14(%esp),%eax
4018c1:	76 06                	jbe    0x4018c9
4018c3:	8b 44 24 14          	mov    0x14(%esp),%eax
4018c7:	89 03                	mov    %eax,(%ebx)
4018c9:	8b 06                	mov    (%esi),%eax
4018cb:	3b 03                	cmp    (%ebx),%eax
4018cd:	73 20                	jae    0x4018ef
4018cf:	68 00 40 00 00       	push   $0x4000
4018d4:	8b 03                	mov    (%ebx),%eax
4018d6:	2b 06                	sub    (%esi),%eax
4018d8:	50                   	push   %eax
4018d9:	8b 06                	mov    (%esi),%eax
4018db:	50                   	push   %eax
4018dc:	e8 77 fa ff ff       	call   0x401358
4018e1:	85 c0                	test   %eax,%eax
4018e3:	75 0a                	jne    0x4018ef
4018e5:	c7 05 c0 15 46 00 02 	movl   $0x2,0x4615c0
4018ec:	00 00 00
4018ef:	8b 07                	mov    (%edi),%eax
4018f1:	8b 00                	mov    (%eax),%eax
4018f3:	89 07                	mov    %eax,(%edi)
4018f5:	b8 e4 15 46 00       	mov    $0x4615e4,%eax
4018fa:	3b 07                	cmp    (%edi),%eax
4018fc:	75 9f                	jne    0x40189d
4018fe:	83 c4 18             	add    $0x18,%esp
401901:	5d                   	pop    %ebp
401902:	5f                   	pop    %edi
401903:	5e                   	pop    %esi
401904:	5b                   	pop    %ebx
401905:	c3                   	ret
401906:	8b c0                	mov    %eax,%eax
401908:	53                   	push   %ebx
401909:	56                   	push   %esi
40190a:	57                   	push   %edi
40190b:	55                   	push   %ebp
40190c:	83 c4 f4             	add    $0xfffffff4,%esp
40190f:	8b da                	mov    %edx,%ebx
401911:	8b f0                	mov    %eax,%esi
401913:	8b fc                	mov    %esp,%edi
401915:	bd f4 15 46 00       	mov    $0x4615f4,%ebp
40191a:	81 c6 ff 3f 00 00    	add    $0x3fff,%esi
401920:	81 e6 00 c0 ff ff    	and    $0xffffc000,%esi
401926:	8b 45 00             	mov    0x0(%ebp),%eax
401929:	89 07                	mov    %eax,(%edi)
40192b:	eb 41                	jmp    0x40196e
40192d:	8b 07                	mov    (%edi),%eax
40192f:	3b 70 0c             	cmp    0xc(%eax),%esi
401932:	7f 34                	jg     0x401968
401934:	8b cb                	mov    %ebx,%ecx
401936:	8b 07                	mov    (%edi),%eax
401938:	8b 40 08             	mov    0x8(%eax),%eax
40193b:	8b d6                	mov    %esi,%edx
40193d:	e8 4a fe ff ff       	call   0x40178c
401942:	83 3b 00             	cmpl   $0x0,(%ebx)
401945:	74 5f                	je     0x4019a6
401947:	8b 43 04             	mov    0x4(%ebx),%eax
40194a:	8b 17                	mov    (%edi),%edx
40194c:	01 42 08             	add    %eax,0x8(%edx)
40194f:	8b 43 04             	mov    0x4(%ebx),%eax
401952:	8b 17                	mov    (%edi),%edx
401954:	29 42 0c             	sub    %eax,0xc(%edx)
401957:	8b 07                	mov    (%edi),%eax
401959:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
40195d:	75 47                	jne    0x4019a6
40195f:	8b 07                	mov    (%edi),%eax
401961:	e8 02 fb ff ff       	call   0x401468
401966:	eb 3e                	jmp    0x4019a6
401968:	8b 07                	mov    (%edi),%eax
40196a:	8b 00                	mov    (%eax),%eax
40196c:	89 07                	mov    %eax,(%edi)
40196e:	3b 2f                	cmp    (%edi),%ebp
401970:	75 bb                	jne    0x40192d
401972:	8b d3                	mov    %ebx,%edx
401974:	8b c6                	mov    %esi,%eax
401976:	e8 6d fc ff ff       	call   0x4015e8
40197b:	83 3b 00             	cmpl   $0x0,(%ebx)
40197e:	74 26                	je     0x4019a6
401980:	8d 4c 24 04          	lea    0x4(%esp),%ecx
401984:	8b d3                	mov    %ebx,%edx
401986:	8b c5                	mov    %ebp,%eax
401988:	e8 0f fb ff ff       	call   0x40149c
40198d:	83 7c 24 04 00       	cmpl   $0x0,0x4(%esp)
401992:	75 92                	jne    0x401926
401994:	8d 4c 24 04          	lea    0x4(%esp),%ecx
401998:	8b 53 04             	mov    0x4(%ebx),%edx
40199b:	8b 03                	mov    (%ebx),%eax
40199d:	e8 22 fd ff ff       	call   0x4016c4
4019a2:	33 c0                	xor    %eax,%eax
4019a4:	89 03                	mov    %eax,(%ebx)
4019a6:	83 c4 0c             	add    $0xc,%esp
4019a9:	5d                   	pop    %ebp
4019aa:	5f                   	pop    %edi
4019ab:	5e                   	pop    %esi
4019ac:	5b                   	pop    %ebx
4019ad:	c3                   	ret
4019ae:	8b c0                	mov    %eax,%eax
4019b0:	53                   	push   %ebx
4019b1:	56                   	push   %esi
4019b2:	57                   	push   %edi
4019b3:	55                   	push   %ebp
4019b4:	83 c4 e8             	add    $0xffffffe8,%esp
4019b7:	89 0c 24             	mov    %ecx,(%esp)
4019ba:	8b fa                	mov    %edx,%edi
4019bc:	8b d8                	mov    %eax,%ebx
4019be:	8d 74 24 04          	lea    0x4(%esp),%esi
4019c2:	bd f4 15 46 00       	mov    $0x4615f4,%ebp
4019c7:	81 c7 ff 3f 00 00    	add    $0x3fff,%edi
4019cd:	81 e7 00 c0 ff ff    	and    $0xffffc000,%edi
4019d3:	8b 45 00             	mov    0x0(%ebp),%eax
4019d6:	89 06                	mov    %eax,(%esi)
4019d8:	eb 06                	jmp    0x4019e0
4019da:	8b 06                	mov    (%esi),%eax
4019dc:	8b 00                	mov    (%eax),%eax
4019de:	89 06                	mov    %eax,(%esi)
4019e0:	3b 2e                	cmp    (%esi),%ebp
4019e2:	74 07                	je     0x4019eb
4019e4:	8b 06                	mov    (%esi),%eax
4019e6:	3b 58 08             	cmp    0x8(%eax),%ebx
4019e9:	75 ef                	jne    0x4019da
4019eb:	8b 06                	mov    (%esi),%eax
4019ed:	3b 58 08             	cmp    0x8(%eax),%ebx
4019f0:	75 5f                	jne    0x401a51
4019f2:	8b 06                	mov    (%esi),%eax
4019f4:	3b 78 0c             	cmp    0xc(%eax),%edi
4019f7:	0f 8e 9c 00 00 00    	jle    0x401a99
4019fd:	8b 06                	mov    (%esi),%eax
4019ff:	8b d7                	mov    %edi,%edx
401a01:	2b 50 0c             	sub    0xc(%eax),%edx
401a04:	8b 06                	mov    (%esi),%eax
401a06:	8b 40 08             	mov    0x8(%eax),%eax
401a09:	8b 0e                	mov    (%esi),%ecx
401a0b:	03 41 0c             	add    0xc(%ecx),%eax
401a0e:	8d 4c 24 08          	lea    0x8(%esp),%ecx
401a12:	e8 35 fc ff ff       	call   0x40164c
401a17:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
401a1c:	74 33                	je     0x401a51
401a1e:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401a22:	8d 54 24 08          	lea    0x8(%esp),%edx
401a26:	8b c5                	mov    %ebp,%eax
401a28:	e8 6f fa ff ff       	call   0x40149c
401a2d:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
401a32:	75 9f                	jne    0x4019d3
401a34:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401a38:	8b 54 24 0c          	mov    0xc(%esp),%edx
401a3c:	8b 44 24 08          	mov    0x8(%esp),%eax
401a40:	e8 7f fc ff ff       	call   0x4016c4
401a45:	8b 04 24             	mov    (%esp),%eax
401a48:	33 d2                	xor    %edx,%edx
401a4a:	89 10                	mov    %edx,(%eax)
401a4c:	e9 9a 00 00 00       	jmp    0x401aeb
401a51:	8d 4c 24 08          	lea    0x8(%esp),%ecx
401a55:	8b d7                	mov    %edi,%edx
401a57:	8b c3                	mov    %ebx,%eax
401a59:	e8 ee fb ff ff       	call   0x40164c
401a5e:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
401a63:	74 34                	je     0x401a99
401a65:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401a69:	8d 54 24 08          	lea    0x8(%esp),%edx
401a6d:	8b c5                	mov    %ebp,%eax
401a6f:	e8 28 fa ff ff       	call   0x40149c
401a74:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
401a79:	0f 85 54 ff ff ff    	jne    0x4019d3
401a7f:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401a83:	8b 54 24 0c          	mov    0xc(%esp),%edx
401a87:	8b 44 24 08          	mov    0x8(%esp),%eax
401a8b:	e8 34 fc ff ff       	call   0x4016c4
401a90:	8b 04 24             	mov    (%esp),%eax
401a93:	33 d2                	xor    %edx,%edx
401a95:	89 10                	mov    %edx,(%eax)
401a97:	eb 52                	jmp    0x401aeb
401a99:	8b 06                	mov    (%esi),%eax
401a9b:	8b 68 08             	mov    0x8(%eax),%ebp
401a9e:	3b dd                	cmp    %ebp,%ebx
401aa0:	75 42                	jne    0x401ae4
401aa2:	8b 06                	mov    (%esi),%eax
401aa4:	3b 78 0c             	cmp    0xc(%eax),%edi
401aa7:	7f 3b                	jg     0x401ae4
401aa9:	8b 0c 24             	mov    (%esp),%ecx
401aac:	8b c5                	mov    %ebp,%eax
401aae:	8b d7                	mov    %edi,%edx
401ab0:	e8 d7 fc ff ff       	call   0x40178c
401ab5:	8b 04 24             	mov    (%esp),%eax
401ab8:	83 38 00             	cmpl   $0x0,(%eax)
401abb:	74 2e                	je     0x401aeb
401abd:	8b 04 24             	mov    (%esp),%eax
401ac0:	8b 40 04             	mov    0x4(%eax),%eax
401ac3:	8b 16                	mov    (%esi),%edx
401ac5:	01 42 08             	add    %eax,0x8(%edx)
401ac8:	8b 04 24             	mov    (%esp),%eax
401acb:	8b 40 04             	mov    0x4(%eax),%eax
401ace:	8b 16                	mov    (%esi),%edx
401ad0:	29 42 0c             	sub    %eax,0xc(%edx)
401ad3:	8b 06                	mov    (%esi),%eax
401ad5:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
401ad9:	75 10                	jne    0x401aeb
401adb:	8b 06                	mov    (%esi),%eax
401add:	e8 86 f9 ff ff       	call   0x401468
401ae2:	eb 07                	jmp    0x401aeb
401ae4:	8b 04 24             	mov    (%esp),%eax
401ae7:	33 d2                	xor    %edx,%edx
401ae9:	89 10                	mov    %edx,(%eax)
401aeb:	83 c4 18             	add    $0x18,%esp
401aee:	5d                   	pop    %ebp
401aef:	5f                   	pop    %edi
401af0:	5e                   	pop    %esi
401af1:	5b                   	pop    %ebx
401af2:	c3                   	ret
401af3:	90                   	nop
401af4:	53                   	push   %ebx
401af5:	83 c4 e8             	add    $0xffffffe8,%esp
401af8:	8b d9                	mov    %ecx,%ebx
401afa:	8d 88 ff 3f 00 00    	lea    0x3fff(%eax),%ecx
401b00:	81 e1 00 c0 ff ff    	and    $0xffffc000,%ecx
401b06:	89 0c 24             	mov    %ecx,(%esp)
401b09:	03 d0                	add    %eax,%edx
401b0b:	81 e2 00 c0 ff ff    	and    $0xffffc000,%edx
401b11:	89 54 24 04          	mov    %edx,0x4(%esp)
401b15:	8b 44 24 04          	mov    0x4(%esp),%eax
401b19:	3b 04 24             	cmp    (%esp),%eax
401b1c:	76 5f                	jbe    0x401b7d
401b1e:	8b cb                	mov    %ebx,%ecx
401b20:	8b 54 24 04          	mov    0x4(%esp),%edx
401b24:	2b 14 24             	sub    (%esp),%edx
401b27:	8b 04 24             	mov    (%esp),%eax
401b2a:	e8 1d fd ff ff       	call   0x40184c
401b2f:	8d 4c 24 08          	lea    0x8(%esp),%ecx
401b33:	8b d3                	mov    %ebx,%edx
401b35:	b8 f4 15 46 00       	mov    $0x4615f4,%eax
401b3a:	e8 5d f9 ff ff       	call   0x40149c
401b3f:	8b 5c 24 08          	mov    0x8(%esp),%ebx
401b43:	85 db                	test   %ebx,%ebx
401b45:	74 1f                	je     0x401b66
401b47:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401b4b:	8b 54 24 0c          	mov    0xc(%esp),%edx
401b4f:	8b c3                	mov    %ebx,%eax
401b51:	e8 6e fb ff ff       	call   0x4016c4
401b56:	8b 44 24 10          	mov    0x10(%esp),%eax
401b5a:	89 44 24 08          	mov    %eax,0x8(%esp)
401b5e:	8b 44 24 14          	mov    0x14(%esp),%eax
401b62:	89 44 24 0c          	mov    %eax,0xc(%esp)
401b66:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
401b6b:	74 14                	je     0x401b81
401b6d:	8d 54 24 08          	lea    0x8(%esp),%edx