40654b:	0f b6 12             	movzbl (%edx),%edx
40654e:	5f                   	pop    %edi
40654f:	8b c2                	mov    %edx,%eax
406551:	5e                   	pop    %esi
406552:	c3                   	ret
406553:	57                   	push   %edi
406554:	8b f9                	mov    %ecx,%edi
406556:	8b 47 1c             	mov    0x1c(%edi),%eax
406559:	8b 10                	mov    (%eax),%edx
40655b:	85 d2                	test   %edx,%edx
40655d:	74 10                	je     0x40656f
40655f:	8b 47 2c             	mov    0x2c(%edi),%eax
406562:	8b 00                	mov    (%eax),%eax
406564:	03 c2                	add    %edx,%eax
406566:	3b d0                	cmp    %eax,%edx
406568:	73 05                	jae    0x40656f
40656a:	0f b6 02             	movzbl (%edx),%eax
40656d:	5f                   	pop    %edi
40656e:	c3                   	ret
40656f:	8b 07                	mov    (%edi),%eax
406571:	53                   	push   %ebx
406572:	56                   	push   %esi
406573:	8b 70 1c             	mov    0x1c(%eax),%esi
406576:	8b ce                	mov    %esi,%ecx
406578:	ff 15 54 41 42 00    	call   *0x424154
40657e:	8b cf                	mov    %edi,%ecx
406580:	ff d6                	call   *%esi
406582:	8b d8                	mov    %eax,%ebx
406584:	83 c8 ff             	or     $0xffffffff,%eax
406587:	3b d8                	cmp    %eax,%ebx
406589:	74 14                	je     0x40659f
40658b:	8b 07                	mov    (%edi),%eax
40658d:	53                   	push   %ebx
40658e:	8b 70 10             	mov    0x10(%eax),%esi
406591:	8b ce                	mov    %esi,%ecx
406593:	ff 15 54 41 42 00    	call   *0x424154
406599:	8b cf                	mov    %edi,%ecx
40659b:	ff d6                	call   *%esi
40659d:	8b c3                	mov    %ebx,%eax
40659f:	5e                   	pop    %esi
4065a0:	5b                   	pop    %ebx
4065a1:	5f                   	pop    %edi
4065a2:	c3                   	ret
4065a3:	83 c8 ff             	or     $0xffffffff,%eax
4065a6:	c3                   	ret
4065a7:	6a 08                	push   $0x8
4065a9:	b8 34 2f 42 00       	mov    $0x422f34,%eax
4065ae:	e8 89 15 00 00       	call   0x407b3c
4065b3:	ff 71 30             	push   0x30(%ecx)
4065b6:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4065b9:	e8 f2 b5 ff ff       	call   0x401bb0
4065be:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4065c2:	8d 45 ec             	lea    -0x14(%ebp),%eax
4065c5:	50                   	push   %eax
4065c6:	e8 e5 e1 ff ff       	call   0x4047b0
4065cb:	8b f8                	mov    %eax,%edi
4065cd:	59                   	pop    %ecx
4065ce:	ff 75 08             	push   0x8(%ebp)
4065d1:	8b 0f                	mov    (%edi),%ecx
4065d3:	8b 71 20             	mov    0x20(%ecx),%esi
4065d6:	8b ce                	mov    %esi,%ecx
4065d8:	ff 15 54 41 42 00    	call   *0x424154
4065de:	8b cf                	mov    %edi,%ecx
4065e0:	ff d6                	call   *%esi
4065e2:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4065e5:	8a d8                	mov    %al,%bl
4065e7:	e8 e4 b5 ff ff       	call   0x401bd0
4065ec:	8a c3                	mov    %bl,%al
4065ee:	e8 26 15 00 00       	call   0x407b19
4065f3:	c2 04 00             	ret    $0x4
4065f6:	55                   	push   %ebp
4065f7:	8b ec                	mov    %esp,%ebp
4065f9:	51                   	push   %ecx
4065fa:	8b 45 10             	mov    0x10(%ebp),%eax
4065fd:	56                   	push   %esi
4065fe:	8b 75 0c             	mov    0xc(%ebp),%esi
406601:	57                   	push   %edi
406602:	8b f9                	mov    %ecx,%edi
406604:	85 c0                	test   %eax,%eax
406606:	7f 0f                	jg     0x406617
406608:	7c 04                	jl     0x40660e
40660a:	85 f6                	test   %esi,%esi
40660c:	75 09                	jne    0x406617
40660e:	33 c0                	xor    %eax,%eax
406610:	33 d2                	xor    %edx,%edx
406612:	e9 c5 00 00 00       	jmp    0x4066dc
406617:	83 7f 38 00          	cmpl   $0x0,0x38(%edi)
40661b:	74 0f                	je     0x40662c
40661d:	50                   	push   %eax
40661e:	56                   	push   %esi
40661f:	ff 75 08             	push   0x8(%ebp)
406622:	e8 bf 00 00 00       	call   0x4066e6
406627:	e9 b0 00 00 00       	jmp    0x4066dc
40662c:	8b 47 1c             	mov    0x1c(%edi),%eax
40662f:	53                   	push   %ebx
406630:	8b de                	mov    %esi,%ebx
406632:	8b 08                	mov    (%eax),%ecx
406634:	85 c9                	test   %ecx,%ecx
406636:	74 3b                	je     0x406673
406638:	8b 47 2c             	mov    0x2c(%edi),%eax
40663b:	8b 00                	mov    (%eax),%eax
40663d:	89 45 fc             	mov    %eax,-0x4(%ebp)
406640:	85 c0                	test   %eax,%eax
406642:	74 2f                	je     0x406673
406644:	3b c6                	cmp    %esi,%eax
406646:	72 05                	jb     0x40664d
406648:	8b c6                	mov    %esi,%eax
40664a:	89 75 fc             	mov    %esi,-0x4(%ebp)
40664d:	50                   	push   %eax
40664e:	51                   	push   %ecx
40664f:	ff 75 08             	push   0x8(%ebp)
406652:	e8 19 23 00 00       	call   0x408970
406657:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40665a:	83 c4 0c             	add    $0xc,%esp
40665d:	8b 45 08             	mov    0x8(%ebp),%eax
406660:	2b d9                	sub    %ecx,%ebx
406662:	03 c1                	add    %ecx,%eax
406664:	89 45 fc             	mov    %eax,-0x4(%ebp)
406667:	8b 47 2c             	mov    0x2c(%edi),%eax
40666a:	29 08                	sub    %ecx,(%eax)
40666c:	8b 47 1c             	mov    0x1c(%edi),%eax
40666f:	01 08                	add    %ecx,(%eax)
406671:	eb 06                	jmp    0x406679
406673:	8b 45 08             	mov    0x8(%ebp),%eax
406676:	89 45 fc             	mov    %eax,-0x4(%ebp)
406679:	83 7f 4c 00          	cmpl   $0x0,0x4c(%edi)
40667d:	8b cb                	mov    %ebx,%ecx
40667f:	74 50                	je     0x4066d1
406681:	8b cf                	mov    %edi,%ecx
406683:	e8 55 f7 ff ff       	call   0x405ddd
406688:	8b 55 fc             	mov    -0x4(%ebp),%edx
40668b:	8b cb                	mov    %ebx,%ecx
40668d:	eb 22                	jmp    0x4066b1
40668f:	ff 77 4c             	push   0x4c(%edi)
406692:	50                   	push   %eax
406693:	6a 01                	push   $0x1
406695:	52                   	push   %edx
406696:	e8 f9 73 00 00       	call   0x40da94
40669b:	8b 55 fc             	mov    -0x4(%ebp),%edx
40669e:	2b d8                	sub    %eax,%ebx
4066a0:	03 d0                	add    %eax,%edx
4066a2:	83 c4 10             	add    $0x10,%esp
4066a5:	89 55 fc             	mov    %edx,-0x4(%ebp)
4066a8:	8b cb                	mov    %ebx,%ecx
4066aa:	3d ff 0f 00 00       	cmp    $0xfff,%eax
4066af:	75 31                	jne    0x4066e2
4066b1:	b8 ff 0f 00 00       	mov    $0xfff,%eax
4066b6:	3b d8                	cmp    %eax,%ebx
4066b8:	77 d5                	ja     0x40668f
4066ba:	85 c9                	test   %ecx,%ecx
4066bc:	74 13                	je     0x4066d1
4066be:	ff 77 4c             	push   0x4c(%edi)
4066c1:	53                   	push   %ebx
4066c2:	6a 01                	push   $0x1
4066c4:	52                   	push   %edx
4066c5:	e8 ca 73 00 00       	call   0x40da94
4066ca:	8b cb                	mov    %ebx,%ecx
4066cc:	83 c4 10             	add    $0x10,%esp
4066cf:	2b c8                	sub    %eax,%ecx
4066d1:	2b f1                	sub    %ecx,%esi
4066d3:	8b 55 10             	mov    0x10(%ebp),%edx
4066d6:	8b c6                	mov    %esi,%eax
4066d8:	83 da 00             	sbb    $0x0,%edx
4066db:	5b                   	pop    %ebx
4066dc:	5f                   	pop    %edi
4066dd:	5e                   	pop    %esi
4066de:	c9                   	leave
4066df:	c2 0c 00             	ret    $0xc
4066e2:	2b f3                	sub    %ebx,%esi
4066e4:	eb ed                	jmp    0x4066d3
4066e6:	55                   	push   %ebp
4066e7:	8b ec                	mov    %esp,%ebp
4066e9:	83 ec 14             	sub    $0x14,%esp
4066ec:	53                   	push   %ebx
4066ed:	8b 5d 10             	mov    0x10(%ebp),%ebx
4066f0:	8b d3                	mov    %ebx,%edx
4066f2:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4066f5:	89 55 ec             	mov    %edx,-0x14(%ebp)
4066f8:	57                   	push   %edi
4066f9:	8b 7d 0c             	mov    0xc(%ebp),%edi
4066fc:	8b c7                	mov    %edi,%eax
4066fe:	89 45 f0             	mov    %eax,-0x10(%ebp)
406701:	85 db                	test   %ebx,%ebx
406703:	0f 8c af 00 00 00    	jl     0x4067b8
406709:	7f 08                	jg     0x406713
40670b:	85 ff                	test   %edi,%edi
40670d:	0f 84 a5 00 00 00    	je     0x4067b8
406713:	56                   	push   %esi
406714:	8b 41 1c             	mov    0x1c(%ecx),%eax
406717:	8b 00                	mov    (%eax),%eax
406719:	89 45 f4             	mov    %eax,-0xc(%ebp)
40671c:	85 c0                	test   %eax,%eax
40671e:	74 07                	je     0x406727
406720:	8b 41 2c             	mov    0x2c(%ecx),%eax
406723:	8b 00                	mov    (%eax),%eax
406725:	eb 02                	jmp    0x406729
406727:	33 c0                	xor    %eax,%eax
406729:	99                   	cltd
40672a:	8b f0                	mov    %eax,%esi
40672c:	8b c2                	mov    %edx,%eax
40672e:	89 45 f8             	mov    %eax,-0x8(%ebp)
406731:	85 c0                	test   %eax,%eax
406733:	7c 3b                	jl     0x406770
406735:	7f 04                	jg     0x40673b
406737:	85 f6                	test   %esi,%esi
406739:	74 35                	je     0x406770
40673b:	3b d8                	cmp    %eax,%ebx
40673d:	7f 0b                	jg     0x40674a
40673f:	7c 04                	jl     0x406745
406741:	3b fe                	cmp    %esi,%edi
406743:	73 05                	jae    0x40674a
406745:	8b f7                	mov    %edi,%esi
406747:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40674a:	56                   	push   %esi
40674b:	ff 75 f4             	push   -0xc(%ebp)
40674e:	ff 75 08             	push   0x8(%ebp)
406751:	e8 1a 22 00 00       	call   0x408970
406756:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406759:	83 c4 0c             	add    $0xc,%esp
40675c:	2b fe                	sub    %esi,%edi
40675e:	1b 5d f8             	sbb    -0x8(%ebp),%ebx
406761:	8b 41 2c             	mov    0x2c(%ecx),%eax
406764:	29 30                	sub    %esi,(%eax)
406766:	8b 41 1c             	mov    0x1c(%ecx),%eax
406769:	01 30                	add    %esi,(%eax)
40676b:	8b 45 08             	mov    0x8(%ebp),%eax
40676e:	eb 2a                	jmp    0x40679a
406770:	8b 01                	mov    (%ecx),%eax
406772:	8b 70 1c             	mov    0x1c(%eax),%esi
406775:	8b ce                	mov    %esi,%ecx
406777:	ff 15 54 41 42 00    	call   *0x424154
40677d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406780:	ff d6                	call   *%esi
406782:	8b c8                	mov    %eax,%ecx
406784:	83 f9 ff             	cmp    $0xffffffff,%ecx
406787:	74 28                	je     0x4067b1
406789:	8b 45 08             	mov    0x8(%ebp),%eax
40678c:	83 c7 ff             	add    $0xffffffff,%edi
40678f:	83 d3 ff             	adc    $0xffffffff,%ebx
406792:	33 f6                	xor    %esi,%esi
406794:	46                   	inc    %esi
406795:	88 08                	mov    %cl,(%eax)
406797:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40679a:	03 c6                	add    %esi,%eax
40679c:	89 45 08             	mov    %eax,0x8(%ebp)
40679f:	85 db                	test   %ebx,%ebx
4067a1:	0f 8f 6d ff ff ff    	jg     0x406714
4067a7:	7c 08                	jl     0x4067b1
4067a9:	85 ff                	test   %edi,%edi
4067ab:	0f 85 63 ff ff ff    	jne    0x406714
4067b1:	8b 45 f0             	mov    -0x10(%ebp),%eax
4067b4:	8b 55 ec             	mov    -0x14(%ebp),%edx
4067b7:	5e                   	pop    %esi
4067b8:	2b c7                	sub    %edi,%eax
4067ba:	5f                   	pop    %edi
4067bb:	1b d3                	sbb    %ebx,%edx
4067bd:	5b                   	pop    %ebx
4067be:	c9                   	leave
4067bf:	c2 0c 00             	ret    $0xc
4067c2:	55                   	push   %ebp
4067c3:	8b ec                	mov    %esp,%ebp
4067c5:	83 ec 14             	sub    $0x14,%esp
4067c8:	53                   	push   %ebx
4067c9:	8b d9                	mov    %ecx,%ebx
4067cb:	83 7b 38 00          	cmpl   $0x0,0x38(%ebx)
4067cf:	74 13                	je     0x4067e4
4067d1:	ff 75 10             	push   0x10(%ebp)
4067d4:	ff 75 0c             	push   0xc(%ebp)
4067d7:	ff 75 08             	push   0x8(%ebp)
4067da:	e8 b7 00 00 00       	call   0x406896
4067df:	e9 ad 00 00 00       	jmp    0x406891
4067e4:	8b 43 20             	mov    0x20(%ebx),%eax
4067e7:	56                   	push   %esi
4067e8:	8b 75 0c             	mov    0xc(%ebp),%esi
4067eb:	57                   	push   %edi
4067ec:	8b 00                	mov    (%eax),%eax
4067ee:	8b 7d 10             	mov    0x10(%ebp),%edi
4067f1:	89 75 f0             	mov    %esi,-0x10(%ebp)
4067f4:	89 7d ec             	mov    %edi,-0x14(%ebp)
4067f7:	89 45 f4             	mov    %eax,-0xc(%ebp)
4067fa:	85 c0                	test   %eax,%eax
4067fc:	74 07                	je     0x406805
4067fe:	8b 43 30             	mov    0x30(%ebx),%eax
406801:	8b 00                	mov    (%eax),%eax
406803:	eb 02                	jmp    0x406807
406805:	33 c0                	xor    %eax,%eax
406807:	99                   	cltd
406808:	89 45 fc             	mov    %eax,-0x4(%ebp)
40680b:	8b ca                	mov    %edx,%ecx
40680d:	89 4d f8             	mov    %ecx,-0x8(%ebp)
406810:	85 ff                	test   %edi,%edi
406812:	7c 71                	jl     0x406885
406814:	7f 04                	jg     0x40681a
406816:	85 f6                	test   %esi,%esi
406818:	74 6b                	je     0x406885
40681a:	85 c9                	test   %ecx,%ecx
40681c:	7c 4a                	jl     0x406868
40681e:	7f 04                	jg     0x406824
406820:	85 c0                	test   %eax,%eax
406822:	74 44                	je     0x406868
406824:	3b f9                	cmp    %ecx,%edi
406826:	7f 0e                	jg     0x406836
406828:	7c 04                	jl     0x40682e
40682a:	3b f0                	cmp    %eax,%esi
40682c:	73 08                	jae    0x406836
40682e:	8b c6                	mov    %esi,%eax
406830:	89 75 fc             	mov    %esi,-0x4(%ebp)
406833:	89 7d f8             	mov    %edi,-0x8(%ebp)
406836:	50                   	push   %eax
406837:	ff 75 08             	push   0x8(%ebp)
40683a:	ff 75 f4             	push   -0xc(%ebp)
40683d:	e8 2e 21 00 00       	call   0x408970
406842:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406845:	83 c4 0c             	add    $0xc,%esp
406848:	8b 43 30             	mov    0x30(%ebx),%eax
40684b:	2b f1                	sub    %ecx,%esi
40684d:	1b 7d f8             	sbb    -0x8(%ebp),%edi
406850:	29 08                	sub    %ecx,(%eax)
406852:	8b 43 20             	mov    0x20(%ebx),%eax
406855:	01 08                	add    %ecx,(%eax)
406857:	8b 45 08             	mov    0x8(%ebp),%eax
40685a:	03 c1                	add    %ecx,%eax
40685c:	85 ff                	test   %edi,%edi
40685e:	7c 25                	jl     0x406885
406860:	7f 09                	jg     0x40686b
406862:	85 f6                	test   %esi,%esi
406864:	74 1f                	je     0x406885
406866:	eb 03                	jmp    0x40686b
406868:	8b 45 08             	mov    0x8(%ebp),%eax
40686b:	83 7b 4c 00          	cmpl   $0x0,0x4c(%ebx)
40686f:	74 14                	je     0x406885
406871:	ff 73 4c             	push   0x4c(%ebx)
406874:	56                   	push   %esi
406875:	6a 01                	push   $0x1
406877:	50                   	push   %eax
406878:	e8 83 78 00 00       	call   0x40e100
40687d:	83 c4 10             	add    $0x10,%esp
406880:	2b f0                	sub    %eax,%esi
406882:	83 df 00             	sbb    $0x0,%edi
406885:	8b 45 f0             	mov    -0x10(%ebp),%eax
406888:	8b 55 ec             	mov    -0x14(%ebp),%edx
40688b:	2b c6                	sub    %esi,%eax
40688d:	1b d7                	sbb    %edi,%edx
40688f:	5f                   	pop    %edi
406890:	5e                   	pop    %esi
406891:	5b                   	pop    %ebx
406892:	c9                   	leave
406893:	c2 0c 00             	ret    $0xc
406896:	55                   	push   %ebp
406897:	8b ec                	mov    %esp,%ebp