40865f:	8b 4d 08             	mov    0x8(%ebp),%ecx
408662:	8b 55 10             	mov    0x10(%ebp),%edx
408665:	53                   	push   %ebx
408666:	56                   	push   %esi
408667:	8b 75 0c             	mov    0xc(%ebp),%esi
40866a:	33 db                	xor    %ebx,%ebx
40866c:	57                   	push   %edi
40866d:	8b 7d 18             	mov    0x18(%ebp),%edi
408670:	89 1f                	mov    %ebx,(%edi)
408672:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
408678:	85 f6                	test   %esi,%esi
40867a:	74 08                	je     0x408684
40867c:	89 16                	mov    %edx,(%esi)
40867e:	83 c6 04             	add    $0x4,%esi
408681:	89 75 0c             	mov    %esi,0xc(%ebp)
408684:	c7 45 f8 20 00 00 00 	movl   $0x20,-0x8(%ebp)
40868b:	c7 45 f4 09 00 00 00 	movl   $0x9,-0xc(%ebp)
408692:	6a 22                	push   $0x22
408694:	58                   	pop    %eax
408695:	66 39 01             	cmp    %ax,(%ecx)
408698:	75 0a                	jne    0x4086a4
40869a:	84 db                	test   %bl,%bl
40869c:	0f 94 c3             	sete   %bl
40869f:	83 c1 02             	add    $0x2,%ecx
4086a2:	eb 1a                	jmp    0x4086be
4086a4:	ff 07                	incl   (%edi)
4086a6:	85 d2                	test   %edx,%edx
4086a8:	74 09                	je     0x4086b3
4086aa:	66 8b 01             	mov    (%ecx),%ax
4086ad:	66 89 02             	mov    %ax,(%edx)
4086b0:	83 c2 02             	add    $0x2,%edx
4086b3:	0f b7 01             	movzwl (%ecx),%eax
4086b6:	83 c1 02             	add    $0x2,%ecx
4086b9:	66 85 c0             	test   %ax,%ax
4086bc:	74 1f                	je     0x4086dd
4086be:	84 db                	test   %bl,%bl
4086c0:	75 d0                	jne    0x408692
4086c2:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
4086c6:	74 09                	je     0x4086d1
4086c8:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
4086cc:	6a 22                	push   $0x22
4086ce:	58                   	pop    %eax
4086cf:	75 c4                	jne    0x408695
4086d1:	85 d2                	test   %edx,%edx
4086d3:	74 0b                	je     0x4086e0
4086d5:	33 c0                	xor    %eax,%eax
4086d7:	66 89 42 fe          	mov    %ax,-0x2(%edx)
4086db:	eb 03                	jmp    0x4086e0
4086dd:	83 e9 02             	sub    $0x2,%ecx
4086e0:	8b 5d 14             	mov    0x14(%ebp),%ebx
4086e3:	33 c0                	xor    %eax,%eax
4086e5:	88 45 ff             	mov    %al,-0x1(%ebp)
4086e8:	66 39 01             	cmp    %ax,(%ecx)
4086eb:	0f 84 da 00 00 00    	je     0x4087cb
4086f1:	0f b7 01             	movzwl (%ecx),%eax
4086f4:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
4086f8:	74 06                	je     0x408700
4086fa:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
4086fe:	75 05                	jne    0x408705
408700:	83 c1 02             	add    $0x2,%ecx
408703:	eb ec                	jmp    0x4086f1
408705:	33 c0                	xor    %eax,%eax
408707:	66 39 01             	cmp    %ax,(%ecx)
40870a:	0f 84 bb 00 00 00    	je     0x4087cb
408710:	85 f6                	test   %esi,%esi
408712:	74 08                	je     0x40871c
408714:	89 16                	mov    %edx,(%esi)
408716:	83 c6 04             	add    $0x4,%esi
408719:	89 75 0c             	mov    %esi,0xc(%ebp)
40871c:	ff 03                	incl   (%ebx)
40871e:	33 db                	xor    %ebx,%ebx
408720:	6a 5c                	push   $0x5c
408722:	5e                   	pop    %esi
408723:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40872a:	8b c3                	mov    %ebx,%eax
40872c:	eb 04                	jmp    0x408732
40872e:	83 c1 02             	add    $0x2,%ecx
408731:	40                   	inc    %eax
408732:	66 39 31             	cmp    %si,(%ecx)
408735:	74 f7                	je     0x40872e
408737:	6a 22                	push   $0x22
408739:	5e                   	pop    %esi
40873a:	66 39 31             	cmp    %si,(%ecx)
40873d:	6a 5c                	push   $0x5c
40873f:	5e                   	pop    %esi
408740:	75 38                	jne    0x40877a
408742:	a8 01                	test   $0x1,%al
408744:	75 20                	jne    0x408766
408746:	38 5d ff             	cmp    %bl,-0x1(%ebp)
408749:	74 11                	je     0x40875c
40874b:	6a 22                	push   $0x22
40874d:	5e                   	pop    %esi
40874e:	66 39 71 02          	cmp    %si,0x2(%ecx)
408752:	6a 5c                	push   $0x5c
408754:	5e                   	pop    %esi
408755:	75 05                	jne    0x40875c
408757:	83 c1 02             	add    $0x2,%ecx
40875a:	eb 0a                	jmp    0x408766
40875c:	38 5d ff             	cmp    %bl,-0x1(%ebp)
40875f:	89 5d f0             	mov    %ebx,-0x10(%ebp)
408762:	0f 94 45 ff          	sete   -0x1(%ebp)
408766:	8b 7d 18             	mov    0x18(%ebp),%edi
408769:	d1 e8                	shr    $1,%eax
40876b:	eb 0d                	jmp    0x40877a
40876d:	48                   	dec    %eax
40876e:	85 d2                	test   %edx,%edx
408770:	74 06                	je     0x408778
408772:	66 89 32             	mov    %si,(%edx)
408775:	83 c2 02             	add    $0x2,%edx
408778:	ff 07                	incl   (%edi)
40877a:	85 c0                	test   %eax,%eax
40877c:	75 ef                	jne    0x40876d
40877e:	0f b7 01             	movzwl (%ecx),%eax
408781:	66 85 c0             	test   %ax,%ax
408784:	74 2a                	je     0x4087b0
408786:	38 5d ff             	cmp    %bl,-0x1(%ebp)
408789:	75 0c                	jne    0x408797
40878b:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
40878f:	74 1f                	je     0x4087b0
408791:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
408795:	74 19                	je     0x4087b0
408797:	39 5d f0             	cmp    %ebx,-0x10(%ebp)
40879a:	74 0c                	je     0x4087a8
40879c:	85 d2                	test   %edx,%edx
40879e:	74 06                	je     0x4087a6
4087a0:	66 89 02             	mov    %ax,(%edx)
4087a3:	83 c2 02             	add    $0x2,%edx
4087a6:	ff 07                	incl   (%edi)
4087a8:	83 c1 02             	add    $0x2,%ecx
4087ab:	e9 73 ff ff ff       	jmp    0x408723
4087b0:	8b 75 0c             	mov    0xc(%ebp),%esi
4087b3:	8b 5d 14             	mov    0x14(%ebp),%ebx
4087b6:	85 d2                	test   %edx,%edx
4087b8:	74 08                	je     0x4087c2
4087ba:	33 c0                	xor    %eax,%eax
4087bc:	66 89 02             	mov    %ax,(%edx)
4087bf:	83 c2 02             	add    $0x2,%edx
4087c2:	ff 07                	incl   (%edi)
4087c4:	33 c0                	xor    %eax,%eax
4087c6:	e9 1d ff ff ff       	jmp    0x4086e8
4087cb:	85 f6                	test   %esi,%esi
4087cd:	74 02                	je     0x4087d1
4087cf:	89 06                	mov    %eax,(%esi)
4087d1:	ff 03                	incl   (%ebx)
4087d3:	5f                   	pop    %edi
4087d4:	5e                   	pop    %esi
4087d5:	5b                   	pop    %ebx
4087d6:	8b e5                	mov    %ebp,%esp
4087d8:	5d                   	pop    %ebp
4087d9:	c3                   	ret
4087da:	8b ff                	mov    %edi,%edi
4087dc:	55                   	push   %ebp
4087dd:	8b ec                	mov    %esp,%ebp
4087df:	56                   	push   %esi
4087e0:	8b 75 08             	mov    0x8(%ebp),%esi
4087e3:	81 fe ff ff ff 3f    	cmp    $0x3fffffff,%esi
4087e9:	72 04                	jb     0x4087ef
4087eb:	33 c0                	xor    %eax,%eax
4087ed:	eb 3d                	jmp    0x40882c
4087ef:	57                   	push   %edi
4087f0:	83 cf ff             	or     $0xffffffff,%edi
4087f3:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4087f6:	33 d2                	xor    %edx,%edx
4087f8:	8b c7                	mov    %edi,%eax
4087fa:	f7 75 10             	divl   0x10(%ebp)
4087fd:	3b c8                	cmp    %eax,%ecx
4087ff:	73 0d                	jae    0x40880e
408801:	0f af 4d 10          	imul   0x10(%ebp),%ecx
408805:	c1 e6 02             	shl    $0x2,%esi
408808:	2b fe                	sub    %esi,%edi
40880a:	3b f9                	cmp    %ecx,%edi
40880c:	77 04                	ja     0x408812
40880e:	33 c0                	xor    %eax,%eax
408810:	eb 19                	jmp    0x40882b
408812:	8d 04 31             	lea    (%ecx,%esi,1),%eax
408815:	6a 01                	push   $0x1
408817:	50                   	push   %eax
408818:	e8 8f 10 00 00       	call   0x4098ac
40881d:	6a 00                	push   $0x0
40881f:	8b f0                	mov    %eax,%esi
408821:	e8 fe 0f 00 00       	call   0x409824
408826:	83 c4 0c             	add    $0xc,%esp
408829:	8b c6                	mov    %esi,%eax
40882b:	5f                   	pop    %edi
40882c:	5e                   	pop    %esi
40882d:	5d                   	pop    %ebp
40882e:	c3                   	ret
40882f:	8b ff                	mov    %edi,%edi
408831:	55                   	push   %ebp
408832:	8b ec                	mov    %esp,%ebp
408834:	5d                   	pop    %ebp
408835:	e9 fb fc ff ff       	jmp    0x408535
40883a:	a1 4c 41 42 00       	mov    0x42414c,%eax
40883f:	85 c0                	test   %eax,%eax
408841:	75 25                	jne    0x408868
408843:	39 05 50 41 42 00    	cmp    %eax,0x424150
408849:	75 03                	jne    0x40884e
40884b:	33 c0                	xor    %eax,%eax
40884d:	c3                   	ret
40884e:	e8 45 00 00 00       	call   0x408898
408853:	85 c0                	test   %eax,%eax
408855:	75 f4                	jne    0x40884b
408857:	e8 e3 02 00 00       	call   0x408b3f
40885c:	f7 d8                	neg    %eax
40885e:	1b c0                	sbb    %eax,%eax
408860:	f7 d0                	not    %eax
408862:	23 05 4c 41 42 00    	and    0x42414c,%eax
408868:	c3                   	ret
408869:	a1 50 41 42 00       	mov    0x424150,%eax
40886e:	85 c0                	test   %eax,%eax
408870:	75 25                	jne    0x408897
408872:	39 05 4c 41 42 00    	cmp    %eax,0x42414c
408878:	75 03                	jne    0x40887d
40887a:	33 c0                	xor    %eax,%eax
40887c:	c3                   	ret
40887d:	e8 6f 00 00 00       	call   0x4088f1
408882:	85 c0                	test   %eax,%eax
408884:	75 f4                	jne    0x40887a
408886:	e8 33 03 00 00       	call   0x408bbe
40888b:	f7 d8                	neg    %eax
40888d:	1b c0                	sbb    %eax,%eax
40888f:	f7 d0                	not    %eax
408891:	23 05 50 41 42 00    	and    0x424150,%eax
408897:	c3                   	ret
408898:	83 3d 4c 41 42 00 00 	cmpl   $0x0,0x42414c
40889f:	74 03                	je     0x4088a4
4088a1:	33 c0                	xor    %eax,%eax
4088a3:	c3                   	ret
4088a4:	56                   	push   %esi
4088a5:	57                   	push   %edi
4088a6:	e8 58 70 00 00       	call   0x40f903
4088ab:	e8 bc 73 00 00       	call   0x40fc6c
4088b0:	8b f0                	mov    %eax,%esi
4088b2:	85 f6                	test   %esi,%esi
4088b4:	75 05                	jne    0x4088bb
4088b6:	83 cf ff             	or     $0xffffffff,%edi
4088b9:	eb 2a                	jmp    0x4088e5
4088bb:	56                   	push   %esi
4088bc:	e8 84 00 00 00       	call   0x408945
4088c1:	59                   	pop    %ecx
4088c2:	85 c0                	test   %eax,%eax
4088c4:	75 05                	jne    0x4088cb
4088c6:	83 cf ff             	or     $0xffffffff,%edi
4088c9:	eb 12                	jmp    0x4088dd
4088cb:	50                   	push   %eax
4088cc:	b9 4c 41 42 00       	mov    $0x42414c,%ecx
4088d1:	a3 58 41 42 00       	mov    %eax,0x424158
4088d6:	e8 bb 7c 00 00       	call   0x410596
4088db:	33 ff                	xor    %edi,%edi
4088dd:	6a 00                	push   $0x0
4088df:	e8 40 0f 00 00       	call   0x409824
4088e4:	59                   	pop    %ecx
4088e5:	56                   	push   %esi
4088e6:	e8 39 0f 00 00       	call   0x409824
4088eb:	59                   	pop    %ecx
4088ec:	8b c7                	mov    %edi,%eax
4088ee:	5f                   	pop    %edi
4088ef:	5e                   	pop    %esi
4088f0:	c3                   	ret
4088f1:	83 3d 50 41 42 00 00 	cmpl   $0x0,0x424150
4088f8:	74 03                	je     0x4088fd
4088fa:	33 c0                	xor    %eax,%eax
4088fc:	c3                   	ret
4088fd:	56                   	push   %esi
4088fe:	57                   	push   %edi
4088ff:	e8 eb 73 00 00       	call   0x40fcef
408904:	8b f0                	mov    %eax,%esi
408906:	85 f6                	test   %esi,%esi
408908:	75 05                	jne    0x40890f
40890a:	83 cf ff             	or     $0xffffffff,%edi
40890d:	eb 2a                	jmp    0x408939
40890f:	56                   	push   %esi
408910:	e8 01 01 00 00       	call   0x408a16
408915:	59                   	pop    %ecx
408916:	85 c0                	test   %eax,%eax
408918:	75 05                	jne    0x40891f
40891a:	83 cf ff             	or     $0xffffffff,%edi
40891d:	eb 12                	jmp    0x408931
40891f:	50                   	push   %eax
408920:	b9 50 41 42 00       	mov    $0x424150,%ecx
408925:	a3 54 41 42 00       	mov    %eax,0x424154
40892a:	e8 67 7c 00 00       	call   0x410596
40892f:	33 ff                	xor    %edi,%edi
408931:	6a 00                	push   $0x0
408933:	e8 ec 0e 00 00       	call   0x409824
408938:	59                   	pop    %ecx
408939:	56                   	push   %esi
40893a:	e8 e5 0e 00 00       	call   0x409824
40893f:	59                   	pop    %ecx
408940:	8b c7                	mov    %edi,%eax
408942:	5f                   	pop    %edi
408943:	5e                   	pop    %esi
408944:	c3                   	ret
408945:	8b ff                	mov    %edi,%edi
408947:	55                   	push   %ebp
408948:	8b ec                	mov    %esp,%ebp
40894a:	51                   	push   %ecx
40894b:	51                   	push   %ecx
40894c:	53                   	push   %ebx
40894d:	56                   	push   %esi
40894e:	57                   	push   %edi
40894f:	8b 7d 08             	mov    0x8(%ebp),%edi
408952:	33 d2                	xor    %edx,%edx
408954:	8b f7                	mov    %edi,%esi
408956:	8a 07                	mov    (%edi),%al
408958:	eb 18                	jmp    0x408972
40895a:	3c 3d                	cmp    $0x3d,%al
40895c:	74 01                	je     0x40895f
40895e:	42                   	inc    %edx
40895f:	8b ce                	mov    %esi,%ecx
408961:	8d 59 01             	lea    0x1(%ecx),%ebx
408964:	8a 01                	mov    (%ecx),%al
408966:	41                   	inc    %ecx
408967:	84 c0                	test   %al,%al
408969:	75 f9                	jne    0x408964
40896b:	2b cb                	sub    %ebx,%ecx
40896d:	46                   	inc    %esi
40896e:	03 f1                	add    %ecx,%esi
408970:	8a 06                	mov    (%esi),%al
408972:	84 c0                	test   %al,%al
408974:	75 e4                	jne    0x40895a
408976:	8d 42 01             	lea    0x1(%edx),%eax
408979:	6a 04                	push   $0x4
40897b:	50                   	push   %eax
40897c:	e8 2b 0f 00 00       	call   0x4098ac
408981:	8b d8                	mov    %eax,%ebx
408983:	59                   	pop    %ecx
408984:	59                   	pop    %ecx
408985:	85 db                	test   %ebx,%ebx
408987:	74 6d                	je     0x4089f6
408989:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40898c:	eb 52                	jmp    0x4089e0
40898e:	8b cf                	mov    %edi,%ecx
408990:	8d 51 01             	lea    0x1(%ecx),%edx
408993:	8a 01                	mov    (%ecx),%al
408995:	41                   	inc    %ecx
408996:	84 c0                	test   %al,%al
408998:	75 f9                	jne    0x408993
40899a:	2b ca                	sub    %edx,%ecx
40899c:	80 3f 3d             	cmpb   $0x3d,(%edi)
40899f:	8d 41 01             	lea    0x1(%ecx),%eax
4089a2:	89 45 f8             	mov    %eax,-0x8(%ebp)
4089a5:	74 37                	je     0x4089de
4089a7:	6a 01                	push   $0x1
4089a9:	50                   	push   %eax
4089aa:	e8 fd 0e 00 00       	call   0x4098ac
4089af:	8b f0                	mov    %eax,%esi
4089b1:	59                   	pop    %ecx
4089b2:	59                   	pop    %ecx
4089b3:	85 f6                	test   %esi,%esi