407490:	c3                   	ret
407491:	8b cf                	mov    %edi,%ecx
407493:	e8 0c fe ff ff       	call   0x4072a4
407498:	ff 75 18             	push   0x18(%ebp)
40749b:	8b 0d c0 10 42 00    	mov    0x4210c0,%ecx
4074a1:	ff 75 14             	push   0x14(%ebp)
4074a4:	8b 34 85 48 1e 42 00 	mov    0x421e48(,%eax,4),%esi
4074ab:	83 e1 1f             	and    $0x1f,%ecx
4074ae:	ff 75 10             	push   0x10(%ebp)
4074b1:	33 35 c0 10 42 00    	xor    0x4210c0,%esi
4074b7:	ff 75 0c             	push   0xc(%ebp)
4074ba:	d3 ce                	ror    %cl,%esi
4074bc:	ff 75 08             	push   0x8(%ebp)
4074bf:	85 f6                	test   %esi,%esi
4074c1:	75 bd                	jne    0x407480
4074c3:	e8 2e 00 00 00       	call   0x4074f6
4074c8:	cc                   	int3
4074c9:	33 c0                	xor    %eax,%eax
4074cb:	50                   	push   %eax
4074cc:	50                   	push   %eax
4074cd:	50                   	push   %eax
4074ce:	50                   	push   %eax
4074cf:	50                   	push   %eax
4074d0:	e8 40 ff ff ff       	call   0x407415
4074d5:	83 c4 14             	add    $0x14,%esp
4074d8:	c3                   	ret
4074d9:	8b ff                	mov    %edi,%edi
4074db:	56                   	push   %esi
4074dc:	33 f6                	xor    %esi,%esi
4074de:	56                   	push   %esi
4074df:	56                   	push   %esi
4074e0:	56                   	push   %esi
4074e1:	56                   	push   %esi
4074e2:	56                   	push   %esi
4074e3:	e8 2d ff ff ff       	call   0x407415
4074e8:	83 c4 14             	add    $0x14,%esp
4074eb:	56                   	push   %esi
4074ec:	56                   	push   %esi
4074ed:	56                   	push   %esi
4074ee:	56                   	push   %esi
4074ef:	56                   	push   %esi
4074f0:	e8 01 00 00 00       	call   0x4074f6
4074f5:	cc                   	int3
4074f6:	6a 17                	push   $0x17
4074f8:	ff 15 6c 90 41 00    	call   *0x41906c
4074fe:	85 c0                	test   %eax,%eax
407500:	74 05                	je     0x407507
407502:	6a 05                	push   $0x5
407504:	59                   	pop    %ecx
407505:	cd 29                	int    $0x29
407507:	56                   	push   %esi
407508:	6a 01                	push   $0x1
40750a:	be 17 04 00 c0       	mov    $0xc0000417,%esi
40750f:	56                   	push   %esi
407510:	6a 02                	push   $0x2
407512:	e8 b6 fd ff ff       	call   0x4072cd
407517:	83 c4 0c             	add    $0xc,%esp
40751a:	56                   	push   %esi
40751b:	ff 15 74 90 41 00    	call   *0x419074
407521:	50                   	push   %eax
407522:	ff 15 78 90 41 00    	call   *0x419078
407528:	5e                   	pop    %esi
407529:	c3                   	ret
40752a:	6a 0c                	push   $0xc
40752c:	68 a0 fe 41 00       	push   $0x41fea0
407531:	e8 6a c9 ff ff       	call   0x403ea0
407536:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40753a:	8b 45 08             	mov    0x8(%ebp),%eax
40753d:	ff 30                	push   (%eax)
40753f:	e8 a3 f1 ff ff       	call   0x4066e7
407544:	59                   	pop    %ecx
407545:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
407549:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40754c:	e8 bb 0b 00 00       	call   0x40810c
407551:	8b f0                	mov    %eax,%esi
407553:	89 75 e4             	mov    %esi,-0x1c(%ebp)
407556:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40755d:	e8 17 00 00 00       	call   0x407579
407562:	8b c6                	mov    %esi,%eax
407564:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407567:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40756e:	59                   	pop    %ecx
40756f:	5f                   	pop    %edi
407570:	5e                   	pop    %esi
407571:	5b                   	pop    %ebx
407572:	c9                   	leave
407573:	c2 0c 00             	ret    $0xc
407576:	8b 75 e4             	mov    -0x1c(%ebp),%esi
407579:	8b 45 10             	mov    0x10(%ebp),%eax
40757c:	ff 30                	push   (%eax)
40757e:	e8 78 f1 ff ff       	call   0x4066fb
407583:	59                   	pop    %ecx
407584:	c3                   	ret
407585:	83 b9 04 04 00 00 00 	cmpl   $0x0,0x404(%ecx)
40758c:	75 06                	jne    0x407594
40758e:	b8 00 02 00 00       	mov    $0x200,%eax
407593:	c3                   	ret
407594:	8b 81 00 04 00 00    	mov    0x400(%ecx),%eax
40759a:	d1 e8                	shr    $1,%eax
40759c:	c3                   	ret
40759d:	8b ff                	mov    %edi,%edi
40759f:	55                   	push   %ebp
4075a0:	8b ec                	mov    %esp,%ebp
4075a2:	51                   	push   %ecx
4075a3:	56                   	push   %esi
4075a4:	8b 75 08             	mov    0x8(%ebp),%esi
4075a7:	57                   	push   %edi
4075a8:	8b f9                	mov    %ecx,%edi
4075aa:	81 fe ff ff ff 7f    	cmp    $0x7fffffff,%esi
4075b0:	76 12                	jbe    0x4075c4
4075b2:	8b 45 0c             	mov    0xc(%ebp),%eax
4075b5:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
4075b9:	c7 40 18 0c 00 00 00 	movl   $0xc,0x18(%eax)
4075c0:	32 c0                	xor    %al,%al
4075c2:	eb 54                	jmp    0x407618
4075c4:	53                   	push   %ebx
4075c5:	8d 9f 04 04 00 00    	lea    0x404(%edi),%ebx
4075cb:	03 f6                	add    %esi,%esi
4075cd:	83 3b 00             	cmpl   $0x0,(%ebx)
4075d0:	75 08                	jne    0x4075da
4075d2:	81 fe 00 04 00 00    	cmp    $0x400,%esi
4075d8:	76 3b                	jbe    0x407615
4075da:	3b b7 00 04 00 00    	cmp    0x400(%edi),%esi
4075e0:	76 33                	jbe    0x407615
4075e2:	56                   	push   %esi
4075e3:	e8 ea 59 00 00       	call   0x40cfd2
4075e8:	89 45 fc             	mov    %eax,-0x4(%ebp)
4075eb:	59                   	pop    %ecx
4075ec:	85 c0                	test   %eax,%eax
4075ee:	75 0b                	jne    0x4075fb
4075f0:	50                   	push   %eax
4075f1:	e8 a9 31 00 00       	call   0x40a79f
4075f6:	59                   	pop    %ecx
4075f7:	32 c0                	xor    %al,%al
4075f9:	eb 1c                	jmp    0x407617
4075fb:	8d 45 fc             	lea    -0x4(%ebp),%eax
4075fe:	8b cb                	mov    %ebx,%ecx
407600:	50                   	push   %eax
407601:	e8 e2 0a 00 00       	call   0x4080e8
407606:	ff 75 fc             	push   -0x4(%ebp)
407609:	89 b7 00 04 00 00    	mov    %esi,0x400(%edi)
40760f:	e8 8b 31 00 00       	call   0x40a79f
407614:	59                   	pop    %ecx
407615:	b0 01                	mov    $0x1,%al
407617:	5b                   	pop    %ebx
407618:	5f                   	pop    %edi
407619:	5e                   	pop    %esi
40761a:	c9                   	leave
40761b:	c2 08 00             	ret    $0x8
40761e:	8b ff                	mov    %edi,%edi
407620:	55                   	push   %ebp
407621:	8b ec                	mov    %esp,%ebp
407623:	f6 45 08 04          	testb  $0x4,0x8(%ebp)
407627:	75 25                	jne    0x40764e
407629:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
40762d:	74 0f                	je     0x40763e
40762f:	f6 45 08 02          	testb  $0x2,0x8(%ebp)
407633:	74 0d                	je     0x407642
407635:	81 7d 0c 00 00 00 80 	cmpl   $0x80000000,0xc(%ebp)
40763c:	77 10                	ja     0x40764e
40763e:	32 c0                	xor    %al,%al
407640:	5d                   	pop    %ebp
407641:	c3                   	ret
407642:	81 7d 0c ff ff ff 7f 	cmpl   $0x7fffffff,0xc(%ebp)
407649:	0f 97 c0             	seta   %al
40764c:	5d                   	pop    %ebp
40764d:	c3                   	ret
40764e:	b0 01                	mov    $0x1,%al
407650:	5d                   	pop    %ebp
407651:	c3                   	ret
407652:	8b ff                	mov    %edi,%edi
407654:	55                   	push   %ebp
407655:	8b ec                	mov    %esp,%ebp
407657:	8b 45 14             	mov    0x14(%ebp),%eax
40765a:	48                   	dec    %eax
40765b:	83 e8 01             	sub    $0x1,%eax
40765e:	74 1f                	je     0x40767f
407660:	83 e8 01             	sub    $0x1,%eax
407663:	74 16                	je     0x40767b
407665:	83 e8 09             	sub    $0x9,%eax
407668:	74 11                	je     0x40767b
40766a:	83 7d 14 0d          	cmpl   $0xd,0x14(%ebp)
40766e:	74 0f                	je     0x40767f
407670:	8a 45 10             	mov    0x10(%ebp),%al
407673:	3c 63                	cmp    $0x63,%al
407675:	74 08                	je     0x40767f
407677:	3c 73                	cmp    $0x73,%al
407679:	74 04                	je     0x40767f
40767b:	b0 01                	mov    $0x1,%al
40767d:	5d                   	pop    %ebp
40767e:	c3                   	ret
40767f:	32 c0                	xor    %al,%al
407681:	5d                   	pop    %ebp
407682:	c3                   	ret
407683:	8b ff                	mov    %edi,%edi
407685:	55                   	push   %ebp
407686:	8b ec                	mov    %esp,%ebp
407688:	83 ec 14             	sub    $0x14,%esp
40768b:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40768e:	53                   	push   %ebx
40768f:	56                   	push   %esi
407690:	e8 66 18 00 00       	call   0x408efb
407695:	84 c0                	test   %al,%al
407697:	74 2f                	je     0x4076c8
407699:	8b 75 14             	mov    0x14(%ebp),%esi
40769c:	85 f6                	test   %esi,%esi
40769e:	74 3d                	je     0x4076dd
4076a0:	83 fe 02             	cmp    $0x2,%esi
4076a3:	7c 05                	jl     0x4076aa
4076a5:	83 fe 24             	cmp    $0x24,%esi
4076a8:	7e 33                	jle    0x4076dd
4076aa:	8b 45 08             	mov    0x8(%ebp),%eax
4076ad:	50                   	push   %eax
4076ae:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
4076b2:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
4076b9:	33 c0                	xor    %eax,%eax
4076bb:	50                   	push   %eax
4076bc:	50                   	push   %eax
4076bd:	50                   	push   %eax
4076be:	50                   	push   %eax
4076bf:	50                   	push   %eax
4076c0:	e8 87 fd ff ff       	call   0x40744c
4076c5:	83 c4 18             	add    $0x18,%esp
4076c8:	8b 4d 10             	mov    0x10(%ebp),%ecx
4076cb:	85 c9                	test   %ecx,%ecx
4076cd:	0f 84 52 01 00 00    	je     0x407825
4076d3:	8b 45 0c             	mov    0xc(%ebp),%eax
4076d6:	89 01                	mov    %eax,(%ecx)
4076d8:	e9 48 01 00 00       	jmp    0x407825
4076dd:	8b 45 0c             	mov    0xc(%ebp),%eax
4076e0:	33 c9                	xor    %ecx,%ecx
4076e2:	57                   	push   %edi
4076e3:	89 45 ec             	mov    %eax,-0x14(%ebp)
4076e6:	89 4d f4             	mov    %ecx,-0xc(%ebp)
4076e9:	8a 18                	mov    (%eax),%bl
4076eb:	8d 78 01             	lea    0x1(%eax),%edi
4076ee:	0f b6 45 18          	movzbl 0x18(%ebp),%eax
4076f2:	88 5d fc             	mov    %bl,-0x4(%ebp)
4076f5:	89 7d 0c             	mov    %edi,0xc(%ebp)
4076f8:	89 45 f8             	mov    %eax,-0x8(%ebp)
4076fb:	80 fb 2d             	cmp    $0x2d,%bl
4076fe:	75 08                	jne    0x407708
407700:	83 c8 02             	or     $0x2,%eax
407703:	89 45 f8             	mov    %eax,-0x8(%ebp)
407706:	eb 05                	jmp    0x40770d
407708:	80 fb 2b             	cmp    $0x2b,%bl
40770b:	75 09                	jne    0x407716
40770d:	8a 1f                	mov    (%edi),%bl
40770f:	47                   	inc    %edi
407710:	88 5d fc             	mov    %bl,-0x4(%ebp)
407713:	89 7d 0c             	mov    %edi,0xc(%ebp)
407716:	85 f6                	test   %esi,%esi
407718:	74 05                	je     0x40771f
40771a:	83 fe 10             	cmp    $0x10,%esi
40771d:	75 75                	jne    0x407794
40771f:	8a c3                	mov    %bl,%al
407721:	2c 30                	sub    $0x30,%al
407723:	3c 09                	cmp    $0x9,%al
407725:	77 08                	ja     0x40772f
407727:	0f be c3             	movsbl %bl,%eax
40772a:	83 c0 d0             	add    $0xffffffd0,%eax
40772d:	eb 1e                	jmp    0x40774d
40772f:	8a c3                	mov    %bl,%al
407731:	2c 61                	sub    $0x61,%al
407733:	3c 19                	cmp    $0x19,%al
407735:	77 08                	ja     0x40773f
407737:	0f be c3             	movsbl %bl,%eax
40773a:	83 c0 a9             	add    $0xffffffa9,%eax
40773d:	eb 0e                	jmp    0x40774d
40773f:	8a c3                	mov    %bl,%al
407741:	2c 41                	sub    $0x41,%al
407743:	3c 19                	cmp    $0x19,%al
407745:	77 46                	ja     0x40778d
407747:	0f be c3             	movsbl %bl,%eax
40774a:	83 c0 c9             	add    $0xffffffc9,%eax
40774d:	85 c0                	test   %eax,%eax
40774f:	75 3c                	jne    0x40778d
407751:	8a 07                	mov    (%edi),%al
407753:	47                   	inc    %edi
407754:	88 45 f0             	mov    %al,-0x10(%ebp)
407757:	89 7d 0c             	mov    %edi,0xc(%ebp)
40775a:	3c 78                	cmp    $0x78,%al
40775c:	74 1d                	je     0x40777b
40775e:	3c 58                	cmp    $0x58,%al
407760:	74 19                	je     0x40777b
407762:	85 f6                	test   %esi,%esi
407764:	75 03                	jne    0x407769
407766:	6a 08                	push   $0x8
407768:	5e                   	pop    %esi
407769:	ff 75 f0             	push   -0x10(%ebp)
40776c:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40776f:	e8 f5 16 00 00       	call   0x408e69
407774:	8b 7d 0c             	mov    0xc(%ebp),%edi
407777:	33 c9                	xor    %ecx,%ecx
407779:	eb 19                	jmp    0x407794
40777b:	85 f6                	test   %esi,%esi
40777d:	75 03                	jne    0x407782
40777f:	6a 10                	push   $0x10
407781:	5e                   	pop    %esi
407782:	8a 1f                	mov    (%edi),%bl
407784:	47                   	inc    %edi
407785:	88 5d fc             	mov    %bl,-0x4(%ebp)
407788:	89 7d 0c             	mov    %edi,0xc(%ebp)
40778b:	eb 07                	jmp    0x407794
40778d:	85 f6                	test   %esi,%esi
40778f:	75 03                	jne    0x407794
407791:	6a 0a                	push   $0xa
407793:	5e                   	pop    %esi
407794:	83 c8 ff             	or     $0xffffffff,%eax
407797:	33 d2                	xor    %edx,%edx
407799:	f7 f6                	div    %esi
40779b:	89 45 f0             	mov    %eax,-0x10(%ebp)
40779e:	8a c3                	mov    %bl,%al
4077a0:	2c 30                	sub    $0x30,%al
4077a2:	3c 09                	cmp    $0x9,%al
4077a4:	77 08                	ja     0x4077ae
4077a6:	0f be d3             	movsbl %bl,%edx
4077a9:	83 c2 d0             	add    $0xffffffd0,%edx
4077ac:	eb 23                	jmp    0x4077d1
4077ae:	8a c3                	mov    %bl,%al
4077b0:	2c 61                	sub    $0x61,%al
4077b2:	3c 19                	cmp    $0x19,%al
4077b4:	77 08                	ja     0x4077be
4077b6:	0f be d3             	movsbl %bl,%edx
4077b9:	83 c2 a9             	add    $0xffffffa9,%edx
4077bc:	eb 13                	jmp    0x4077d1
4077be:	8a c3                	mov    %bl,%al
4077c0:	2c 41                	sub    $0x41,%al
4077c2:	3c 19                	cmp    $0x19,%al
4077c4:	77 08                	ja     0x4077ce
4077c6:	0f be d3             	movsbl %bl,%edx
4077c9:	83 c2 c9             	add    $0xffffffc9,%edx
4077cc:	eb 03                	jmp    0x4077d1
4077ce:	83 ca ff             	or     $0xffffffff,%edx
4077d1:	3b d6                	cmp    %esi,%edx
4077d3:	73 30                	jae    0x407805
4077d5:	8b 45 f0             	mov    -0x10(%ebp),%eax
4077d8:	0f af ce             	imul   %esi,%ecx
4077db:	8a 1f                	mov    (%edi),%bl
4077dd:	88 5d fc             	mov    %bl,-0x4(%ebp)
4077e0:	03 d1                	add    %ecx,%edx
4077e2:	3b d1                	cmp    %ecx,%edx
4077e4:	1b c9                	sbb    %ecx,%ecx
4077e6:	f7 d9                	neg    %ecx
4077e8:	3b 45 f4             	cmp    -0xc(%ebp),%eax
4077eb:	89 55 f4             	mov    %edx,-0xc(%ebp)
4077ee:	1b c0                	sbb    %eax,%eax
4077f0:	f7 d8                	neg    %eax
4077f2:	0b c8                	or     %eax,%ecx
4077f4:	c1 e1 02             	shl    $0x2,%ecx