406520:	8b 57 34             	mov    0x34(%edi),%edx
406523:	39 75 08             	cmp    %esi,0x8(%ebp)
406526:	7e 25                	jle    0x40654d
406528:	53                   	push   %ebx
406529:	8a 02                	mov    (%edx),%al
40652b:	84 c0                	test   %al,%al
40652d:	74 1d                	je     0x40654c
40652f:	0f b6 c8             	movzbl %al,%ecx
406532:	bb 00 80 00 00       	mov    $0x8000,%ebx
406537:	8b 47 08             	mov    0x8(%edi),%eax
40653a:	8b 00                	mov    (%eax),%eax
40653c:	8b 00                	mov    (%eax),%eax
40653e:	66 85 1c 48          	test   %bx,(%eax,%ecx,2)
406542:	74 01                	je     0x406545
406544:	42                   	inc    %edx
406545:	42                   	inc    %edx
406546:	46                   	inc    %esi
406547:	3b 75 08             	cmp    0x8(%ebp),%esi
40654a:	7c dd                	jl     0x406529
40654c:	5b                   	pop    %ebx
40654d:	5f                   	pop    %edi
40654e:	8b c6                	mov    %esi,%eax
406550:	5e                   	pop    %esi
406551:	5d                   	pop    %ebp
406552:	c2 08 00             	ret    $0x8
406555:	83 79 1c 00          	cmpl   $0x0,0x1c(%ecx)
406559:	74 19                	je     0x406574
40655b:	83 79 1c 07          	cmpl   $0x7,0x1c(%ecx)
40655f:	74 13                	je     0x406574
406561:	e8 a1 17 00 00       	call   0x407d07
406566:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40656c:	e8 bd 16 00 00       	call   0x407c2e
406571:	32 c0                	xor    %al,%al
406573:	c3                   	ret
406574:	b0 01                	mov    $0x1,%al
406576:	c3                   	ret
406577:	8b ff                	mov    %edi,%edi
406579:	55                   	push   %ebp
40657a:	8b ec                	mov    %esp,%ebp
40657c:	8b d1                	mov    %ecx,%edx
40657e:	8b 0a                	mov    (%edx),%ecx
406580:	8b 41 08             	mov    0x8(%ecx),%eax
406583:	3b 41 04             	cmp    0x4(%ecx),%eax
406586:	8b 45 0c             	mov    0xc(%ebp),%eax
406589:	75 14                	jne    0x40659f
40658b:	80 79 0c 00          	cmpb   $0x0,0xc(%ecx)
40658f:	74 04                	je     0x406595
406591:	ff 00                	incl   (%eax)
406593:	eb 03                	jmp    0x406598
406595:	83 08 ff             	orl    $0xffffffff,(%eax)
406598:	8b 02                	mov    (%edx),%eax
40659a:	8a 40 0c             	mov    0xc(%eax),%al
40659d:	eb 19                	jmp    0x4065b8
40659f:	ff 00                	incl   (%eax)
4065a1:	8b 02                	mov    (%edx),%eax
4065a3:	ff 40 08             	incl   0x8(%eax)
4065a6:	8b 02                	mov    (%edx),%eax
4065a8:	8b 08                	mov    (%eax),%ecx
4065aa:	66 8b 45 08          	mov    0x8(%ebp),%ax
4065ae:	66 89 01             	mov    %ax,(%ecx)
4065b1:	8b 02                	mov    (%edx),%eax
4065b3:	83 00 02             	addl   $0x2,(%eax)
4065b6:	b0 01                	mov    $0x1,%al
4065b8:	5d                   	pop    %ebp
4065b9:	c2 08 00             	ret    $0x8
4065bc:	8b ff                	mov    %edi,%edi
4065be:	55                   	push   %ebp
4065bf:	8b ec                	mov    %esp,%ebp
4065c1:	51                   	push   %ecx
4065c2:	51                   	push   %ecx
4065c3:	53                   	push   %ebx
4065c4:	56                   	push   %esi
4065c5:	8b f1                	mov    %ecx,%esi
4065c7:	57                   	push   %edi
4065c8:	80 7e 3c 00          	cmpb   $0x0,0x3c(%esi)
4065cc:	75 56                	jne    0x406624
4065ce:	8b 46 38             	mov    0x38(%esi),%eax
4065d1:	85 c0                	test   %eax,%eax
4065d3:	7e 4f                	jle    0x406624
4065d5:	8b 5e 34             	mov    0x34(%esi),%ebx
4065d8:	33 ff                	xor    %edi,%edi
4065da:	85 c0                	test   %eax,%eax
4065dc:	74 5e                	je     0x40663c
4065de:	33 c0                	xor    %eax,%eax
4065e0:	66 89 45 fc          	mov    %ax,-0x4(%ebp)
4065e4:	8b 46 08             	mov    0x8(%esi),%eax
4065e7:	50                   	push   %eax
4065e8:	8b 00                	mov    (%eax),%eax
4065ea:	ff 70 04             	push   0x4(%eax)
4065ed:	8d 45 fc             	lea    -0x4(%ebp),%eax
4065f0:	53                   	push   %ebx
4065f1:	50                   	push   %eax
4065f2:	e8 a5 3f 00 00       	call   0x40a59c
4065f7:	83 c4 10             	add    $0x10,%esp
4065fa:	89 45 f8             	mov    %eax,-0x8(%ebp)
4065fd:	85 c0                	test   %eax,%eax
4065ff:	7e 1d                	jle    0x40661e
406601:	8d 4e 18             	lea    0x18(%esi),%ecx
406604:	51                   	push   %ecx
406605:	ff 75 fc             	push   -0x4(%ebp)
406608:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40660e:	e8 64 ff ff ff       	call   0x406577
406613:	03 5d f8             	add    -0x8(%ebp),%ebx
406616:	47                   	inc    %edi
406617:	3b 7e 38             	cmp    0x38(%esi),%edi
40661a:	75 c2                	jne    0x4065de
40661c:	eb 1e                	jmp    0x40663c
40661e:	83 4e 18 ff          	orl    $0xffffffff,0x18(%esi)
406622:	eb 18                	jmp    0x40663c
406624:	ff 76 0c             	push   0xc(%esi)
406627:	8d 46 18             	lea    0x18(%esi),%eax
40662a:	50                   	push   %eax
40662b:	ff 76 38             	push   0x38(%esi)
40662e:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
406634:	ff 76 34             	push   0x34(%esi)
406637:	e8 0b 00 00 00       	call   0x406647
40663c:	5f                   	pop    %edi
40663d:	5e                   	pop    %esi
40663e:	b0 01                	mov    $0x1,%al
406640:	5b                   	pop    %ebx
406641:	8b e5                	mov    %ebp,%esp
406643:	5d                   	pop    %ebp
406644:	c2 04 00             	ret    $0x4
406647:	8b ff                	mov    %edi,%edi
406649:	55                   	push   %ebp
40664a:	8b ec                	mov    %esp,%ebp
40664c:	51                   	push   %ecx
40664d:	51                   	push   %ecx
40664e:	53                   	push   %ebx
40664f:	8b 5d 14             	mov    0x14(%ebp),%ebx
406652:	8b c1                	mov    %ecx,%eax
406654:	57                   	push   %edi
406655:	89 45 f8             	mov    %eax,-0x8(%ebp)
406658:	8b 0b                	mov    (%ebx),%ecx
40665a:	83 23 00             	andl   $0x0,(%ebx)
40665d:	8b 10                	mov    (%eax),%edx
40665f:	89 4d fc             	mov    %ecx,-0x4(%ebp)
406662:	8b 7a 04             	mov    0x4(%edx),%edi
406665:	39 7a 08             	cmp    %edi,0x8(%edx)
406668:	75 18                	jne    0x406682
40666a:	80 7a 0c 00          	cmpb   $0x0,0xc(%edx)
40666e:	74 0a                	je     0x40667a
406670:	8b 4d 10             	mov    0x10(%ebp),%ecx
406673:	8b 45 0c             	mov    0xc(%ebp),%eax
406676:	01 01                	add    %eax,(%ecx)
406678:	eb 51                	jmp    0x4066cb
40667a:	8b 45 10             	mov    0x10(%ebp),%eax
40667d:	83 08 ff             	orl    $0xffffffff,(%eax)
406680:	eb 4c                	jmp    0x4066ce
406682:	2b 7a 08             	sub    0x8(%edx),%edi
406685:	8b 45 0c             	mov    0xc(%ebp),%eax
406688:	3b f8                	cmp    %eax,%edi
40668a:	72 02                	jb     0x40668e
40668c:	8b f8                	mov    %eax,%edi
40668e:	56                   	push   %esi
40668f:	8d 34 3f             	lea    (%edi,%edi,1),%esi
406692:	56                   	push   %esi
406693:	ff 75 08             	push   0x8(%ebp)
406696:	ff 32                	push   (%edx)
406698:	e8 43 1e 01 00       	call   0x4184e0
40669d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4066a0:	83 c4 0c             	add    $0xc,%esp
4066a3:	8b 01                	mov    (%ecx),%eax
4066a5:	01 30                	add    %esi,(%eax)
4066a7:	8b 01                	mov    (%ecx),%eax
4066a9:	5e                   	pop    %esi
4066aa:	01 78 08             	add    %edi,0x8(%eax)
4066ad:	8b 01                	mov    (%ecx),%eax
4066af:	80 78 0c 00          	cmpb   $0x0,0xc(%eax)
4066b3:	8b 45 10             	mov    0x10(%ebp),%eax
4066b6:	74 07                	je     0x4066bf
4066b8:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4066bb:	01 08                	add    %ecx,(%eax)
4066bd:	eb 0c                	jmp    0x4066cb
4066bf:	3b 7d 0c             	cmp    0xc(%ebp),%edi
4066c2:	74 05                	je     0x4066c9
4066c4:	83 08 ff             	orl    $0xffffffff,(%eax)
4066c7:	eb 02                	jmp    0x4066cb
4066c9:	01 38                	add    %edi,(%eax)
4066cb:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4066ce:	83 3b 00             	cmpl   $0x0,(%ebx)
4066d1:	75 06                	jne    0x4066d9
4066d3:	85 c9                	test   %ecx,%ecx
4066d5:	74 02                	je     0x4066d9
4066d7:	89 0b                	mov    %ecx,(%ebx)
4066d9:	5f                   	pop    %edi
4066da:	5b                   	pop    %ebx
4066db:	8b e5                	mov    %ebp,%esp
4066dd:	5d                   	pop    %ebp
4066de:	c2 10 00             	ret    $0x10
4066e1:	8b ff                	mov    %edi,%edi
4066e3:	55                   	push   %ebp
4066e4:	8b ec                	mov    %esp,%ebp
4066e6:	ff 75 20             	push   0x20(%ebp)
4066e9:	ff 75 1c             	push   0x1c(%ebp)
4066ec:	ff 75 18             	push   0x18(%ebp)
4066ef:	ff 75 14             	push   0x14(%ebp)
4066f2:	ff 75 10             	push   0x10(%ebp)
4066f5:	ff 75 0c             	push   0xc(%ebp)
4066f8:	ff 75 08             	push   0x8(%ebp)
4066fb:	e8 bc ea ff ff       	call   0x4051bc
406700:	83 c4 1c             	add    $0x1c,%esp
406703:	5d                   	pop    %ebp
406704:	c3                   	ret
406705:	8b ff                	mov    %edi,%edi
406707:	55                   	push   %ebp
406708:	8b ec                	mov    %esp,%ebp
40670a:	ff 75 20             	push   0x20(%ebp)
40670d:	ff 75 1c             	push   0x1c(%ebp)
406710:	ff 75 18             	push   0x18(%ebp)
406713:	ff 75 14             	push   0x14(%ebp)
406716:	ff 75 10             	push   0x10(%ebp)
406719:	ff 75 0c             	push   0xc(%ebp)
40671c:	ff 75 08             	push   0x8(%ebp)
40671f:	e8 1d ec ff ff       	call   0x405341
406724:	83 c4 1c             	add    $0x1c,%esp
406727:	5d                   	pop    %ebp
406728:	c3                   	ret
406729:	8b ff                	mov    %edi,%edi
40672b:	55                   	push   %ebp
40672c:	8b ec                	mov    %esp,%ebp
40672e:	83 ec 3c             	sub    $0x3c,%esp
406731:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406735:	75 20                	jne    0x406757
406737:	e8 b8 15 00 00       	call   0x407cf4
40673c:	83 20 00             	andl   $0x0,(%eax)
40673f:	e8 c3 15 00 00       	call   0x407d07
406744:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40674a:	e8 df 14 00 00       	call   0x407c2e
40674f:	83 c8 ff             	or     $0xffffffff,%eax
406752:	e9 d5 00 00 00       	jmp    0x40682c
406757:	53                   	push   %ebx
406758:	56                   	push   %esi
406759:	57                   	push   %edi
40675a:	6a 38                	push   $0x38
40675c:	33 db                	xor    %ebx,%ebx
40675e:	8d 45 c4             	lea    -0x3c(%ebp),%eax
406761:	53                   	push   %ebx
406762:	50                   	push   %eax
406763:	e8 f8 e2 ff ff       	call   0x404a60
406768:	8b 7d 0c             	mov    0xc(%ebp),%edi
40676b:	8d 75 c4             	lea    -0x3c(%ebp),%esi
40676e:	83 c4 0c             	add    $0xc,%esp
406771:	6a 0e                	push   $0xe
406773:	59                   	pop    %ecx
406774:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
406776:	8b 7d 08             	mov    0x8(%ebp),%edi
406779:	85 ff                	test   %edi,%edi
40677b:	75 19                	jne    0x406796
40677d:	e8 72 15 00 00       	call   0x407cf4
406782:	89 18                	mov    %ebx,(%eax)
406784:	e8 7e 15 00 00       	call   0x407d07
406789:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40678f:	e8 9a 14 00 00       	call   0x407c2e
406794:	eb 22                	jmp    0x4067b8
406796:	68 28 bd 41 00       	push   $0x41bd28
40679b:	57                   	push   %edi
40679c:	e8 a9 54 00 00       	call   0x40bc4a
4067a1:	59                   	pop    %ecx
4067a2:	59                   	pop    %ecx
4067a3:	85 c0                	test   %eax,%eax
4067a5:	74 16                	je     0x4067bd
4067a7:	e8 5b 15 00 00       	call   0x407d07
4067ac:	6a 02                	push   $0x2
4067ae:	5e                   	pop    %esi
4067af:	89 30                	mov    %esi,(%eax)
4067b1:	e8 3e 15 00 00       	call   0x407cf4
4067b6:	89 30                	mov    %esi,(%eax)
4067b8:	83 c8 ff             	or     $0xffffffff,%eax
4067bb:	eb 6c                	jmp    0x406829
4067bd:	53                   	push   %ebx
4067be:	68 00 00 00 02       	push   $0x2000000
4067c3:	6a 03                	push   $0x3
4067c5:	53                   	push   %ebx
4067c6:	6a 07                	push   $0x7
4067c8:	68 80 00 00 00       	push   $0x80
4067cd:	57                   	push   %edi
4067ce:	ff 15 0c b1 41 00    	call   *0x41b10c
4067d4:	ff 75 0c             	push   0xc(%ebp)
4067d7:	8b f0                	mov    %eax,%esi
4067d9:	89 75 fc             	mov    %esi,-0x4(%ebp)
4067dc:	83 fe ff             	cmp    $0xffffffff,%esi
4067df:	74 0e                	je     0x4067ef
4067e1:	56                   	push   %esi
4067e2:	6a ff                	push   $0xffffffff
4067e4:	57                   	push   %edi
4067e5:	e8 d2 00 00 00       	call   0x4068bc
4067ea:	83 c4 10             	add    $0x10,%esp
4067ed:	eb 08                	jmp    0x4067f7
4067ef:	57                   	push   %edi
4067f0:	e8 3b 00 00 00       	call   0x406830
4067f5:	59                   	pop    %ecx
4067f6:	59                   	pop    %ecx
4067f7:	84 c0                	test   %al,%al
4067f9:	75 20                	jne    0x40681b
4067fb:	6a 38                	push   $0x38
4067fd:	8d 45 c4             	lea    -0x3c(%ebp),%eax
406800:	53                   	push   %ebx
406801:	50                   	push   %eax
406802:	e8 59 e2 ff ff       	call   0x404a60
406807:	8b 7d 0c             	mov    0xc(%ebp),%edi
40680a:	8d 75 c4             	lea    -0x3c(%ebp),%esi
40680d:	83 c4 0c             	add    $0xc,%esp
406810:	83 cb ff             	or     $0xffffffff,%ebx
406813:	6a 0e                	push   $0xe
406815:	59                   	pop    %ecx
406816:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
406818:	8b 75 fc             	mov    -0x4(%ebp),%esi
40681b:	83 fe ff             	cmp    $0xffffffff,%esi
40681e:	74 07                	je     0x406827
406820:	56                   	push   %esi
406821:	ff 15 8c b0 41 00    	call   *0x41b08c
406827:	8b c3                	mov    %ebx,%eax
406829:	5f                   	pop    %edi
40682a:	5e                   	pop    %esi
40682b:	5b                   	pop    %ebx
40682c:	8b e5                	mov    %ebp,%esp
40682e:	5d                   	pop    %ebp
40682f:	c3                   	ret
406830:	8b ff                	mov    %edi,%edi
406832:	55                   	push   %ebp
406833:	8b ec                	mov    %esp,%ebp
406835:	51                   	push   %ecx
406836:	ff 75 08             	push   0x8(%ebp)
406839:	e8 3b 06 00 00       	call   0x406e79
40683e:	59                   	pop    %ecx
40683f:	84 c0                	test   %al,%al
406841:	75 0c                	jne    0x40684f
406843:	6a 02                	push   $0x2
406845:	e8 87 14 00 00       	call   0x407cd1
40684a:	59                   	pop    %ecx
40684b:	32 c0                	xor    %al,%al
40684d:	eb 69                	jmp    0x4068b8
40684f:	53                   	push   %ebx
406850:	56                   	push   %esi
406851:	57                   	push   %edi
406852:	ff 75 08             	push   0x8(%ebp)
406855:	6a 10                	push   $0x10
406857:	e8 a4 03 00 00       	call   0x406c00
40685c:	8b 75 0c             	mov    0xc(%ebp),%esi
40685f:	33 db                	xor    %ebx,%ebx
406861:	43                   	inc    %ebx
406862:	33 ff                	xor    %edi,%edi
406864:	89 7d fc             	mov    %edi,-0x4(%ebp)
406867:	66 89 46 06          	mov    %ax,0x6(%esi)
40686b:	8d 45 fc             	lea    -0x4(%ebp),%eax
40686e:	50                   	push   %eax
40686f:	ff 75 08             	push   0x8(%ebp)
406872:	66 89 5e 08          	mov    %bx,0x8(%esi)
406876:	e8 eb 03 00 00       	call   0x406c66