406587:	8b c7                	mov    %edi,%eax
406589:	56                   	push   %esi
40658a:	ff 75 10             	push   0x10(%ebp)
40658d:	e8 d3 fd ff ff       	call   0x406365
406592:	83 c4 18             	add    $0x18,%esp
406595:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406598:	5f                   	pop    %edi
406599:	5e                   	pop    %esi
40659a:	33 cd                	xor    %ebp,%ecx
40659c:	5b                   	pop    %ebx
40659d:	e8 5e aa ff ff       	call   0x401000
4065a2:	c9                   	leave
4065a3:	c3                   	ret
4065a4:	8b ff                	mov    %edi,%edi
4065a6:	55                   	push   %ebp
4065a7:	8b ec                	mov    %esp,%ebp
4065a9:	6a 00                	push   $0x0
4065ab:	ff 75 18             	push   0x18(%ebp)
4065ae:	ff 75 14             	push   0x14(%ebp)
4065b1:	ff 75 10             	push   0x10(%ebp)
4065b4:	ff 75 0c             	push   0xc(%ebp)
4065b7:	ff 75 08             	push   0x8(%ebp)
4065ba:	e8 15 ff ff ff       	call   0x4064d4
4065bf:	83 c4 18             	add    $0x18,%esp
4065c2:	5d                   	pop    %ebp
4065c3:	c3                   	ret
4065c4:	8b ff                	mov    %edi,%edi
4065c6:	55                   	push   %ebp
4065c7:	8b ec                	mov    %esp,%ebp
4065c9:	83 ec 24             	sub    $0x24,%esp
4065cc:	56                   	push   %esi
4065cd:	57                   	push   %edi
4065ce:	ff 75 1c             	push   0x1c(%ebp)
4065d1:	8d 4d dc             	lea    -0x24(%ebp),%ecx
4065d4:	c7 45 ec ff 03 00 00 	movl   $0x3ff,-0x14(%ebp)
4065db:	33 ff                	xor    %edi,%edi
4065dd:	c7 45 fc 30 00 00 00 	movl   $0x30,-0x4(%ebp)
4065e4:	e8 e5 df ff ff       	call   0x4045ce
4065e9:	39 7d 14             	cmp    %edi,0x14(%ebp)
4065ec:	7d 03                	jge    0x4065f1
4065ee:	89 7d 14             	mov    %edi,0x14(%ebp)
4065f1:	8b 75 0c             	mov    0xc(%ebp),%esi
4065f4:	3b f7                	cmp    %edi,%esi
4065f6:	75 2b                	jne    0x406623
4065f8:	e8 4f c8 ff ff       	call   0x402e4c
4065fd:	6a 16                	push   $0x16
4065ff:	5e                   	pop    %esi
406600:	57                   	push   %edi
406601:	57                   	push   %edi
406602:	57                   	push   %edi
406603:	57                   	push   %edi
406604:	57                   	push   %edi
406605:	89 30                	mov    %esi,(%eax)
406607:	e8 35 d6 ff ff       	call   0x403c41
40660c:	83 c4 14             	add    $0x14,%esp
40660f:	80 7d e8 00          	cmpb   $0x0,-0x18(%ebp)
406613:	74 07                	je     0x40661c
406615:	8b 45 e4             	mov    -0x1c(%ebp),%eax
406618:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
40661c:	8b c6                	mov    %esi,%eax
40661e:	e9 10 03 00 00       	jmp    0x406933
406623:	39 7d 10             	cmp    %edi,0x10(%ebp)
406626:	76 d0                	jbe    0x4065f8
406628:	8b 45 14             	mov    0x14(%ebp),%eax
40662b:	83 c0 0b             	add    $0xb,%eax
40662e:	c6 06 00             	movb   $0x0,(%esi)
406631:	39 45 10             	cmp    %eax,0x10(%ebp)
406634:	77 09                	ja     0x40663f
406636:	e8 11 c8 ff ff       	call   0x402e4c
40663b:	6a 22                	push   $0x22
40663d:	eb c0                	jmp    0x4065ff
40663f:	8b 7d 08             	mov    0x8(%ebp),%edi
406642:	8b 07                	mov    (%edi),%eax
406644:	89 45 f4             	mov    %eax,-0xc(%ebp)
406647:	8b 47 04             	mov    0x4(%edi),%eax
40664a:	8b c8                	mov    %eax,%ecx
40664c:	c1 e9 14             	shr    $0x14,%ecx
40664f:	ba ff 07 00 00       	mov    $0x7ff,%edx
406654:	53                   	push   %ebx
406655:	23 ca                	and    %edx,%ecx
406657:	33 db                	xor    %ebx,%ebx
406659:	3b ca                	cmp    %edx,%ecx
40665b:	0f 85 90 00 00 00    	jne    0x4066f1
406661:	85 db                	test   %ebx,%ebx
406663:	0f 85 88 00 00 00    	jne    0x4066f1
406669:	8b 45 10             	mov    0x10(%ebp),%eax
40666c:	83 f8 ff             	cmp    $0xffffffff,%eax
40666f:	75 04                	jne    0x406675
406671:	0b c0                	or     %eax,%eax
406673:	eb 03                	jmp    0x406678
406675:	83 c0 fe             	add    $0xfffffffe,%eax
406678:	6a 00                	push   $0x0
40667a:	ff 75 14             	push   0x14(%ebp)
40667d:	8d 5e 02             	lea    0x2(%esi),%ebx
406680:	50                   	push   %eax
406681:	53                   	push   %ebx
406682:	57                   	push   %edi
406683:	e8 1c ff ff ff       	call   0x4065a4
406688:	83 c4 14             	add    $0x14,%esp
40668b:	85 c0                	test   %eax,%eax
40668d:	74 19                	je     0x4066a8
40668f:	80 7d e8 00          	cmpb   $0x0,-0x18(%ebp)
406693:	c6 06 00             	movb   $0x0,(%esi)
406696:	0f 84 96 02 00 00    	je     0x406932
40669c:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40669f:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
4066a3:	e9 8a 02 00 00       	jmp    0x406932
4066a8:	80 3b 2d             	cmpb   $0x2d,(%ebx)
4066ab:	75 04                	jne    0x4066b1
4066ad:	c6 06 2d             	movb   $0x2d,(%esi)
4066b0:	46                   	inc    %esi
4066b1:	c6 06 30             	movb   $0x30,(%esi)
4066b4:	46                   	inc    %esi
4066b5:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
4066b9:	6a 65                	push   $0x65
4066bb:	0f 94 c0             	sete   %al
4066be:	fe c8                	dec    %al
4066c0:	24 e0                	and    $0xe0,%al
4066c2:	04 78                	add    $0x78,%al
4066c4:	88 06                	mov    %al,(%esi)
4066c6:	46                   	inc    %esi
4066c7:	56                   	push   %esi
4066c8:	e8 03 1d 00 00       	call   0x4083d0
4066cd:	59                   	pop    %ecx
4066ce:	59                   	pop    %ecx
4066cf:	85 c0                	test   %eax,%eax
4066d1:	0f 84 4c 02 00 00    	je     0x406923
4066d7:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
4066db:	0f 94 c1             	sete   %cl
4066de:	fe c9                	dec    %cl
4066e0:	80 e1 e0             	and    $0xe0,%cl
4066e3:	80 c1 70             	add    $0x70,%cl
4066e6:	88 08                	mov    %cl,(%eax)
4066e8:	c6 40 03 00          	movb   $0x0,0x3(%eax)
4066ec:	e9 32 02 00 00       	jmp    0x406923
4066f1:	25 00 00 00 80       	and    $0x80000000,%eax
4066f6:	33 c9                	xor    %ecx,%ecx
4066f8:	0b c8                	or     %eax,%ecx
4066fa:	74 04                	je     0x406700
4066fc:	c6 06 2d             	movb   $0x2d,(%esi)
4066ff:	46                   	inc    %esi
406700:	8b 5d 18             	mov    0x18(%ebp),%ebx
406703:	c6 06 30             	movb   $0x30,(%esi)
406706:	46                   	inc    %esi
406707:	85 db                	test   %ebx,%ebx
406709:	0f 94 c0             	sete   %al
40670c:	fe c8                	dec    %al
40670e:	24 e0                	and    $0xe0,%al
406710:	04 78                	add    $0x78,%al
406712:	88 06                	mov    %al,(%esi)
406714:	8b 4f 04             	mov    0x4(%edi),%ecx
406717:	46                   	inc    %esi
406718:	f7 db                	neg    %ebx
40671a:	1b db                	sbb    %ebx,%ebx
40671c:	83 e3 e0             	and    $0xffffffe0,%ebx
40671f:	81 e1 00 00 f0 7f    	and    $0x7ff00000,%ecx
406725:	33 c0                	xor    %eax,%eax
406727:	83 c3 27             	add    $0x27,%ebx
40672a:	33 d2                	xor    %edx,%edx
40672c:	0b c1                	or     %ecx,%eax
40672e:	75 21                	jne    0x406751
406730:	c6 06 30             	movb   $0x30,(%esi)
406733:	8b 4f 04             	mov    0x4(%edi),%ecx
406736:	8b 07                	mov    (%edi),%eax
406738:	81 e1 ff ff 0f 00    	and    $0xfffff,%ecx
40673e:	46                   	inc    %esi
40673f:	0b c1                	or     %ecx,%eax
406741:	75 05                	jne    0x406748
406743:	89 55 ec             	mov    %edx,-0x14(%ebp)
406746:	eb 0d                	jmp    0x406755
406748:	c7 45 ec fe 03 00 00 	movl   $0x3fe,-0x14(%ebp)
40674f:	eb 04                	jmp    0x406755
406751:	c6 06 31             	movb   $0x31,(%esi)
406754:	46                   	inc    %esi
406755:	8b c6                	mov    %esi,%eax
406757:	46                   	inc    %esi
406758:	89 45 0c             	mov    %eax,0xc(%ebp)
40675b:	39 55 14             	cmp    %edx,0x14(%ebp)
40675e:	75 04                	jne    0x406764
406760:	88 10                	mov    %dl,(%eax)
406762:	eb 0f                	jmp    0x406773
406764:	8b 4d dc             	mov    -0x24(%ebp),%ecx
406767:	8b 89 bc 00 00 00    	mov    0xbc(%ecx),%ecx
40676d:	8b 09                	mov    (%ecx),%ecx
40676f:	8a 09                	mov    (%ecx),%cl
406771:	88 08                	mov    %cl,(%eax)
406773:	8b 4f 04             	mov    0x4(%edi),%ecx
406776:	8b 07                	mov    (%edi),%eax
406778:	81 e1 ff ff 0f 00    	and    $0xfffff,%ecx
40677e:	89 4d f8             	mov    %ecx,-0x8(%ebp)
406781:	77 08                	ja     0x40678b
406783:	3b c2                	cmp    %edx,%eax
406785:	0f 86 b5 00 00 00    	jbe    0x406840
40678b:	89 55 f4             	mov    %edx,-0xc(%ebp)
40678e:	c7 45 f8 00 00 0f 00 	movl   $0xf0000,-0x8(%ebp)
406795:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
406799:	7e 4d                	jle    0x4067e8
40679b:	8b 57 04             	mov    0x4(%edi),%edx
40679e:	23 55 f8             	and    -0x8(%ebp),%edx
4067a1:	8b 07                	mov    (%edi),%eax
4067a3:	0f bf 4d fc          	movswl -0x4(%ebp),%ecx
4067a7:	23 45 f4             	and    -0xc(%ebp),%eax
4067aa:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
4067b0:	e8 cb 21 00 00       	call   0x408980
4067b5:	66 83 c0 30          	add    $0x30,%ax
4067b9:	0f b7 c0             	movzwl %ax,%eax
4067bc:	66 83 f8 39          	cmp    $0x39,%ax
4067c0:	76 02                	jbe    0x4067c4
4067c2:	03 c3                	add    %ebx,%eax
4067c4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4067c7:	83 6d fc 04          	subl   $0x4,-0x4(%ebp)
4067cb:	88 06                	mov    %al,(%esi)
4067cd:	8b 45 f4             	mov    -0xc(%ebp),%eax
4067d0:	0f ac c8 04          	shrd   $0x4,%ecx,%eax
4067d4:	c1 e9 04             	shr    $0x4,%ecx
4067d7:	46                   	inc    %esi
4067d8:	ff 4d 14             	decl   0x14(%ebp)
4067db:	66 83 7d fc 00       	cmpw   $0x0,-0x4(%ebp)
4067e0:	89 45 f4             	mov    %eax,-0xc(%ebp)
4067e3:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4067e6:	7d ad                	jge    0x406795
4067e8:	66 83 7d fc 00       	cmpw   $0x0,-0x4(%ebp)
4067ed:	7c 51                	jl     0x406840
4067ef:	8b 57 04             	mov    0x4(%edi),%edx
4067f2:	23 55 f8             	and    -0x8(%ebp),%edx
4067f5:	8b 07                	mov    (%edi),%eax
4067f7:	0f bf 4d fc          	movswl -0x4(%ebp),%ecx
4067fb:	23 45 f4             	and    -0xc(%ebp),%eax
4067fe:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
406804:	e8 77 21 00 00       	call   0x408980
406809:	66 83 f8 08          	cmp    $0x8,%ax
40680d:	76 31                	jbe    0x406840
40680f:	8d 46 ff             	lea    -0x1(%esi),%eax
406812:	8a 08                	mov    (%eax),%cl
406814:	80 f9 66             	cmp    $0x66,%cl
406817:	74 05                	je     0x40681e
406819:	80 f9 46             	cmp    $0x46,%cl
40681c:	75 06                	jne    0x406824
40681e:	c6 00 30             	movb   $0x30,(%eax)
406821:	48                   	dec    %eax
406822:	eb ee                	jmp    0x406812
406824:	3b 45 0c             	cmp    0xc(%ebp),%eax
406827:	74 14                	je     0x40683d
406829:	8a 08                	mov    (%eax),%cl
40682b:	80 f9 39             	cmp    $0x39,%cl
40682e:	75 07                	jne    0x406837
406830:	80 c3 3a             	add    $0x3a,%bl
406833:	88 18                	mov    %bl,(%eax)
406835:	eb 09                	jmp    0x406840
406837:	fe c1                	inc    %cl
406839:	88 08                	mov    %cl,(%eax)
40683b:	eb 03                	jmp    0x406840
40683d:	fe 40 ff             	incb   -0x1(%eax)
406840:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
406844:	7e 11                	jle    0x406857
406846:	ff 75 14             	push   0x14(%ebp)
406849:	6a 30                	push   $0x30
40684b:	56                   	push   %esi
40684c:	e8 ef 05 00 00       	call   0x406e40
406851:	83 c4 0c             	add    $0xc,%esp
406854:	03 75 14             	add    0x14(%ebp),%esi
406857:	8b 45 0c             	mov    0xc(%ebp),%eax
40685a:	80 38 00             	cmpb   $0x0,(%eax)
40685d:	75 02                	jne    0x406861
40685f:	8b f0                	mov    %eax,%esi
406861:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
406865:	b1 34                	mov    $0x34,%cl
406867:	0f 94 c0             	sete   %al
40686a:	fe c8                	dec    %al
40686c:	24 e0                	and    $0xe0,%al
40686e:	04 70                	add    $0x70,%al
406870:	88 06                	mov    %al,(%esi)
406872:	8b 07                	mov    (%edi),%eax
406874:	8b 57 04             	mov    0x4(%edi),%edx
406877:	46                   	inc    %esi
406878:	e8 03 21 00 00       	call   0x408980
40687d:	33 db                	xor    %ebx,%ebx
40687f:	25 ff 07 00 00       	and    $0x7ff,%eax
406884:	23 d3                	and    %ebx,%edx
406886:	2b 45 ec             	sub    -0x14(%ebp),%eax
406889:	53                   	push   %ebx
40688a:	59                   	pop    %ecx
40688b:	1b d1                	sbb    %ecx,%edx
40688d:	78 0c                	js     0x40689b
40688f:	7f 04                	jg     0x406895
406891:	3b c3                	cmp    %ebx,%eax
406893:	72 06                	jb     0x40689b
406895:	c6 06 2b             	movb   $0x2b,(%esi)
406898:	46                   	inc    %esi
406899:	eb 0a                	jmp    0x4068a5
40689b:	c6 06 2d             	movb   $0x2d,(%esi)
40689e:	46                   	inc    %esi
40689f:	f7 d8                	neg    %eax
4068a1:	13 d3                	adc    %ebx,%edx
4068a3:	f7 da                	neg    %edx
4068a5:	3b d3                	cmp    %ebx,%edx
4068a7:	8b fe                	mov    %esi,%edi
4068a9:	c6 06 30             	movb   $0x30,(%esi)
4068ac:	7c 24                	jl     0x4068d2
4068ae:	b9 e8 03 00 00       	mov    $0x3e8,%ecx
4068b3:	7f 04                	jg     0x4068b9
4068b5:	3b c1                	cmp    %ecx,%eax
4068b7:	72 19                	jb     0x4068d2
4068b9:	53                   	push   %ebx
4068ba:	51                   	push   %ecx
4068bb:	52                   	push   %edx
4068bc:	50                   	push   %eax
4068bd:	e8 de 1f 00 00       	call   0x4088a0
4068c2:	04 30                	add    $0x30,%al
4068c4:	88 06                	mov    %al,(%esi)
4068c6:	46                   	inc    %esi
4068c7:	89 55 f0             	mov    %edx,-0x10(%ebp)
4068ca:	8b c1                	mov    %ecx,%eax
4068cc:	8b d3                	mov    %ebx,%edx
4068ce:	3b f7                	cmp    %edi,%esi
4068d0:	75 0b                	jne    0x4068dd
4068d2:	85 d2                	test   %edx,%edx
4068d4:	7c 1e                	jl     0x4068f4
4068d6:	7f 05                	jg     0x4068dd
4068d8:	83 f8 64             	cmp    $0x64,%eax
4068db:	72 17                	jb     0x4068f4
4068dd:	6a 00                	push   $0x0
4068df:	6a 64                	push   $0x64
4068e1:	52                   	push   %edx
4068e2:	50                   	push   %eax
4068e3:	e8 b8 1f 00 00       	call   0x4088a0
4068e8:	04 30                	add    $0x30,%al
4068ea:	88 06                	mov    %al,(%esi)
4068ec:	89 55 f0             	mov    %edx,-0x10(%ebp)
4068ef:	46                   	inc    %esi
4068f0:	8b c1                	mov    %ecx,%eax
4068f2:	8b d3                	mov    %ebx,%edx
4068f4:	3b f7                	cmp    %edi,%esi
4068f6:	75 0b                	jne    0x406903
4068f8:	85 d2                	test   %edx,%edx
4068fa:	7c 1f                	jl     0x40691b
4068fc:	7f 05                	jg     0x406903
4068fe:	83 f8 0a             	cmp    $0xa,%eax
406901:	72 18                	jb     0x40691b
406903:	6a 00                	push   $0x0
406905:	6a 0a                	push   $0xa
406907:	52                   	push   %edx
406908:	50                   	push   %eax
406909:	e8 92 1f 00 00       	call   0x4088a0
40690e:	04 30                	add    $0x30,%al
406910:	88 06                	mov    %al,(%esi)
406912:	89 55 f0             	mov    %edx,-0x10(%ebp)
406915:	46                   	inc    %esi
406916:	8b c1                	mov    %ecx,%eax
406918:	89 5d f0             	mov    %ebx,-0x10(%ebp)