4027be:	59                   	pop    %ecx
4027bf:	c3                   	ret
4027c0:	6a 2c                	push   $0x2c
4027c2:	b8 a1 7e 41 00       	mov    $0x417ea1,%eax
4027c7:	e8 60 36 00 00       	call   0x405e2c
4027cc:	8b c2                	mov    %edx,%eax
4027ce:	89 45 d0             	mov    %eax,-0x30(%ebp)
4027d1:	8b f1                	mov    %ecx,%esi
4027d3:	33 c9                	xor    %ecx,%ecx
4027d5:	89 4d cc             	mov    %ecx,-0x34(%ebp)
4027d8:	89 75 c8             	mov    %esi,-0x38(%ebp)
4027db:	89 0e                	mov    %ecx,(%esi)
4027dd:	89 4e 04             	mov    %ecx,0x4(%esi)
4027e0:	89 4e 08             	mov    %ecx,0x8(%esi)
4027e3:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4027e6:	8b d9                	mov    %ecx,%ebx
4027e8:	c7 45 cc 01 00 00 00 	movl   $0x1,-0x34(%ebp)
4027ef:	39 58 10             	cmp    %ebx,0x10(%eax)
4027f2:	0f 86 97 00 00 00    	jbe    0x40288f
4027f8:	51                   	push   %ecx
4027f9:	53                   	push   %ebx
4027fa:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4027fd:	51                   	push   %ecx
4027fe:	8b c8                	mov    %eax,%ecx
402800:	e8 92 00 00 00       	call   0x402897
402805:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40280c:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
402810:	6a 10                	push   $0x10
402812:	8d 45 d8             	lea    -0x28(%ebp),%eax
402815:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
402819:	6a 00                	push   $0x0
40281b:	50                   	push   %eax
40281c:	e8 88 2c 00 00       	call   0x4054a9
402821:	8a c8                	mov    %al,%cl
402823:	8b 46 04             	mov    0x4(%esi),%eax
402826:	8d 55 d7             	lea    -0x29(%ebp),%edx
402829:	83 c4 0c             	add    $0xc,%esp
40282c:	88 4d d7             	mov    %cl,-0x29(%ebp)
40282f:	3b d0                	cmp    %eax,%edx
402831:	73 25                	jae    0x402858
402833:	39 16                	cmp    %edx,(%esi)
402835:	77 21                	ja     0x402858
402837:	8b fa                	mov    %edx,%edi
402839:	2b 3e                	sub    (%esi),%edi
40283b:	3b 46 08             	cmp    0x8(%esi),%eax
40283e:	75 08                	jne    0x402848
402840:	51                   	push   %ecx
402841:	8b ce                	mov    %esi,%ecx
402843:	e8 4d 08 00 00       	call   0x403095
402848:	8b 4e 04             	mov    0x4(%esi),%ecx
40284b:	8b 06                	mov    (%esi),%eax
40284d:	85 c9                	test   %ecx,%ecx
40284f:	74 20                	je     0x402871
402851:	8a 04 38             	mov    (%eax,%edi,1),%al
402854:	88 01                	mov    %al,(%ecx)
402856:	eb 19                	jmp    0x402871
402858:	3b 46 08             	cmp    0x8(%esi),%eax
40285b:	75 0b                	jne    0x402868
40285d:	51                   	push   %ecx
40285e:	8b ce                	mov    %esi,%ecx
402860:	e8 30 08 00 00       	call   0x403095
402865:	8a 4d d7             	mov    -0x29(%ebp),%cl
402868:	8b 46 04             	mov    0x4(%esi),%eax
40286b:	85 c0                	test   %eax,%eax
40286d:	74 02                	je     0x402871
40286f:	88 08                	mov    %cl,(%eax)
402871:	ff 46 04             	incl   0x4(%esi)
402874:	8d 4d d8             	lea    -0x28(%ebp),%ecx
402877:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40287b:	e8 1c e9 ff ff       	call   0x40119c
402880:	8b 45 d0             	mov    -0x30(%ebp),%eax
402883:	83 c3 02             	add    $0x2,%ebx
402886:	3b 58 10             	cmp    0x10(%eax),%ebx
402889:	0f 82 69 ff ff ff    	jb     0x4027f8
40288f:	8b c6                	mov    %esi,%eax
402891:	e8 54 35 00 00       	call   0x405dea
402896:	c3                   	ret
402897:	55                   	push   %ebp
402898:	8b ec                	mov    %esp,%ebp
40289a:	51                   	push   %ecx
40289b:	56                   	push   %esi
40289c:	8b 75 08             	mov    0x8(%ebp),%esi
40289f:	6a 02                	push   $0x2
4028a1:	ff 75 0c             	push   0xc(%ebp)
4028a4:	33 c0                	xor    %eax,%eax
4028a6:	51                   	push   %ecx
4028a7:	c7 46 14 0f 00 00 00 	movl   $0xf,0x14(%esi)
4028ae:	89 46 10             	mov    %eax,0x10(%esi)
4028b1:	8b ce                	mov    %esi,%ecx
4028b3:	89 45 fc             	mov    %eax,-0x4(%ebp)
4028b6:	88 06                	mov    %al,(%esi)
4028b8:	e8 bd e9 ff ff       	call   0x40127a
4028bd:	8b c6                	mov    %esi,%eax
4028bf:	5e                   	pop    %esi
4028c0:	c9                   	leave
4028c1:	c2 0c 00             	ret    $0xc
4028c4:	56                   	push   %esi
4028c5:	8b f1                	mov    %ecx,%esi
4028c7:	83 3e 00             	cmpl   $0x0,(%esi)
4028ca:	74 08                	je     0x4028d4
4028cc:	ff 36                	push   (%esi)
4028ce:	e8 45 28 00 00       	call   0x405118
4028d3:	59                   	pop    %ecx
4028d4:	83 26 00             	andl   $0x0,(%esi)
4028d7:	5e                   	pop    %esi
4028d8:	c3                   	ret
4028d9:	6a 08                	push   $0x8
4028db:	b8 db 7d 41 00       	mov    $0x417ddb,%eax
4028e0:	e8 14 35 00 00       	call   0x405df9
4028e5:	8b f1                	mov    %ecx,%esi
4028e7:	89 75 ec             	mov    %esi,-0x14(%ebp)
4028ea:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
4028ee:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
4028f2:	74 18                	je     0x40290c
4028f4:	c7 06 d4 d5 41 00    	movl   $0x41d5d4,(%esi)
4028fa:	c7 46 08 70 a0 41 00 	movl   $0x41a070,0x8(%esi)
402901:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
402905:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40290c:	8b 06                	mov    (%esi),%eax
40290e:	ff 75 0c             	push   0xc(%ebp)
402911:	8b 40 04             	mov    0x4(%eax),%eax
402914:	ff 75 08             	push   0x8(%ebp)
402917:	c7 04 06 80 a0 41 00 	movl   $0x41a080,(%esi,%eax,1)
40291e:	8b 06                	mov    (%esi),%eax
402920:	8b 48 04             	mov    0x4(%eax),%ecx
402923:	8d 41 f8             	lea    -0x8(%ecx),%eax
402926:	89 44 31 fc          	mov    %eax,-0x4(%ecx,%esi,1)
40292a:	8b 06                	mov    (%esi),%eax
40292c:	8b 48 04             	mov    0x4(%eax),%ecx
40292f:	03 ce                	add    %esi,%ecx
402931:	e8 13 07 00 00       	call   0x403049
402936:	8b c6                	mov    %esi,%eax
402938:	e8 99 34 00 00       	call   0x405dd6
40293d:	c2 0c 00             	ret    $0xc
402940:	c3                   	ret
402941:	51                   	push   %ecx
402942:	c7 01 68 a0 41 00    	movl   $0x41a068,(%ecx)
402948:	e8 c2 19 00 00       	call   0x40430f
40294d:	59                   	pop    %ecx
40294e:	c3                   	ret
40294f:	56                   	push   %esi
402950:	8b 71 34             	mov    0x34(%ecx),%esi
402953:	c7 01 94 a0 41 00    	movl   $0x41a094,(%ecx)
402959:	85 f6                	test   %esi,%esi
40295b:	74 0e                	je     0x40296b
40295d:	8b ce                	mov    %esi,%ecx
40295f:	e8 67 fb ff ff       	call   0x4024cb
402964:	56                   	push   %esi
402965:	e8 8e 25 00 00       	call   0x404ef8
40296a:	59                   	pop    %ecx
40296b:	5e                   	pop    %esi
40296c:	c3                   	ret
40296d:	83 c8 ff             	or     $0xffffffff,%eax
402970:	c2 04 00             	ret    $0x4
402973:	33 c0                	xor    %eax,%eax
402975:	33 d2                	xor    %edx,%edx
402977:	c3                   	ret
402978:	83 c8 ff             	or     $0xffffffff,%eax
40297b:	c3                   	ret
40297c:	56                   	push   %esi
40297d:	8b f1                	mov    %ecx,%esi
40297f:	8b 06                	mov    (%esi),%eax
402981:	ff 50 18             	call   *0x18(%eax)
402984:	83 c9 ff             	or     $0xffffffff,%ecx
402987:	3b c1                	cmp    %ecx,%eax
402989:	74 12                	je     0x40299d
40298b:	8b 46 2c             	mov    0x2c(%esi),%eax
40298e:	ff 08                	decl   (%eax)
402990:	8b 4e 1c             	mov    0x1c(%esi),%ecx
402993:	8b 11                	mov    (%ecx),%edx
402995:	8d 42 01             	lea    0x1(%edx),%eax
402998:	89 01                	mov    %eax,(%ecx)
40299a:	0f b6 0a             	movzbl (%edx),%ecx
40299d:	8b c1                	mov    %ecx,%eax
40299f:	5e                   	pop    %esi
4029a0:	c3                   	ret
4029a1:	55                   	push   %ebp
4029a2:	8b ec                	mov    %esp,%ebp
4029a4:	83 e4 f8             	and    $0xfffffff8,%esp
4029a7:	83 ec 1c             	sub    $0x1c,%esp
4029aa:	53                   	push   %ebx
4029ab:	56                   	push   %esi
4029ac:	57                   	push   %edi
4029ad:	8b 7d 10             	mov    0x10(%ebp),%edi
4029b0:	8b d1                	mov    %ecx,%edx
4029b2:	0f 57 c0             	xorps  %xmm0,%xmm0
4029b5:	89 54 24 18          	mov    %edx,0x18(%esp)
4029b9:	66 0f 13 44 24 20    	movlpd %xmm0,0x20(%esp)
4029bf:	85 ff                	test   %edi,%edi
4029c1:	0f 8c e3 00 00 00    	jl     0x402aaa
4029c7:	8b 75 0c             	mov    0xc(%ebp),%esi
4029ca:	7f 08                	jg     0x4029d4
4029cc:	85 f6                	test   %esi,%esi
4029ce:	0f 84 d6 00 00 00    	je     0x402aaa
4029d4:	8b 4c 24 24          	mov    0x24(%esp),%ecx
4029d8:	8b 44 24 20          	mov    0x20(%esp),%eax
4029dc:	89 4c 24 10          	mov    %ecx,0x10(%esp)
4029e0:	89 44 24 14          	mov    %eax,0x14(%esp)
4029e4:	8b 42 1c             	mov    0x1c(%edx),%eax
4029e7:	8b 00                	mov    (%eax),%eax
4029e9:	89 44 24 20          	mov    %eax,0x20(%esp)
4029ed:	85 c0                	test   %eax,%eax
4029ef:	74 07                	je     0x4029f8
4029f1:	8b 42 2c             	mov    0x2c(%edx),%eax
4029f4:	8b 00                	mov    (%eax),%eax
4029f6:	eb 02                	jmp    0x4029fa
4029f8:	33 c0                	xor    %eax,%eax
4029fa:	99                   	cltd
4029fb:	8b d8                	mov    %eax,%ebx
4029fd:	8b c2                	mov    %edx,%eax
4029ff:	89 44 24 1c          	mov    %eax,0x1c(%esp)
402a03:	85 c0                	test   %eax,%eax
402a05:	7c 4f                	jl     0x402a56
402a07:	7f 04                	jg     0x402a0d
402a09:	85 db                	test   %ebx,%ebx
402a0b:	74 49                	je     0x402a56
402a0d:	3b f8                	cmp    %eax,%edi
402a0f:	7f 0c                	jg     0x402a1d
402a11:	7c 04                	jl     0x402a17
402a13:	3b f3                	cmp    %ebx,%esi
402a15:	73 06                	jae    0x402a1d
402a17:	8b de                	mov    %esi,%ebx
402a19:	89 7c 24 1c          	mov    %edi,0x1c(%esp)
402a1d:	85 db                	test   %ebx,%ebx
402a1f:	74 14                	je     0x402a35
402a21:	53                   	push   %ebx
402a22:	ff 74 24 24          	push   0x24(%esp)
402a26:	ff 75 08             	push   0x8(%ebp)
402a29:	e8 72 2c 00 00       	call   0x4056a0
402a2e:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
402a32:	83 c4 0c             	add    $0xc,%esp
402a35:	01 5d 08             	add    %ebx,0x8(%ebp)
402a38:	01 5c 24 14          	add    %ebx,0x14(%esp)
402a3c:	8b 54 24 18          	mov    0x18(%esp),%edx
402a40:	13 4c 24 1c          	adc    0x1c(%esp),%ecx
402a44:	8b 42 2c             	mov    0x2c(%edx),%eax
402a47:	2b f3                	sub    %ebx,%esi
402a49:	1b 7c 24 1c          	sbb    0x1c(%esp),%edi
402a4d:	29 18                	sub    %ebx,(%eax)
402a4f:	8b 42 1c             	mov    0x1c(%edx),%eax
402a52:	01 18                	add    %ebx,(%eax)
402a54:	eb 2d                	jmp    0x402a83
402a56:	8b 4c 24 18          	mov    0x18(%esp),%ecx
402a5a:	8b 01                	mov    (%ecx),%eax
402a5c:	ff 50 1c             	call   *0x1c(%eax)
402a5f:	83 f8 ff             	cmp    $0xffffffff,%eax
402a62:	74 35                	je     0x402a99
402a64:	8b 55 08             	mov    0x8(%ebp),%edx
402a67:	8b 4c 24 10          	mov    0x10(%esp),%ecx
402a6b:	88 02                	mov    %al,(%edx)
402a6d:	42                   	inc    %edx
402a6e:	83 44 24 14 01       	addl   $0x1,0x14(%esp)
402a73:	89 55 08             	mov    %edx,0x8(%ebp)
402a76:	8b 54 24 18          	mov    0x18(%esp),%edx
402a7a:	83 d1 00             	adc    $0x0,%ecx
402a7d:	83 c6 ff             	add    $0xffffffff,%esi
402a80:	83 d7 ff             	adc    $0xffffffff,%edi
402a83:	89 4c 24 10          	mov    %ecx,0x10(%esp)
402a87:	85 ff                	test   %edi,%edi
402a89:	0f 8f 55 ff ff ff    	jg     0x4029e4
402a8f:	7c 08                	jl     0x402a99
402a91:	85 f6                	test   %esi,%esi
402a93:	0f 85 4b ff ff ff    	jne    0x4029e4
402a99:	8b 54 24 10          	mov    0x10(%esp),%edx
402a9d:	8b 44 24 14          	mov    0x14(%esp),%eax
402aa1:	5f                   	pop    %edi
402aa2:	5e                   	pop    %esi
402aa3:	5b                   	pop    %ebx
402aa4:	8b e5                	mov    %ebp,%esp
402aa6:	5d                   	pop    %ebp
402aa7:	c2 0c 00             	ret    $0xc
402aaa:	8b 54 24 24          	mov    0x24(%esp),%edx
402aae:	8b 44 24 20          	mov    0x20(%esp),%eax
402ab2:	eb ed                	jmp    0x402aa1
402ab4:	55                   	push   %ebp
402ab5:	8b ec                	mov    %esp,%ebp
402ab7:	83 e4 f8             	and    $0xfffffff8,%esp
402aba:	83 ec 1c             	sub    $0x1c,%esp
402abd:	53                   	push   %ebx
402abe:	56                   	push   %esi
402abf:	57                   	push   %edi
402ac0:	8b 7d 10             	mov    0x10(%ebp),%edi
402ac3:	8b d1                	mov    %ecx,%edx
402ac5:	0f 57 c0             	xorps  %xmm0,%xmm0
402ac8:	89 54 24 18          	mov    %edx,0x18(%esp)
402acc:	66 0f 13 44 24 20    	movlpd %xmm0,0x20(%esp)
402ad2:	85 ff                	test   %edi,%edi
402ad4:	0f 8c e5 00 00 00    	jl     0x402bbf
402ada:	8b 75 0c             	mov    0xc(%ebp),%esi
402add:	7f 08                	jg     0x402ae7
402adf:	85 f6                	test   %esi,%esi
402ae1:	0f 84 d8 00 00 00    	je     0x402bbf
402ae7:	8b 4c 24 24          	mov    0x24(%esp),%ecx
402aeb:	8b 44 24 20          	mov    0x20(%esp),%eax
402aef:	89 4c 24 10          	mov    %ecx,0x10(%esp)
402af3:	89 44 24 14          	mov    %eax,0x14(%esp)
402af7:	8b 42 20             	mov    0x20(%edx),%eax
402afa:	8b 00                	mov    (%eax),%eax
402afc:	89 44 24 20          	mov    %eax,0x20(%esp)
402b00:	85 c0                	test   %eax,%eax
402b02:	74 07                	je     0x402b0b
402b04:	8b 42 30             	mov    0x30(%edx),%eax
402b07:	8b 00                	mov    (%eax),%eax
402b09:	eb 02                	jmp    0x402b0d
402b0b:	33 c0                	xor    %eax,%eax
402b0d:	99                   	cltd
402b0e:	8b d8                	mov    %eax,%ebx
402b10:	8b c2                	mov    %edx,%eax
402b12:	89 44 24 1c          	mov    %eax,0x1c(%esp)
402b16:	85 c0                	test   %eax,%eax
402b18:	7c 4f                	jl     0x402b69
402b1a:	7f 04                	jg     0x402b20
402b1c:	85 db                	test   %ebx,%ebx
402b1e:	74 49                	je     0x402b69
402b20:	3b f8                	cmp    %eax,%edi
402b22:	7f 0c                	jg     0x402b30
402b24:	7c 04                	jl     0x402b2a
402b26:	3b f3                	cmp    %ebx,%esi
402b28:	73 06                	jae    0x402b30
402b2a:	8b de                	mov    %esi,%ebx
402b2c:	89 7c 24 1c          	mov    %edi,0x1c(%esp)
402b30:	85 db                	test   %ebx,%ebx
402b32:	74 14                	je     0x402b48
402b34:	53                   	push   %ebx
402b35:	ff 75 08             	push   0x8(%ebp)
402b38:	ff 74 24 28          	push   0x28(%esp)
402b3c:	e8 5f 2b 00 00       	call   0x4056a0
402b41:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
402b45:	83 c4 0c             	add    $0xc,%esp
402b48:	01 5d 08             	add    %ebx,0x8(%ebp)
402b4b:	01 5c 24 14          	add    %ebx,0x14(%esp)
402b4f:	8b 54 24 18          	mov    0x18(%esp),%edx
402b53:	13 4c 24 1c          	adc    0x1c(%esp),%ecx
402b57:	8b 42 30             	mov    0x30(%edx),%eax
402b5a:	2b f3                	sub    %ebx,%esi
402b5c:	1b 7c 24 1c          	sbb    0x1c(%esp),%edi
402b60:	29 18                	sub    %ebx,(%eax)
402b62:	8b 42 20             	mov    0x20(%edx),%eax
402b65:	01 18                	add    %ebx,(%eax)
402b67:	eb 2f                	jmp    0x402b98
402b69:	8b 5d 08             	mov    0x8(%ebp),%ebx
402b6c:	8b 4c 24 18          	mov    0x18(%esp),%ecx
402b70:	0f b6 03             	movzbl (%ebx),%eax
402b73:	8b 11                	mov    (%ecx),%edx
402b75:	50                   	push   %eax
402b76:	ff 52 0c             	call   *0xc(%edx)
402b79:	83 f8 ff             	cmp    $0xffffffff,%eax
402b7c:	74 30                	je     0x402bae
402b7e:	8b 4c 24 10          	mov    0x10(%esp),%ecx
402b82:	8b 54 24 18          	mov    0x18(%esp),%edx