40879d:	57                   	push   %edi
40879e:	89 ae 20 10 00 00    	mov    %ebp,0x1020(%esi)
4087a4:	75 09                	jne    0x4087af
4087a6:	f6 c1 04             	test   $0x4,%cl
4087a9:	75 04                	jne    0x4087af
4087ab:	32 c0                	xor    %al,%al
4087ad:	eb 02                	jmp    0x4087b1
4087af:	b0 01                	mov    $0x1,%al
4087b1:	8b d1                	mov    %ecx,%edx
4087b3:	d1 ea                	shr    $1,%edx
4087b5:	80 e2 01             	and    $0x1,%dl
4087b8:	0f b6 fa             	movzbl %dl,%edi
4087bb:	f7 df                	neg    %edi
4087bd:	1b ff                	sbb    %edi,%edi
4087bf:	81 e7 00 00 00 c0    	and    $0xc0000000,%edi
4087c5:	81 c7 00 00 00 80    	add    $0x80000000,%edi
4087cb:	f6 c1 01             	test   $0x1,%cl
4087ce:	74 06                	je     0x4087d6
4087d0:	81 cf 00 00 00 40    	or     $0x40000000,%edi
4087d6:	c7 44 24 10 01 00 00 	movl   $0x1,0x10(%esp)
4087dd:	00
4087de:	84 c0                	test   %al,%al
4087e0:	74 08                	je     0x4087ea
4087e2:	c7 44 24 10 03 00 00 	movl   $0x3,0x10(%esp)
4087e9:	00
4087ea:	33 c0                	xor    %eax,%eax
4087ec:	38 46 15             	cmp    %al,0x15(%esi)
4087ef:	8b 1d 00 a2 42 00    	mov    0x42a200,%ebx
4087f5:	0f 95 c0             	setne  %al
4087f8:	55                   	push   %ebp
4087f9:	48                   	dec    %eax
4087fa:	25 00 00 00 08       	and    $0x8000000,%eax
4087ff:	50                   	push   %eax
408800:	6a 03                	push   $0x3
408802:	55                   	push   %ebp
408803:	ff 74 24 20          	push   0x20(%esp)
408807:	89 44 24 28          	mov    %eax,0x28(%esp)
40880b:	57                   	push   %edi
40880c:	ff b4 24 38 10 00 00 	push   0x1038(%esp)
408813:	ff d3                	call   *%ebx
408815:	8b e8                	mov    %eax,%ebp
408817:	83 fd ff             	cmp    $0xffffffff,%ebp
40881a:	75 63                	jne    0x40887f
40881c:	ff 15 24 a2 42 00    	call   *0x42a224
408822:	89 44 24 18          	mov    %eax,0x18(%esp)
408826:	68 00 08 00 00       	push   $0x800
40882b:	8d 44 24 20          	lea    0x20(%esp),%eax
40882f:	50                   	push   %eax
408830:	ff b4 24 28 10 00 00 	push   0x1028(%esp)
408837:	e8 1e 1f 00 00       	call   0x40a75a
40883c:	84 c0                	test   %al,%al
40883e:	74 2e                	je     0x40886e
408840:	6a 00                	push   $0x0
408842:	ff 74 24 18          	push   0x18(%esp)
408846:	8d 44 24 24          	lea    0x24(%esp),%eax
40884a:	6a 03                	push   $0x3
40884c:	6a 00                	push   $0x0
40884e:	ff 74 24 20          	push   0x20(%esp)
408852:	57                   	push   %edi
408853:	50                   	push   %eax
408854:	ff d3                	call   *%ebx
408856:	8b e8                	mov    %eax,%ebp
408858:	ff 15 24 a2 42 00    	call   *0x42a224
40885e:	6a 02                	push   $0x2
408860:	59                   	pop    %ecx
408861:	3b c1                	cmp    %ecx,%eax
408863:	75 04                	jne    0x408869
408865:	89 4c 24 18          	mov    %ecx,0x18(%esp)
408869:	83 fd ff             	cmp    $0xffffffff,%ebp
40886c:	75 11                	jne    0x40887f
40886e:	83 7c 24 18 02       	cmpl   $0x2,0x18(%esp)
408873:	75 0a                	jne    0x40887f
408875:	c7 86 20 10 00 00 01 	movl   $0x1,0x1020(%esi)
40887c:	00 00 00
40887f:	83 66 0c 00          	andl   $0x0,0xc(%esi)
408883:	83 fd ff             	cmp    $0xffffffff,%ebp
408886:	0f 95 c3             	setne  %bl
408889:	c6 46 12 00          	movb   $0x0,0x12(%esi)
40888d:	c6 46 10 00          	movb   $0x0,0x10(%esi)
408891:	84 db                	test   %bl,%bl
408893:	74 18                	je     0x4088ad
408895:	68 00 08 00 00       	push   $0x800
40889a:	ff b4 24 24 10 00 00 	push   0x1024(%esp)
4088a1:	89 6e 04             	mov    %ebp,0x4(%esi)
4088a4:	83 c6 1e             	add    $0x1e,%esi
4088a7:	56                   	push   %esi
4088a8:	e8 72 80 00 00       	call   0x41091f
4088ad:	5f                   	pop    %edi
4088ae:	5e                   	pop    %esi
4088af:	5d                   	pop    %ebp
4088b0:	8a c3                	mov    %bl,%al
4088b2:	5b                   	pop    %ebx
4088b3:	81 c4 0c 10 00 00    	add    $0x100c,%esp
4088b9:	c2 08 00             	ret    $0x8
4088bc:	8b 01                	mov    (%ecx),%eax
4088be:	6a 00                	push   $0x0
4088c0:	ff 74 24 08          	push   0x8(%esp)
4088c4:	ff 50 04             	call   *0x4(%eax)
4088c7:	84 c0                	test   %al,%al
4088c9:	74 04                	je     0x4088cf
4088cb:	b0 01                	mov    $0x1,%al
4088cd:	eb 10                	jmp    0x4088df
4088cf:	ff 74 24 04          	push   0x4(%esp)
4088d3:	b9 74 2a 43 00       	mov    $0x432a74,%ecx
4088d8:	e8 6d dd ff ff       	call   0x40664a
4088dd:	32 c0                	xor    %al,%al
4088df:	c2 04 00             	ret    $0x4
4088e2:	55                   	push   %ebp
4088e3:	8b ec                	mov    %esp,%ebp
4088e5:	b8 04 10 00 00       	mov    $0x1004,%eax
4088ea:	e8 e1 1b 01 00       	call   0x41a4d0
4088ef:	53                   	push   %ebx
4088f0:	56                   	push   %esi
4088f1:	8b f1                	mov    %ecx,%esi
4088f3:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4088f6:	8b c1                	mov    %ecx,%eax
4088f8:	d1 e8                	shr    $1,%eax
4088fa:	24 01                	and    $0x1,%al
4088fc:	33 db                	xor    %ebx,%ebx
4088fe:	57                   	push   %edi
4088ff:	f6 c1 08             	test   $0x8,%cl
408902:	75 09                	jne    0x40890d
408904:	38 5e 1c             	cmp    %bl,0x1c(%esi)
408907:	75 04                	jne    0x40890d
408909:	32 d2                	xor    %dl,%dl
40890b:	eb 02                	jmp    0x40890f
40890d:	b2 01                	mov    $0x1,%dl
40890f:	89 4e 18             	mov    %ecx,0x18(%esi)
408912:	33 c9                	xor    %ecx,%ecx
408914:	3a c3                	cmp    %bl,%al
408916:	0f 94 c1             	sete   %cl
408919:	8b 3d 00 a2 42 00    	mov    0x42a200,%edi
40891f:	33 c0                	xor    %eax,%eax
408921:	53                   	push   %ebx
408922:	53                   	push   %ebx
408923:	6a 02                	push   $0x2
408925:	53                   	push   %ebx
408926:	49                   	dec    %ecx
408927:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
40892d:	81 c1 00 00 00 c0    	add    $0xc0000000,%ecx
408933:	3a d3                	cmp    %bl,%dl
408935:	0f 95 c0             	setne  %al
408938:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40893b:	50                   	push   %eax
40893c:	51                   	push   %ecx
40893d:	ff 75 08             	push   0x8(%ebp)
408940:	89 45 0c             	mov    %eax,0xc(%ebp)
408943:	ff d7                	call   *%edi
408945:	89 46 04             	mov    %eax,0x4(%esi)
408948:	83 f8 ff             	cmp    $0xffffffff,%eax
40894b:	75 2f                	jne    0x40897c
40894d:	68 00 08 00 00       	push   $0x800
408952:	8d 85 fc ef ff ff    	lea    -0x1004(%ebp),%eax
408958:	50                   	push   %eax
408959:	ff 75 08             	push   0x8(%ebp)
40895c:	e8 f9 1d 00 00       	call   0x40a75a
408961:	84 c0                	test   %al,%al
408963:	74 17                	je     0x40897c
408965:	53                   	push   %ebx
408966:	53                   	push   %ebx
408967:	6a 02                	push   $0x2
408969:	53                   	push   %ebx
40896a:	ff 75 0c             	push   0xc(%ebp)
40896d:	8d 85 fc ef ff ff    	lea    -0x1004(%ebp),%eax
408973:	ff 75 fc             	push   -0x4(%ebp)
408976:	50                   	push   %eax
408977:	ff d7                	call   *%edi
408979:	89 46 04             	mov    %eax,0x4(%esi)
40897c:	68 00 08 00 00       	push   $0x800
408981:	ff 75 08             	push   0x8(%ebp)
408984:	8d 46 1e             	lea    0x1e(%esi),%eax
408987:	50                   	push   %eax
408988:	c6 46 12 01          	movb   $0x1,0x12(%esi)
40898c:	89 5e 0c             	mov    %ebx,0xc(%esi)
40898f:	88 5e 10             	mov    %bl,0x10(%esi)
408992:	e8 88 7f 00 00       	call   0x41091f
408997:	33 c0                	xor    %eax,%eax
408999:	83 7e 04 ff          	cmpl   $0xffffffff,0x4(%esi)
40899d:	5f                   	pop    %edi
40899e:	5e                   	pop    %esi
40899f:	0f 95 c0             	setne  %al
4089a2:	5b                   	pop    %ebx
4089a3:	c9                   	leave
4089a4:	c2 08 00             	ret    $0x8
4089a7:	ff 74 24 08          	push   0x8(%esp)
4089ab:	ff 74 24 08          	push   0x8(%esp)
4089af:	e8 2e ff ff ff       	call   0x4088e2
4089b4:	84 c0                	test   %al,%al
4089b6:	74 04                	je     0x4089bc
4089b8:	b0 01                	mov    $0x1,%al
4089ba:	eb 10                	jmp    0x4089cc
4089bc:	ff 74 24 04          	push   0x4(%esp)
4089c0:	b9 74 2a 43 00       	mov    $0x432a74,%ecx
4089c5:	e8 8e dc ff ff       	call   0x406658
4089ca:	32 c0                	xor    %al,%al
4089cc:	c2 08 00             	ret    $0x8
4089cf:	53                   	push   %ebx
4089d0:	56                   	push   %esi
4089d1:	8b f1                	mov    %ecx,%esi
4089d3:	8b 46 04             	mov    0x4(%esi),%eax
4089d6:	b3 01                	mov    $0x1,%bl
4089d8:	83 f8 ff             	cmp    $0xffffffff,%eax
4089db:	74 20                	je     0x4089fd
4089dd:	80 7e 10 00          	cmpb   $0x0,0x10(%esi)
4089e1:	75 16                	jne    0x4089f9
4089e3:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
4089e7:	75 10                	jne    0x4089f9
4089e9:	50                   	push   %eax
4089ea:	ff 15 1c a2 42 00    	call   *0x42a21c
4089f0:	8b d8                	mov    %eax,%ebx
4089f2:	4b                   	dec    %ebx
4089f3:	f7 db                	neg    %ebx
4089f5:	1a db                	sbb    %bl,%bl
4089f7:	fe c3                	inc    %bl
4089f9:	83 4e 04 ff          	orl    $0xffffffff,0x4(%esi)
4089fd:	83 66 0c 00          	andl   $0x0,0xc(%esi)
408a01:	84 db                	test   %bl,%bl
408a03:	75 13                	jne    0x408a18
408a05:	38 5e 14             	cmp    %bl,0x14(%esi)
408a08:	74 0e                	je     0x408a18
408a0a:	83 c6 1e             	add    $0x1e,%esi
408a0d:	56                   	push   %esi
408a0e:	b9 74 2a 43 00       	mov    $0x432a74,%ecx
408a13:	e8 03 db ff ff       	call   0x40651b
408a18:	5e                   	pop    %esi
408a19:	8a c3                	mov    %bl,%al
408a1b:	5b                   	pop    %ebx
408a1c:	c3                   	ret
408a1d:	56                   	push   %esi
408a1e:	8b f1                	mov    %ecx,%esi
408a20:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
408a24:	74 04                	je     0x408a2a
408a26:	32 c0                	xor    %al,%al
408a28:	5e                   	pop    %esi
408a29:	c3                   	ret
408a2a:	83 7e 04 ff          	cmpl   $0xffffffff,0x4(%esi)
408a2e:	74 05                	je     0x408a35
408a30:	e8 9a ff ff ff       	call   0x4089cf
408a35:	80 7e 13 00          	cmpb   $0x0,0x13(%esi)
408a39:	74 eb                	je     0x408a26
408a3b:	83 c6 1e             	add    $0x1e,%esi
408a3e:	56                   	push   %esi
408a3f:	e8 32 06 00 00       	call   0x409076
408a44:	5e                   	pop    %esi
408a45:	c3                   	ret
408a46:	55                   	push   %ebp
408a47:	8b ec                	mov    %esp,%ebp
408a49:	51                   	push   %ecx
408a4a:	53                   	push   %ebx
408a4b:	33 db                	xor    %ebx,%ebx
408a4d:	56                   	push   %esi
408a4e:	8b f1                	mov    %ecx,%esi
408a50:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
408a53:	0f 84 dc 00 00 00    	je     0x408b35
408a59:	83 7e 0c 01          	cmpl   $0x1,0xc(%esi)
408a5d:	75 0b                	jne    0x408a6a
408a5f:	6a f5                	push   $0xfffffff5
408a61:	ff 15 ec a1 42 00    	call   *0x42a1ec
408a67:	89 46 04             	mov    %eax,0x4(%esi)
408a6a:	57                   	push   %edi
408a6b:	89 5d fc             	mov    %ebx,-0x4(%ebp)
408a6e:	39 5e 0c             	cmp    %ebx,0xc(%esi)
408a71:	74 42                	je     0x408ab5
408a73:	33 ff                	xor    %edi,%edi
408a75:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
408a78:	76 5a                	jbe    0x408ad4
408a7a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408a7d:	2b cf                	sub    %edi,%ecx
408a7f:	b8 00 40 00 00       	mov    $0x4000,%eax
408a84:	3b c8                	cmp    %eax,%ecx
408a86:	73 02                	jae    0x408a8a
408a88:	8b c1                	mov    %ecx,%eax
408a8a:	53                   	push   %ebx
408a8b:	8d 4d fc             	lea    -0x4(%ebp),%ecx
408a8e:	51                   	push   %ecx
408a8f:	50                   	push   %eax
408a90:	8b 45 08             	mov    0x8(%ebp),%eax
408a93:	03 c7                	add    %edi,%eax
408a95:	50                   	push   %eax
408a96:	ff 76 04             	push   0x4(%esi)
408a99:	ff 15 e8 a1 42 00    	call   *0x42a1e8
408a9f:	48                   	dec    %eax
408aa0:	f7 d8                	neg    %eax
408aa2:	1a c0                	sbb    %al,%al
408aa4:	fe c0                	inc    %al
408aa6:	74 2c                	je     0x408ad4
408aa8:	81 c7 00 40 00 00    	add    $0x4000,%edi
408aae:	3b 7d 0c             	cmp    0xc(%ebp),%edi
408ab1:	72 c7                	jb     0x408a7a
408ab3:	eb 1b                	jmp    0x408ad0
408ab5:	53                   	push   %ebx
408ab6:	8d 45 fc             	lea    -0x4(%ebp),%eax
408ab9:	50                   	push   %eax
408aba:	ff 75 0c             	push   0xc(%ebp)
408abd:	ff 75 08             	push   0x8(%ebp)
408ac0:	ff 76 04             	push   0x4(%esi)
408ac3:	ff 15 e8 a1 42 00    	call   *0x42a1e8
408ac9:	48                   	dec    %eax
408aca:	f7 d8                	neg    %eax
408acc:	1a c0                	sbb    %al,%al
408ace:	fe c0                	inc    %al
408ad0:	3a c3                	cmp    %bl,%al
408ad2:	75 5c                	jne    0x408b30
408ad4:	38 5e 14             	cmp    %bl,0x14(%esi)
408ad7:	74 57                	je     0x408b30
408ad9:	39 5e 0c             	cmp    %ebx,0xc(%esi)
408adc:	75 52                	jne    0x408b30
408ade:	53                   	push   %ebx
408adf:	8d 46 1e             	lea    0x1e(%esi),%eax
408ae2:	bf 74 2a 43 00       	mov    $0x432a74,%edi
408ae7:	50                   	push   %eax
408ae8:	8b cf                	mov    %edi,%ecx
408aea:	e8 97 d9 ff ff       	call   0x406486
408aef:	84 c0                	test   %al,%al
408af1:	74 31                	je     0x408b24
408af3:	8b 45 fc             	mov    -0x4(%ebp),%eax
408af6:	3b 45 0c             	cmp    0xc(%ebp),%eax
408af9:	0f 83 6c ff ff ff    	jae    0x408a6b
408aff:	3b c3                	cmp    %ebx,%eax
408b01:	0f 86 64 ff ff ff    	jbe    0x408a6b
408b07:	8b 3e                	mov    (%esi),%edi
408b09:	53                   	push   %ebx
408b0a:	8b ce                	mov    %esi,%ecx
408b0c:	ff 57 10             	call   *0x10(%edi)
408b0f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408b12:	33 db                	xor    %ebx,%ebx
408b14:	2b c1                	sub    %ecx,%eax
408b16:	1b d3                	sbb    %ebx,%edx
408b18:	52                   	push   %edx
408b19:	50                   	push   %eax
408b1a:	8b ce                	mov    %esi,%ecx
408b1c:	ff 57 0c             	call   *0xc(%edi)
408b1f:	e9 47 ff ff ff       	jmp    0x408a6b
408b24:	8d 46 1e             	lea    0x1e(%esi),%eax
408b27:	50                   	push   %eax
408b28:	53                   	push   %ebx
408b29:	8b cf                	mov    %edi,%ecx
408b2b:	e8 fd da ff ff       	call   0x40662d
408b30:	c6 46 08 01          	movb   $0x1,0x8(%esi)
408b34:	5f                   	pop    %edi
408b35:	5e                   	pop    %esi
408b36:	5b                   	pop    %ebx
408b37:	c9                   	leave
408b38:	c2 08 00             	ret    $0x8
408b3b:	55                   	push   %ebp
408b3c:	8b ec                	mov    %esp,%ebp
408b3e:	51                   	push   %ecx
408b3f:	53                   	push   %ebx
408b40:	56                   	push   %esi
408b41:	8b f1                	mov    %ecx,%esi