402898:	ff 75 f4             	push   -0xc(%ebp)
40289b:	e8 8f 3a 00 00       	call   0x40632f
4028a0:	8d 85 58 fd ff ff    	lea    -0x2a8(%ebp),%eax
4028a6:	50                   	push   %eax
4028a7:	56                   	push   %esi
4028a8:	e9 34 01 00 00       	jmp    0x4029e1
4028ad:	6a f0                	push   $0xfffffff0
4028af:	c7 45 d0 66 fd ff ff 	movl   $0xfffffd66,-0x30(%ebp)
4028b6:	e8 86 03 00 00       	call   0x402c41
4028bb:	8b f0                	mov    %eax,%esi
4028bd:	56                   	push   %esi
4028be:	89 75 c8             	mov    %esi,-0x38(%ebp)
4028c1:	e8 6e 34 00 00       	call   0x405d34
4028c6:	85 c0                	test   %eax,%eax
4028c8:	75 07                	jne    0x4028d1
4028ca:	6a ed                	push   $0xffffffed
4028cc:	e8 70 03 00 00       	call   0x402c41
4028d1:	56                   	push   %esi
4028d2:	e8 e2 35 00 00       	call   0x405eb9
4028d7:	6a 02                	push   $0x2
4028d9:	68 00 00 00 40       	push   $0x40000000
4028de:	56                   	push   %esi
4028df:	e8 fa 35 00 00       	call   0x405ede
4028e4:	83 f8 ff             	cmp    $0xffffffff,%eax
4028e7:	89 45 08             	mov    %eax,0x8(%ebp)
4028ea:	0f 84 97 00 00 00    	je     0x402987
4028f0:	a1 58 a2 42 00       	mov    0x42a258,%eax
4028f5:	8b 35 34 81 40 00    	mov    0x408134,%esi
4028fb:	50                   	push   %eax
4028fc:	6a 40                	push   $0x40
4028fe:	89 45 c4             	mov    %eax,-0x3c(%ebp)
402901:	ff d6                	call   *%esi
402903:	8b f8                	mov    %eax,%edi
402905:	3b fb                	cmp    %ebx,%edi
402907:	74 75                	je     0x40297e
402909:	53                   	push   %ebx
40290a:	e8 4e 0b 00 00       	call   0x40345d
40290f:	ff 75 c4             	push   -0x3c(%ebp)
402912:	57                   	push   %edi
402913:	e8 2f 0b 00 00       	call   0x403447
402918:	ff 75 e0             	push   -0x20(%ebp)
40291b:	6a 40                	push   $0x40
40291d:	ff d6                	call   *%esi
40291f:	8b f0                	mov    %eax,%esi
402921:	3b f3                	cmp    %ebx,%esi
402923:	89 75 b4             	mov    %esi,-0x4c(%ebp)
402926:	74 34                	je     0x40295c
402928:	ff 75 e0             	push   -0x20(%ebp)
40292b:	56                   	push   %esi
40292c:	53                   	push   %ebx
40292d:	ff 75 dc             	push   -0x24(%ebp)
402930:	e8 a1 08 00 00       	call   0x4031d6
402935:	eb 18                	jmp    0x40294f
402937:	8b 0e                	mov    (%esi),%ecx
402939:	8b 46 04             	mov    0x4(%esi),%eax
40293c:	83 c6 08             	add    $0x8,%esi
40293f:	51                   	push   %ecx
402940:	03 c7                	add    %edi,%eax
402942:	56                   	push   %esi
402943:	50                   	push   %eax
402944:	89 4d cc             	mov    %ecx,-0x34(%ebp)
402947:	e8 4d 35 00 00       	call   0x405e99
40294c:	03 75 cc             	add    -0x34(%ebp),%esi
40294f:	38 1e                	cmp    %bl,(%esi)
402951:	75 e4                	jne    0x402937
402953:	ff 75 b4             	push   -0x4c(%ebp)
402956:	ff 15 28 81 40 00    	call   *0x408128
40295c:	ff 75 c4             	push   -0x3c(%ebp)
40295f:	57                   	push   %edi
402960:	ff 75 08             	push   0x8(%ebp)
402963:	e8 28 36 00 00       	call   0x405f90
402968:	57                   	push   %edi
402969:	ff 15 28 81 40 00    	call   *0x408128
40296f:	53                   	push   %ebx
402970:	53                   	push   %ebx
402971:	ff 75 08             	push   0x8(%ebp)
402974:	6a ff                	push   $0xffffffff
402976:	e8 5b 08 00 00       	call   0x4031d6
40297b:	89 45 d0             	mov    %eax,-0x30(%ebp)
40297e:	ff 75 08             	push   0x8(%ebp)
402981:	ff 15 20 81 40 00    	call   *0x408120
402987:	39 5d d0             	cmp    %ebx,-0x30(%ebp)
40298a:	6a f3                	push   $0xfffffff3
40298c:	5e                   	pop    %esi
40298d:	7d 13                	jge    0x4029a2
40298f:	6a ef                	push   $0xffffffef
402991:	5e                   	pop    %esi
402992:	ff 75 c8             	push   -0x38(%ebp)
402995:	ff 15 40 81 40 00    	call   *0x408140
40299b:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4029a2:	56                   	push   %esi
4029a3:	e9 a3 f8 ff ff       	jmp    0x40224b
4029a8:	53                   	push   %ebx
4029a9:	e8 71 02 00 00       	call   0x402c1f
4029ae:	8b f8                	mov    %eax,%edi
4029b0:	59                   	pop    %ecx
4029b1:	3b 3d 8c a2 42 00    	cmp    0x42a28c,%edi
4029b7:	89 55 b4             	mov    %edx,-0x4c(%ebp)
4029ba:	0f 83 cb fe ff ff    	jae    0x40288b
4029c0:	8b f7                	mov    %edi,%esi
4029c2:	8b 45 e0             	mov    -0x20(%ebp),%eax
4029c5:	69 f6 18 08 00 00    	imul   $0x818,%esi,%esi
4029cb:	03 35 88 a2 42 00    	add    0x42a288,%esi
4029d1:	3b c3                	cmp    %ebx,%eax
4029d3:	7c 19                	jl     0x4029ee
4029d5:	8b 0c 86             	mov    (%esi,%eax,4),%ecx
4029d8:	75 11                	jne    0x4029eb
4029da:	83 c6 18             	add    $0x18,%esi
4029dd:	56                   	push   %esi
4029de:	ff 75 f4             	push   -0xc(%ebp)
4029e1:	e8 02 3a 00 00       	call   0x4063e8
4029e6:	e9 da 00 00 00       	jmp    0x402ac5
4029eb:	51                   	push   %ecx
4029ec:	eb 7a                	jmp    0x402a68
4029ee:	83 c9 ff             	or     $0xffffffff,%ecx
4029f1:	2b c8                	sub    %eax,%ecx
4029f3:	89 4d e0             	mov    %ecx,-0x20(%ebp)
4029f6:	74 10                	je     0x402a08
4029f8:	6a 01                	push   $0x1
4029fa:	e8 20 02 00 00       	call   0x402c1f
4029ff:	59                   	pop    %ecx
402a00:	89 55 b4             	mov    %edx,-0x4c(%ebp)
402a03:	89 45 dc             	mov    %eax,-0x24(%ebp)
402a06:	eb 10                	jmp    0x402a18
402a08:	ff 75 e8             	push   -0x18(%ebp)
402a0b:	8d 46 18             	lea    0x18(%esi),%eax
402a0e:	50                   	push   %eax
402a0f:	e8 f6 39 00 00       	call   0x40640a
402a14:	80 4e 09 01          	orb    $0x1,0x9(%esi)
402a18:	8b 45 e0             	mov    -0x20(%ebp),%eax
402a1b:	8b 4d dc             	mov    -0x24(%ebp),%ecx
402a1e:	89 0c 86             	mov    %ecx,(%esi,%eax,4)
402a21:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
402a24:	0f 84 9b 00 00 00    	je     0x402ac5
402a2a:	57                   	push   %edi
402a2b:	e8 4d e7 ff ff       	call   0x40117d
402a30:	e9 90 00 00 00       	jmp    0x402ac5
402a35:	53                   	push   %ebx
402a36:	e8 e4 01 00 00       	call   0x402c1f
402a3b:	83 f8 20             	cmp    $0x20,%eax
402a3e:	59                   	pop    %ecx
402a3f:	89 55 b4             	mov    %edx,-0x4c(%ebp)
402a42:	0f 83 43 fe ff ff    	jae    0x40288b
402a48:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
402a4b:	74 25                	je     0x402a72
402a4d:	39 5d e0             	cmp    %ebx,-0x20(%ebp)
402a50:	74 0f                	je     0x402a61
402a52:	50                   	push   %eax
402a53:	e8 41 e8 ff ff       	call   0x401299
402a58:	53                   	push   %ebx
402a59:	53                   	push   %ebx
402a5a:	e8 90 e7 ff ff       	call   0x4011ef
402a5f:	eb 64                	jmp    0x402ac5
402a61:	53                   	push   %ebx
402a62:	e8 7b e8 ff ff       	call   0x4012e2
402a67:	50                   	push   %eax
402a68:	ff 75 f4             	push   -0xc(%ebp)
402a6b:	e8 bf 38 00 00       	call   0x40632f
402a70:	eb 53                	jmp    0x402ac5
402a72:	39 5d e0             	cmp    %ebx,-0x20(%ebp)
402a75:	74 12                	je     0x402a89
402a77:	8b 15 54 a2 42 00    	mov    0x42a254,%edx
402a7d:	8b 4d dc             	mov    -0x24(%ebp),%ecx
402a80:	89 8c 82 94 00 00 00 	mov    %ecx,0x94(%edx,%eax,4)
402a87:	eb 3c                	jmp    0x402ac5
402a89:	8b 0d 54 a2 42 00    	mov    0x42a254,%ecx
402a8f:	ff b4 81 94 00 00 00 	push   0x94(%ecx,%eax,4)
402a96:	ff 75 f4             	push   -0xc(%ebp)
402a99:	e8 6c 39 00 00       	call   0x40640a
402a9e:	eb 25                	jmp    0x402ac5
402aa0:	8b 0d 28 57 42 00    	mov    0x425728,%ecx
402aa6:	53                   	push   %ebx
402aa7:	23 c8                	and    %eax,%ecx
402aa9:	51                   	push   %ecx
402aaa:	6a 0b                	push   $0xb
402aac:	ff 75 f8             	push   -0x8(%ebp)
402aaf:	ff 15 18 82 40 00    	call   *0x408218
402ab5:	39 5d d8             	cmp    %ebx,-0x28(%ebp)
402ab8:	74 0b                	je     0x402ac5
402aba:	53                   	push   %ebx
402abb:	53                   	push   %ebx
402abc:	ff 75 f8             	push   -0x8(%ebp)
402abf:	ff 15 14 82 40 00    	call   *0x408214
402ac5:	8b 45 fc             	mov    -0x4(%ebp),%eax
402ac8:	01 05 e8 a2 42 00    	add    %eax,0x42a2e8
402ace:	33 c0                	xor    %eax,%eax
402ad0:	5f                   	pop    %edi
402ad1:	5e                   	pop    %esi
402ad2:	5b                   	pop    %ebx
402ad3:	c9                   	leave
402ad4:	c2 04 00             	ret    $0x4
402ad7:	d0 2a                	shrb   $1,(%edx)
402ad9:	40                   	inc    %eax
402ada:	00 91 14 40 00 9d    	add    %dl,-0x62ffbfec(%ecx)
402ae0:	14 40                	adc    $0x40,%al
402ae2:	00 b8 14 40 00 cb    	add    %bh,-0x34ffbfec(%eax)
402ae8:	14 40                	adc    $0x40,%al
402aea:	00 d7                	add    %dl,%bh
402aec:	14 40                	adc    $0x40,%al
402aee:	00 f5                	add    %dh,%ch
402af0:	14 40                	adc    $0x40,%al
402af2:	00 73 15             	add    %dh,0x15(%ebx)
402af5:	40                   	inc    %eax
402af6:	00 a3 15 40 00 c1    	add    %ah,-0x3effbfeb(%ebx)
402afc:	15 40 00 6a 16       	adc    $0x166a0040,%eax
402b01:	40                   	inc    %eax
402b02:	00 03                	add    %al,(%ebx)
402b04:	15 40 00 42 15       	adc    $0x15420040,%eax
402b09:	40                   	inc    %eax
402b0a:	00 63 15             	add    %ah,0x15(%ebx)
402b0d:	40                   	inc    %eax
402b0e:	00 7b 16             	add    %bh,0x16(%ebx)
402b11:	40                   	inc    %eax
402b12:	00 cc                	add    %cl,%ah
402b14:	16                   	push   %ss
402b15:	40                   	inc    %eax
402b16:	00 35 17 40 00 5c    	add    %dh,0x5c004017
402b1c:	17                   	pop    %ss
402b1d:	40                   	inc    %eax
402b1e:	00 6f 17             	add    %ch,0x17(%edi)
402b21:	40                   	inc    %eax
402b22:	00 0c 19             	add    %cl,(%ecx,%ebx,1)
402b25:	40                   	inc    %eax
402b26:	00 0f                	add    %cl,(%edi)
402b28:	19 40 00             	sbb    %eax,0x0(%eax)
402b2b:	41                   	inc    %ecx
402b2c:	19 40 00             	sbb    %eax,0x0(%eax)
402b2f:	56                   	push   %esi
402b30:	19 40 00             	sbb    %eax,0x0(%eax)
402b33:	68 19 40 00 ff       	push   $0xff004019
402b38:	19 40 00             	sbb    %eax,0x0(%eax)
402b3b:	30 1a                	xor    %bl,(%edx)
402b3d:	40                   	inc    %eax
402b3e:	00 72 1a             	add    %dh,0x1a(%edx)
402b41:	40                   	inc    %eax
402b42:	00 b2 1a 40 00 53    	add    %dh,0x5300401a(%edx)
402b48:	1b 40 00             	sbb    0x0(%eax),%eax
402b4b:	77 1b                	ja     0x402b68
402b4d:	40                   	inc    %eax
402b4e:	00 1f                	add    %bl,(%edi)
402b50:	1c 40                	sbb    $0x40,%al
402b52:	00 1f                	add    %bl,(%edi)
402b54:	1c 40                	sbb    $0x40,%al
402b56:	00 f3                	add    %dh,%bl
402b58:	1c 40                	sbb    $0x40,%al
402b5a:	00 14 1d 40 00 39 1d 	add    %dl,0x1d390040(,%ebx,1)
402b61:	40                   	inc    %eax
402b62:	00 5d 1d             	add    %bl,0x1d(%ebp)
402b65:	40                   	inc    %eax
402b66:	00 b9 1d 40 00 49    	add    %bh,0x4900401d(%ecx)
402b6c:	1e                   	push   %ds
402b6d:	40                   	inc    %eax
402b6e:	00 7d 1e             	add    %bh,0x1e(%ebp)
402b71:	40                   	inc    %eax
402b72:	00 06                	add    %al,(%esi)
402b74:	1f                   	pop    %ds
402b75:	40                   	inc    %eax
402b76:	00 58 1f             	add    %bl,0x1f(%eax)
402b79:	40                   	inc    %eax
402b7a:	00 8c 1f 40 00 31 20 	add    %cl,0x20310040(%edi,%ebx,1)
402b81:	40                   	inc    %eax
402b82:	00 04 21             	add    %al,(%ecx,%eiz,1)
402b85:	40                   	inc    %eax
402b86:	00 59 22             	add    %bl,0x22(%ecx)
402b89:	40                   	inc    %eax
402b8a:	00 dd                	add    %bl,%ch
402b8c:	22 40 00             	and    0x0(%eax),%al
402b8f:	0c 23                	or     $0x23,%al
402b91:	40                   	inc    %eax
402b92:	00 4e 23             	add    %cl,0x23(%esi)
402b95:	40                   	inc    %eax
402b96:	00 8e 23 40 00 e4    	add    %cl,-0x1bffbfdd(%esi)
402b9c:	23 40 00             	and    0x0(%eax),%eax
402b9f:	84 24 40             	test   %ah,(%eax,%eax,2)
402ba2:	00 f8                	add    %bh,%al
402ba4:	24 40                	and    $0x40,%al
402ba6:	00 62 25             	add    %ah,0x25(%edx)
402ba9:	40                   	inc    %eax
402baa:	00 76 25             	add    %dh,0x25(%esi)
402bad:	40                   	inc    %eax
402bae:	00 98 25 40 00 4a    	add    %bl,0x4a004025(%eax)
402bb4:	26 40                	es inc %eax
402bb6:	00 ed                	add    %ch,%ch
402bb8:	27                   	daa
402bb9:	40                   	inc    %eax
402bba:	00 21                	add    %ah,(%ecx)
402bbc:	28 40 00             	sub    %al,0x0(%eax)
402bbf:	3b 28                	cmp    (%eax),%ebp
402bc1:	40                   	inc    %eax
402bc2:	00 68 28             	add    %ch,0x28(%eax)
402bc5:	40                   	inc    %eax
402bc6:	00 ad 28 40 00 a8    	add    %ch,-0x57ffbfd8(%ebp)
402bcc:	29 40 00             	sub    %eax,0x0(%eax)
402bcf:	35 2a 40 00 c5       	xor    $0xc500402a,%eax
402bd4:	2a 40 00             	sub    0x0(%eax),%al
402bd7:	c5 2a                	lds    (%edx),%ebp
402bd9:	40                   	inc    %eax
402bda:	00 a0 2a 40 00 98    	add    %ah,-0x67ffbfd6(%eax)
402be0:	25 40 00 4a 26       	and    $0x264a0040,%eax
402be5:	40                   	inc    %eax
402be6:	00 de                	add    %bl,%dh
402be8:	1a 40 00             	sbb    0x0(%eax),%al
402beb:	e2 1a                	loop   0x402c07
402bed:	40                   	inc    %eax
402bee:	00 e6                	add    %ah,%dh
402bf0:	1a 40 00             	sbb    0x0(%eax),%al
402bf3:	eb 1a                	jmp    0x402c0f
402bf5:	40                   	inc    %eax
402bf6:	00 f8                	add    %bh,%al
402bf8:	1a 40 00             	sbb    0x0(%eax),%al
402bfb:	fc                   	cld
402bfc:	1a 40 00             	sbb    0x0(%eax),%al
402bff:	00 1b                	add    %bl,(%ebx)
402c01:	40                   	inc    %eax
402c02:	00 06                	add    %al,(%esi)
402c04:	1b 40 00             	sbb    0x0(%eax),%eax
402c07:	0f 1b 40 00          	bndstx %bnd0,0x0(%eax)
402c0b:	19 1b                	sbb    %ebx,(%ebx)
402c0d:	40                   	inc    %eax
402c0e:	00 26                	add    %ah,(%esi)
402c10:	1b 40 00             	sbb    0x0(%eax),%eax
402c13:	3e 1b 40 00          	sbb    %ds:0x0(%eax),%eax
402c17:	42                   	inc    %edx
402c18:	1b 40 00             	sbb    0x0(%eax),%eax
402c1b:	46                   	inc    %esi
402c1c:	1b 40 00             	sbb    0x0(%eax),%eax
402c1f:	8b 44 24 04          	mov    0x4(%esp),%eax
402c23:	8b 0d 34 ce 40 00    	mov    0x40ce34,%ecx
402c29:	56                   	push   %esi
402c2a:	ff 34 81             	push   (%ecx,%eax,4)
402c2d:	6a 00                	push   $0x0
402c2f:	e8 d6 37 00 00       	call   0x40640a
402c34:	8b f0                	mov    %eax,%esi
402c36:	56                   	push   %esi
402c37:	e8 0c 37 00 00       	call   0x406348
402c3c:	0f b7 16             	movzwl (%esi),%edx
402c3f:	5e                   	pop    %esi
402c40:	c3                   	ret
402c41:	56                   	push   %esi
402c42:	8b 74 24 08          	mov    0x8(%esp),%esi
402c46:	85 f6                	test   %esi,%esi
402c48:	57                   	push   %edi
402c49:	8b c6                	mov    %esi,%eax
402c4b:	7d 02                	jge    0x402c4f
402c4d:	f7 d8                	neg    %eax
402c4f:	8b 15 34 ce 40 00    	mov    0x40ce34,%edx
402c55:	8b c8                	mov    %eax,%ecx
402c57:	83 e1 0f             	and    $0xf,%ecx
402c5a:	c1 f8 04             	sar    $0x4,%eax
402c5d:	ff 34 8a             	push   (%edx,%ecx,4)