40635e:	59                   	pop    %ecx
40635f:	a8 80                	test   $0x80,%al
406361:	74 07                	je     0x40636a
406363:	24 fc                	and    $0xfc,%al
406365:	89 46 0c             	mov    %eax,0xc(%esi)
406368:	eb 14                	jmp    0x40637e
40636a:	a8 01                	test   $0x1,%al
40636c:	74 10                	je     0x40637e
40636e:	a8 08                	test   $0x8,%al
406370:	74 0c                	je     0x40637e
406372:	f6 c4 04             	test   $0x4,%ah
406375:	75 07                	jne    0x40637e
406377:	c7 46 18 00 02 00 00 	movl   $0x200,0x18(%esi)
40637e:	57                   	push   %edi
40637f:	ff 74 24 14          	push   0x14(%esp)
406383:	ff 76 10             	push   0x10(%esi)
406386:	e8 d0 35 00 00       	call   0x40995b
40638b:	83 c4 0c             	add    $0xc,%esp
40638e:	33 c9                	xor    %ecx,%ecx
406390:	83 f8 ff             	cmp    $0xffffffff,%eax
406393:	0f 95 c1             	setne  %cl
406396:	49                   	dec    %ecx
406397:	8b c1                	mov    %ecx,%eax
406399:	eb 0e                	jmp    0x4063a9
40639b:	e8 3e 0d 00 00       	call   0x4070de
4063a0:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4063a6:	83 c8 ff             	or     $0xffffffff,%eax
4063a9:	5f                   	pop    %edi
4063aa:	5e                   	pop    %esi
4063ab:	c3                   	ret
4063ac:	8b 44 24 08          	mov    0x8(%esp),%eax
4063b0:	6a 00                	push   $0x0
4063b2:	ff 70 04             	push   0x4(%eax)
4063b5:	ff 30                	push   (%eax)
4063b7:	ff 74 24 10          	push   0x10(%esp)
4063bb:	e8 d4 37 00 00       	call   0x409b94
4063c0:	83 c4 10             	add    $0x10,%esp
4063c3:	c3                   	ret
4063c4:	55                   	push   %ebp
4063c5:	8b ec                	mov    %esp,%ebp
4063c7:	51                   	push   %ecx
4063c8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4063cc:	53                   	push   %ebx
4063cd:	8b 5d 10             	mov    0x10(%ebp),%ebx
4063d0:	57                   	push   %edi
4063d1:	8b 7d 14             	mov    0x14(%ebp),%edi
4063d4:	83 fb 04             	cmp    $0x4,%ebx
4063d7:	74 1b                	je     0x4063f4
4063d9:	83 ff 02             	cmp    $0x2,%edi
4063dc:	72 11                	jb     0x4063ef
4063de:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
4063e4:	77 09                	ja     0x4063ef
4063e6:	85 db                	test   %ebx,%ebx
4063e8:	74 0a                	je     0x4063f4
4063ea:	83 fb 40             	cmp    $0x40,%ebx
4063ed:	74 05                	je     0x4063f4
4063ef:	83 c8 ff             	or     $0xffffffff,%eax
4063f2:	eb 7b                	jmp    0x40646f
4063f4:	56                   	push   %esi
4063f5:	8b 75 08             	mov    0x8(%ebp),%esi
4063f8:	56                   	push   %esi
4063f9:	83 e7 fe             	and    $0xfffffffe,%edi
4063fc:	e8 c5 f4 ff ff       	call   0x4058c6
406401:	56                   	push   %esi
406402:	e8 c9 00 00 00       	call   0x4064d0
406407:	56                   	push   %esi
406408:	e8 47 38 00 00       	call   0x409c54
40640d:	66 81 66 0c f3 c2    	andw   $0xc2f3,0xc(%esi)
406413:	8b 4e 0c             	mov    0xc(%esi),%ecx
406416:	83 c4 0c             	add    $0xc,%esp
406419:	f6 c3 04             	test   $0x4,%bl
40641c:	74 0e                	je     0x40642c
40641e:	83 c9 04             	or     $0x4,%ecx
406421:	6a 02                	push   $0x2
406423:	89 4e 0c             	mov    %ecx,0xc(%esi)
406426:	8d 46 14             	lea    0x14(%esi),%eax
406429:	5f                   	pop    %edi
40642a:	eb 2c                	jmp    0x406458
40642c:	8b 45 0c             	mov    0xc(%ebp),%eax
40642f:	85 c0                	test   %eax,%eax
406431:	75 1f                	jne    0x406452
406433:	57                   	push   %edi
406434:	e8 54 0f 00 00       	call   0x40738d
406439:	85 c0                	test   %eax,%eax
40643b:	59                   	pop    %ecx
40643c:	75 0c                	jne    0x40644a
40643e:	ff 05 f0 17 41 00    	incl   0x4117f0
406444:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
406448:	eb 1a                	jmp    0x406464
40644a:	66 81 4e 0c 08 04    	orw    $0x408,0xc(%esi)
406450:	eb 06                	jmp    0x406458
406452:	80 cd 05             	or     $0x5,%ch
406455:	89 4e 0c             	mov    %ecx,0xc(%esi)
406458:	83 66 04 00          	andl   $0x0,0x4(%esi)
40645c:	89 7e 18             	mov    %edi,0x18(%esi)
40645f:	89 46 08             	mov    %eax,0x8(%esi)
406462:	89 06                	mov    %eax,(%esi)
406464:	56                   	push   %esi
406465:	e8 ae f4 ff ff       	call   0x405918
40646a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40646d:	59                   	pop    %ecx
40646e:	5e                   	pop    %esi
40646f:	5f                   	pop    %edi
406470:	5b                   	pop    %ebx
406471:	c9                   	leave
406472:	c3                   	ret
406473:	56                   	push   %esi
406474:	8b 74 24 08          	mov    0x8(%esp),%esi
406478:	85 f6                	test   %esi,%esi
40647a:	75 09                	jne    0x406485
40647c:	56                   	push   %esi
40647d:	e8 b3 00 00 00       	call   0x406535
406482:	59                   	pop    %ecx
406483:	5e                   	pop    %esi
406484:	c3                   	ret
406485:	57                   	push   %edi
406486:	56                   	push   %esi
406487:	e8 3a f4 ff ff       	call   0x4058c6
40648c:	56                   	push   %esi
40648d:	e8 10 00 00 00       	call   0x4064a2
406492:	56                   	push   %esi
406493:	8b f8                	mov    %eax,%edi
406495:	e8 7e f4 ff ff       	call   0x405918
40649a:	83 c4 0c             	add    $0xc,%esp
40649d:	8b c7                	mov    %edi,%eax
40649f:	5f                   	pop    %edi
4064a0:	5e                   	pop    %esi
4064a1:	c3                   	ret
4064a2:	56                   	push   %esi
4064a3:	8b 74 24 08          	mov    0x8(%esp),%esi
4064a7:	56                   	push   %esi
4064a8:	e8 23 00 00 00       	call   0x4064d0
4064ad:	85 c0                	test   %eax,%eax
4064af:	59                   	pop    %ecx
4064b0:	74 05                	je     0x4064b7
4064b2:	83 c8 ff             	or     $0xffffffff,%eax
4064b5:	5e                   	pop    %esi
4064b6:	c3                   	ret
4064b7:	f6 46 0d 40          	testb  $0x40,0xd(%esi)
4064bb:	74 0f                	je     0x4064cc
4064bd:	ff 76 10             	push   0x10(%esi)
4064c0:	e8 ba 37 00 00       	call   0x409c7f
4064c5:	f7 d8                	neg    %eax
4064c7:	59                   	pop    %ecx
4064c8:	5e                   	pop    %esi
4064c9:	1b c0                	sbb    %eax,%eax
4064cb:	c3                   	ret
4064cc:	33 c0                	xor    %eax,%eax
4064ce:	5e                   	pop    %esi
4064cf:	c3                   	ret
4064d0:	53                   	push   %ebx
4064d1:	56                   	push   %esi
4064d2:	8b 74 24 0c          	mov    0xc(%esp),%esi
4064d6:	33 db                	xor    %ebx,%ebx
4064d8:	57                   	push   %edi
4064d9:	8b 46 0c             	mov    0xc(%esi),%eax
4064dc:	8b c8                	mov    %eax,%ecx
4064de:	83 e1 03             	and    $0x3,%ecx
4064e1:	80 f9 02             	cmp    $0x2,%cl
4064e4:	75 37                	jne    0x40651d
4064e6:	66 a9 08 01          	test   $0x108,%ax
4064ea:	74 31                	je     0x40651d
4064ec:	8b 46 08             	mov    0x8(%esi),%eax
4064ef:	8b 3e                	mov    (%esi),%edi
4064f1:	2b f8                	sub    %eax,%edi
4064f3:	85 ff                	test   %edi,%edi
4064f5:	7e 26                	jle    0x40651d
4064f7:	57                   	push   %edi
4064f8:	50                   	push   %eax
4064f9:	ff 76 10             	push   0x10(%esi)
4064fc:	e8 92 2f 00 00       	call   0x409493
406501:	83 c4 0c             	add    $0xc,%esp
406504:	3b c7                	cmp    %edi,%eax
406506:	75 0e                	jne    0x406516
406508:	8b 46 0c             	mov    0xc(%esi),%eax
40650b:	a8 80                	test   $0x80,%al
40650d:	74 0e                	je     0x40651d
40650f:	24 fd                	and    $0xfd,%al
406511:	89 46 0c             	mov    %eax,0xc(%esi)
406514:	eb 07                	jmp    0x40651d
406516:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
40651a:	83 cb ff             	or     $0xffffffff,%ebx
40651d:	8b 46 08             	mov    0x8(%esi),%eax
406520:	83 66 04 00          	andl   $0x0,0x4(%esi)
406524:	89 06                	mov    %eax,(%esi)
406526:	5f                   	pop    %edi
406527:	8b c3                	mov    %ebx,%eax
406529:	5e                   	pop    %esi
40652a:	5b                   	pop    %ebx
40652b:	c3                   	ret
40652c:	6a 01                	push   $0x1
40652e:	e8 02 00 00 00       	call   0x406535
406533:	59                   	pop    %ecx
406534:	c3                   	ret
406535:	53                   	push   %ebx
406536:	56                   	push   %esi
406537:	57                   	push   %edi
406538:	6a 02                	push   $0x2
40653a:	33 db                	xor    %ebx,%ebx
40653c:	33 ff                	xor    %edi,%edi
40653e:	e8 b2 0a 00 00       	call   0x406ff5
406543:	33 f6                	xor    %esi,%esi
406545:	59                   	pop    %ecx
406546:	39 35 00 2f 41 00    	cmp    %esi,0x412f00
40654c:	7e 74                	jle    0x4065c2
40654e:	a1 e0 1e 41 00       	mov    0x411ee0,%eax
406553:	8b 04 b0             	mov    (%eax,%esi,4),%eax
406556:	85 c0                	test   %eax,%eax
406558:	74 5f                	je     0x4065b9
40655a:	f6 40 0c 83          	testb  $0x83,0xc(%eax)
40655e:	74 59                	je     0x4065b9
406560:	50                   	push   %eax
406561:	56                   	push   %esi
406562:	e8 8e f3 ff ff       	call   0x4058f5
406567:	a1 e0 1e 41 00       	mov    0x411ee0,%eax
40656c:	59                   	pop    %ecx
40656d:	59                   	pop    %ecx
40656e:	8b 04 b0             	mov    (%eax,%esi,4),%eax
406571:	8b 48 0c             	mov    0xc(%eax),%ecx
406574:	f6 c1 83             	test   $0x83,%cl
406577:	74 30                	je     0x4065a9
406579:	83 7c 24 10 01       	cmpl   $0x1,0x10(%esp)
40657e:	75 0f                	jne    0x40658f
406580:	50                   	push   %eax
406581:	e8 1c ff ff ff       	call   0x4064a2
406586:	83 f8 ff             	cmp    $0xffffffff,%eax
406589:	59                   	pop    %ecx
40658a:	74 1d                	je     0x4065a9
40658c:	43                   	inc    %ebx
40658d:	eb 1a                	jmp    0x4065a9
40658f:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
406594:	75 13                	jne    0x4065a9
406596:	f6 c1 02             	test   $0x2,%cl
406599:	74 0e                	je     0x4065a9
40659b:	50                   	push   %eax
40659c:	e8 01 ff ff ff       	call   0x4064a2
4065a1:	83 f8 ff             	cmp    $0xffffffff,%eax
4065a4:	59                   	pop    %ecx
4065a5:	75 02                	jne    0x4065a9
4065a7:	0b f8                	or     %eax,%edi
4065a9:	a1 e0 1e 41 00       	mov    0x411ee0,%eax
4065ae:	ff 34 b0             	push   (%eax,%esi,4)
4065b1:	56                   	push   %esi
4065b2:	e8 90 f3 ff ff       	call   0x405947
4065b7:	59                   	pop    %ecx
4065b8:	59                   	pop    %ecx
4065b9:	46                   	inc    %esi
4065ba:	3b 35 00 2f 41 00    	cmp    0x412f00,%esi
4065c0:	7c 8c                	jl     0x40654e
4065c2:	6a 02                	push   $0x2
4065c4:	e8 8d 0a 00 00       	call   0x407056
4065c9:	83 7c 24 14 01       	cmpl   $0x1,0x14(%esp)
4065ce:	59                   	pop    %ecx
4065cf:	8b c3                	mov    %ebx,%eax
4065d1:	74 02                	je     0x4065d5
4065d3:	8b c7                	mov    %edi,%eax
4065d5:	5f                   	pop    %edi
4065d6:	5e                   	pop    %esi
4065d7:	5b                   	pop    %ebx
4065d8:	c3                   	ret
4065d9:	cc                   	int3
4065da:	cc                   	int3
4065db:	cc                   	int3
4065dc:	cc                   	int3
4065dd:	cc                   	int3
4065de:	cc                   	int3
4065df:	cc                   	int3
4065e0:	8b 54 24 0c          	mov    0xc(%esp),%edx
4065e4:	8b 4c 24 04          	mov    0x4(%esp),%ecx
4065e8:	85 d2                	test   %edx,%edx
4065ea:	74 47                	je     0x406633
4065ec:	33 c0                	xor    %eax,%eax
4065ee:	8a 44 24 08          	mov    0x8(%esp),%al
4065f2:	57                   	push   %edi
4065f3:	8b f9                	mov    %ecx,%edi
4065f5:	83 fa 04             	cmp    $0x4,%edx
4065f8:	72 2d                	jb     0x406627
4065fa:	f7 d9                	neg    %ecx
4065fc:	83 e1 03             	and    $0x3,%ecx
4065ff:	74 08                	je     0x406609
406601:	2b d1                	sub    %ecx,%edx
406603:	88 07                	mov    %al,(%edi)
406605:	47                   	inc    %edi
406606:	49                   	dec    %ecx
406607:	75 fa                	jne    0x406603
406609:	8b c8                	mov    %eax,%ecx
40660b:	c1 e0 08             	shl    $0x8,%eax
40660e:	03 c1                	add    %ecx,%eax
406610:	8b c8                	mov    %eax,%ecx
406612:	c1 e0 10             	shl    $0x10,%eax
406615:	03 c1                	add    %ecx,%eax
406617:	8b ca                	mov    %edx,%ecx
406619:	83 e2 03             	and    $0x3,%edx
40661c:	c1 e9 02             	shr    $0x2,%ecx
40661f:	74 06                	je     0x406627
406621:	f3 ab                	rep stos %eax,%es:(%edi)
406623:	85 d2                	test   %edx,%edx
406625:	74 06                	je     0x40662d
406627:	88 07                	mov    %al,(%edi)
406629:	47                   	inc    %edi
40662a:	4a                   	dec    %edx
40662b:	75 fa                	jne    0x406627
40662d:	8b 44 24 08          	mov    0x8(%esp),%eax
406631:	5f                   	pop    %edi
406632:	c3                   	ret
406633:	8b 44 24 04          	mov    0x4(%esp),%eax
406637:	c3                   	ret
406638:	cc                   	int3
406639:	cc                   	int3
40663a:	cc                   	int3
40663b:	cc                   	int3
40663c:	cc                   	int3
40663d:	cc                   	int3
40663e:	cc                   	int3
40663f:	cc                   	int3
406640:	55                   	push   %ebp
406641:	8b ec                	mov    %esp,%ebp
406643:	57                   	push   %edi
406644:	56                   	push   %esi
406645:	8b 75 0c             	mov    0xc(%ebp),%esi
406648:	8b 4d 10             	mov    0x10(%ebp),%ecx
40664b:	8b 7d 08             	mov    0x8(%ebp),%edi
40664e:	8b c1                	mov    %ecx,%eax
406650:	8b d1                	mov    %ecx,%edx
406652:	03 c6                	add    %esi,%eax
406654:	3b fe                	cmp    %esi,%edi
406656:	76 08                	jbe    0x406660
406658:	3b f8                	cmp    %eax,%edi
40665a:	0f 82 78 01 00 00    	jb     0x4067d8
406660:	f7 c7 03 00 00 00    	test   $0x3,%edi
406666:	75 14                	jne    0x40667c
406668:	c1 e9 02             	shr    $0x2,%ecx
40666b:	83 e2 03             	and    $0x3,%edx
40666e:	83 f9 08             	cmp    $0x8,%ecx
406671:	72 29                	jb     0x40669c
406673:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
406675:	ff 24 95 88 67 40 00 	jmp    *0x406788(,%edx,4)
40667c:	8b c7                	mov    %edi,%eax
40667e:	ba 03 00 00 00       	mov    $0x3,%edx
406683:	83 e9 04             	sub    $0x4,%ecx
406686:	72 0c                	jb     0x406694
406688:	83 e0 03             	and    $0x3,%eax
40668b:	03 c8                	add    %eax,%ecx
40668d:	ff 24 85 a0 66 40 00 	jmp    *0x4066a0(,%eax,4)
406694:	ff 24 8d 98 67 40 00 	jmp    *0x406798(,%ecx,4)
40669b:	90                   	nop
40669c:	ff 24 8d 1c 67 40 00 	jmp    *0x40671c(,%ecx,4)
4066a3:	90                   	nop
4066a4:	b0 66                	mov    $0x66,%al
4066a6:	40                   	inc    %eax