40550a:	e8 5d bb 01 00       	call   0x42106c
40550f:	83 c4 10             	add    $0x10,%esp
405512:	89 33                	mov    %esi,(%ebx)
405514:	e9 73 ff ff ff       	jmp    0x40548c
405519:	6a 00                	push   $0x0
40551b:	8d 45 f8             	lea    -0x8(%ebp),%eax
40551e:	50                   	push   %eax
40551f:	68 00 00 01 00       	push   $0x10000
405524:	ff 77 04             	push   0x4(%edi)
405527:	ff 37                	push   (%edi)
405529:	ff 15 e0 f1 48 00    	call   *0x48f1e0
40552f:	85 c0                	test   %eax,%eax
405531:	0f 84 1e ff ff ff    	je     0x405455
405537:	8b 45 f8             	mov    -0x8(%ebp),%eax
40553a:	85 c0                	test   %eax,%eax
40553c:	0f 84 13 ff ff ff    	je     0x405455
405542:	e9 71 89 03 00       	jmp    0x43deb8
405547:	8a 45 ff             	mov    -0x1(%ebp),%al
40554a:	84 c0                	test   %al,%al
40554c:	0f 85 71 ff ff ff    	jne    0x4054c3
405552:	5f                   	pop    %edi
405553:	5e                   	pop    %esi
405554:	5b                   	pop    %ebx
405555:	8b e5                	mov    %ebp,%esp
405557:	5d                   	pop    %ebp
405558:	c2 04 00             	ret    $0x4
40555b:	b8 10 00 00 00       	mov    $0x10,%eax
405560:	eb 86                	jmp    0x4054e8
405562:	55                   	push   %ebp
405563:	8b ec                	mov    %esp,%ebp
405565:	83 ec 14             	sub    $0x14,%esp
405568:	53                   	push   %ebx
405569:	56                   	push   %esi
40556a:	8b f1                	mov    %ecx,%esi
40556c:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40556f:	e8 a4 06 00 00       	call   0x405c18
405574:	8d 45 ec             	lea    -0x14(%ebp),%eax
405577:	8b ce                	mov    %esi,%ecx
405579:	50                   	push   %eax
40557a:	e8 81 fe ff ff       	call   0x405400
40557f:	84 c0                	test   %al,%al
405581:	74 20                	je     0x4055a3
405583:	ff 75 08             	push   0x8(%ebp)
405586:	8d 45 ec             	lea    -0x14(%ebp),%eax
405589:	50                   	push   %eax
40558a:	e8 32 2c 00 00       	call   0x4081c1
40558f:	b3 01                	mov    $0x1,%bl
405591:	8d 4d ec             	lea    -0x14(%ebp),%ecx
405594:	e8 cb 04 00 00       	call   0x405a64
405599:	5e                   	pop    %esi
40559a:	8a c3                	mov    %bl,%al
40559c:	5b                   	pop    %ebx
40559d:	8b e5                	mov    %ebp,%esp
40559f:	5d                   	pop    %ebp
4055a0:	c2 04 00             	ret    $0x4
4055a3:	32 db                	xor    %bl,%bl
4055a5:	eb ea                	jmp    0x405591
4055a7:	55                   	push   %ebp
4055a8:	8b ec                	mov    %esp,%ebp
4055aa:	83 ec 14             	sub    $0x14,%esp
4055ad:	53                   	push   %ebx
4055ae:	56                   	push   %esi
4055af:	8b f1                	mov    %ecx,%esi
4055b1:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4055b4:	e8 5f 06 00 00       	call   0x405c18
4055b9:	8d 45 ec             	lea    -0x14(%ebp),%eax
4055bc:	8b ce                	mov    %esi,%ecx
4055be:	50                   	push   %eax
4055bf:	e8 3c fe ff ff       	call   0x405400
4055c4:	84 c0                	test   %al,%al
4055c6:	74 20                	je     0x4055e8
4055c8:	ff 75 08             	push   0x8(%ebp)
4055cb:	8d 45 ec             	lea    -0x14(%ebp),%eax
4055ce:	50                   	push   %eax
4055cf:	e8 66 23 00 00       	call   0x40793a
4055d4:	b3 01                	mov    $0x1,%bl
4055d6:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4055d9:	e8 86 04 00 00       	call   0x405a64
4055de:	5e                   	pop    %esi
4055df:	8a c3                	mov    %bl,%al
4055e1:	5b                   	pop    %ebx
4055e2:	8b e5                	mov    %ebp,%esp
4055e4:	5d                   	pop    %ebp
4055e5:	c2 04 00             	ret    $0x4
4055e8:	32 db                	xor    %bl,%bl
4055ea:	eb ea                	jmp    0x4055d6
4055ec:	55                   	push   %ebp
4055ed:	8b ec                	mov    %esp,%ebp
4055ef:	51                   	push   %ecx
4055f0:	8b 41 2c             	mov    0x2c(%ecx),%eax
4055f3:	83 f8 04             	cmp    $0x4,%eax
4055f6:	75 0d                	jne    0x405605
4055f8:	ff 75 08             	push   0x8(%ebp)
4055fb:	e8 62 ff ff ff       	call   0x405562
405600:	59                   	pop    %ecx
405601:	5d                   	pop    %ebp
405602:	c2 04 00             	ret    $0x4
405605:	83 f8 05             	cmp    $0x5,%eax
405608:	74 1e                	je     0x405628
40560a:	83 f8 06             	cmp    $0x6,%eax
40560d:	74 19                	je     0x405628
40560f:	83 f8 07             	cmp    $0x7,%eax
405612:	74 14                	je     0x405628
405614:	83 f8 08             	cmp    $0x8,%eax
405617:	74 0f                	je     0x405628
405619:	83 f8 03             	cmp    $0x3,%eax
40561c:	74 da                	je     0x4055f8
40561e:	ff 75 08             	push   0x8(%ebp)
405621:	e8 81 ff ff ff       	call   0x4055a7
405626:	eb d8                	jmp    0x405600
405628:	ff 75 08             	push   0x8(%ebp)
40562b:	e8 af de 05 00       	call   0x4634df
405630:	eb ce                	jmp    0x405600
405632:	55                   	push   %ebp
405633:	8b ec                	mov    %esp,%ebp
405635:	51                   	push   %ecx
405636:	53                   	push   %ebx
405637:	56                   	push   %esi
405638:	57                   	push   %edi
405639:	8b f9                	mov    %ecx,%edi
40563b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40563e:	e8 ec 03 00 00       	call   0x405a2f
405643:	8b 75 0c             	mov    0xc(%ebp),%esi
405646:	33 db                	xor    %ebx,%ebx
405648:	88 5d ff             	mov    %bl,-0x1(%ebp)
40564b:	39 1e                	cmp    %ebx,(%esi)
40564d:	76 25                	jbe    0x405674
40564f:	6a 01                	push   $0x1
405651:	8d 45 0c             	lea    0xc(%ebp),%eax
405654:	8b cf                	mov    %edi,%ecx
405656:	50                   	push   %eax
405657:	e8 c4 06 00 00       	call   0x405d20
40565c:	85 c0                	test   %eax,%eax
40565e:	74 21                	je     0x405681
405660:	ff 75 0c             	push   0xc(%ebp)
405663:	8b 4d 08             	mov    0x8(%ebp),%ecx
405666:	c6 45 ff 01          	movb   $0x1,-0x1(%ebp)
40566a:	e8 6b 05 00 00       	call   0x405bda
40566f:	43                   	inc    %ebx
405670:	3b 1e                	cmp    (%esi),%ebx
405672:	72 db                	jb     0x40564f
405674:	89 1e                	mov    %ebx,(%esi)
405676:	b0 01                	mov    $0x1,%al
405678:	5f                   	pop    %edi
405679:	5e                   	pop    %esi
40567a:	5b                   	pop    %ebx
40567b:	8b e5                	mov    %ebp,%esp
40567d:	5d                   	pop    %ebp
40567e:	c2 08 00             	ret    $0x8
405681:	8a 45 ff             	mov    -0x1(%ebp),%al
405684:	84 c0                	test   %al,%al
405686:	75 ec                	jne    0x405674
405688:	eb ee                	jmp    0x405678
40568a:	55                   	push   %ebp
40568b:	8b ec                	mov    %esp,%ebp
40568d:	83 ec 10             	sub    $0x10,%esp
405690:	53                   	push   %ebx
405691:	56                   	push   %esi
405692:	8b f1                	mov    %ecx,%esi
405694:	8d 4d f0             	lea    -0x10(%ebp),%ecx
405697:	e8 7c 05 00 00       	call   0x405c18
40569c:	ff 75 0c             	push   0xc(%ebp)
40569f:	8d 45 f0             	lea    -0x10(%ebp),%eax
4056a2:	8b ce                	mov    %esi,%ecx
4056a4:	50                   	push   %eax
4056a5:	e8 88 ff ff ff       	call   0x405632
4056aa:	84 c0                	test   %al,%al
4056ac:	74 20                	je     0x4056ce
4056ae:	ff 75 08             	push   0x8(%ebp)
4056b1:	8d 45 f0             	lea    -0x10(%ebp),%eax
4056b4:	50                   	push   %eax
4056b5:	e8 07 2b 00 00       	call   0x4081c1
4056ba:	b3 01                	mov    $0x1,%bl
4056bc:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4056bf:	e8 a0 03 00 00       	call   0x405a64
4056c4:	5e                   	pop    %esi
4056c5:	8a c3                	mov    %bl,%al
4056c7:	5b                   	pop    %ebx
4056c8:	8b e5                	mov    %ebp,%esp
4056ca:	5d                   	pop    %ebp
4056cb:	c2 08 00             	ret    $0x8
4056ce:	32 db                	xor    %bl,%bl
4056d0:	eb ea                	jmp    0x4056bc
4056d2:	55                   	push   %ebp
4056d3:	8b ec                	mov    %esp,%ebp
4056d5:	8b 41 2c             	mov    0x2c(%ecx),%eax
4056d8:	83 f8 05             	cmp    $0x5,%eax
4056db:	74 25                	je     0x405702
4056dd:	83 f8 06             	cmp    $0x6,%eax
4056e0:	74 20                	je     0x405702
4056e2:	83 f8 07             	cmp    $0x7,%eax
4056e5:	74 1b                	je     0x405702
4056e7:	83 f8 08             	cmp    $0x8,%eax
4056ea:	74 16                	je     0x405702
4056ec:	83 f8 03             	cmp    $0x3,%eax
4056ef:	74 05                	je     0x4056f6
4056f1:	83 f8 04             	cmp    $0x4,%eax
4056f4:	75 06                	jne    0x4056fc
4056f6:	5d                   	pop    %ebp
4056f7:	e9 8e ff ff ff       	jmp    0x40568a
4056fc:	5d                   	pop    %ebp
4056fd:	e9 a6 de 05 00       	jmp    0x4635a8
405702:	5d                   	pop    %ebp
405703:	e9 81 dd 05 00       	jmp    0x463489
405708:	8b 41 2c             	mov    0x2c(%ecx),%eax
40570b:	83 f8 08             	cmp    $0x8,%eax
40570e:	77 33                	ja     0x405743
405710:	ff 24 85 4c 57 40 00 	jmp    *0x40574c(,%eax,4)
405717:	b8 00 01 00 00       	mov    $0x100,%eax
40571c:	c3                   	ret
40571d:	6a 20                	push   $0x20
40571f:	e9 72 87 03 00       	jmp    0x43de96
405724:	b8 00 04 00 00       	mov    $0x400,%eax
405729:	c3                   	ret
40572a:	6a 40                	push   $0x40
40572c:	e9 65 87 03 00       	jmp    0x43de96
405731:	b8 00 08 00 00       	mov    $0x800,%eax
405736:	c3                   	ret
405737:	b8 80 00 00 00       	mov    $0x80,%eax
40573c:	c3                   	ret
40573d:	b8 00 02 00 00       	mov    $0x200,%eax
405742:	c3                   	ret
405743:	6a 10                	push   $0x10
405745:	e9 4c 87 03 00       	jmp    0x43de96
40574a:	8b ff                	mov    %edi,%edi
40574c:	43                   	inc    %ebx
40574d:	57                   	push   %edi
40574e:	40                   	inc    %eax
40574f:	00 3d 57 40 00 43    	add    %bh,0x43004057
405755:	57                   	push   %edi
405756:	40                   	inc    %eax
405757:	00 37                	add    %dh,(%edi)
405759:	57                   	push   %edi
40575a:	40                   	inc    %eax
40575b:	00 17                	add    %dl,(%edi)
40575d:	57                   	push   %edi
40575e:	40                   	inc    %eax
40575f:	00 1d 57 40 00 24    	add    %bl,0x24004057
405765:	57                   	push   %edi
405766:	40                   	inc    %eax
405767:	00 2a                	add    %ch,(%edx)
405769:	57                   	push   %edi
40576a:	40                   	inc    %eax
40576b:	00 31                	add    %dh,(%ecx)
40576d:	57                   	push   %edi
40576e:	40                   	inc    %eax
40576f:	00 55 8b             	add    %dl,-0x75(%ebp)
405772:	ec                   	in     (%dx),%al
405773:	83 e4 f8             	and    $0xfffffff8,%esp
405776:	83 ec 24             	sub    $0x24,%esp
405779:	53                   	push   %ebx
40577a:	56                   	push   %esi
40577b:	8b f1                	mov    %ecx,%esi
40577d:	57                   	push   %edi
40577e:	f7 46 28 00 80 00 00 	testl  $0x8000,0x28(%esi)
405785:	0f 84 43 88 03 00    	je     0x43dfce
40578b:	f6 46 28 10          	testb  $0x10,0x28(%esi)
40578f:	0f 85 e4 00 00 00    	jne    0x405879
405795:	8b 46 10             	mov    0x10(%esi),%eax
405798:	33 db                	xor    %ebx,%ebx
40579a:	53                   	push   %ebx
40579b:	53                   	push   %ebx
40579c:	89 44 24 18          	mov    %eax,0x18(%esp)
4057a0:	8b 46 14             	mov    0x14(%esi),%eax
4057a3:	53                   	push   %ebx
4057a4:	89 44 24 18          	mov    %eax,0x18(%esp)
4057a8:	e8 a1 04 00 00       	call   0x405c4e
4057ad:	53                   	push   %ebx
4057ae:	8d 4c 24 18          	lea    0x18(%esp),%ecx
4057b2:	e8 d7 fb ff ff       	call   0x40538e
4057b7:	f7 46 28 00 40 00 00 	testl  $0x4000,0x28(%esi)
4057be:	0f 85 19 88 03 00    	jne    0x43dfdd
4057c4:	bb 00 00 01 00       	mov    $0x10000,%ebx
4057c9:	53                   	push   %ebx
4057ca:	e8 27 b8 01 00       	call   0x420ff6
4057cf:	59                   	pop    %ecx
4057d0:	50                   	push   %eax
4057d1:	8d 4c 24 20          	lea    0x20(%esp),%ecx
4057d5:	e8 b4 fb ff ff       	call   0x40538e
4057da:	8d 4c 24 14          	lea    0x14(%esp),%ecx
4057de:	e8 8e fb ff ff       	call   0x405371
4057e3:	8b 44 24 20          	mov    0x20(%esp),%eax
4057e7:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
4057eb:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
4057ef:	89 44 24 18          	mov    %eax,0x18(%esp)
4057f3:	89 7c 24 14          	mov    %edi,0x14(%esp)
4057f7:	ff 00                	incl   (%eax)
4057f9:	e8 73 fb ff ff       	call   0x405371
4057fe:	53                   	push   %ebx
4057ff:	57                   	push   %edi
405800:	8b ce                	mov    %esi,%ecx
405802:	e8 19 05 00 00       	call   0x405d20
405807:	6a 00                	push   $0x0
405809:	ff 74 24 10          	push   0x10(%esp)
40580d:	8b ce                	mov    %esi,%ecx
40580f:	8b d8                	mov    %eax,%ebx
405811:	ff 74 24 18          	push   0x18(%esp)
405815:	e8 34 04 00 00       	call   0x405c4e
40581a:	85 db                	test   %ebx,%ebx
40581c:	74 62                	je     0x405880
40581e:	53                   	push   %ebx
40581f:	57                   	push   %edi
405820:	c6 44 24 2c 01       	movb   $0x1,0x2c(%esp)
405825:	c7 44 24 30 46 00 00 	movl   $0x46,0x30(%esp)
40582c:	00
40582d:	c7 44 24 34 0a 00 00 	movl   $0xa,0x34(%esp)
405834:	00
405835:	e8 d0 fa ff ff       	call   0x40530a
40583a:	85 c0                	test   %eax,%eax
40583c:	75 4a                	jne    0x405888
40583e:	f7 46 28 f0 0f 00 00 	testl  $0xff0,0x28(%esi)
405845:	0f 85 a0 87 03 00    	jne    0x43dfeb
40584b:	53                   	push   %ebx
40584c:	57                   	push   %edi
40584d:	8d 4c 24 2c          	lea    0x2c(%esp),%ecx
405851:	e8 41 f8 ff ff       	call   0x405097
405856:	89 46 2c             	mov    %eax,0x2c(%esi)
405859:	83 f8 02             	cmp    $0x2,%eax
40585c:	75 07                	jne    0x405865
40585e:	c7 46 2c 04 00 00 00 	movl   $0x4,0x2c(%esi)
405865:	8b 4e 2c             	mov    0x2c(%esi),%ecx
405868:	e8 e4 fa ff ff       	call   0x405351
40586d:	89 46 30             	mov    %eax,0x30(%esi)
405870:	8d 4c 24 14          	lea    0x14(%esp),%ecx
405874:	e8 f8 fa ff ff       	call   0x405371
405879:	5f                   	pop    %edi
40587a:	5e                   	pop    %esi
40587b:	5b                   	pop    %ebx
40587c:	8b e5                	mov    %ebp,%esp
40587e:	5d                   	pop    %ebp
40587f:	c3                   	ret
405880:	f6 46 28 01          	testb  $0x1,0x28(%esi)
405884:	75 ea                	jne    0x405870
405886:	eb 96                	jmp    0x40581e
405888:	89 46 2c             	mov    %eax,0x2c(%esi)
40588b:	eb d8                	jmp    0x405865
40588d:	8b d1                	mov    %ecx,%edx
40588f:	8b 42 28             	mov    0x28(%edx),%eax
405892:	a8 10                	test   $0x10,%al
405894:	75 34                	jne    0x4058ca
405896:	a9 00 02 00 00       	test   $0x200,%eax
40589b:	75 33                	jne    0x4058d0
40589d:	a8 20                	test   $0x20,%al
40589f:	75 38                	jne    0x4058d9
4058a1:	a9 00 04 00 00       	test   $0x400,%eax
4058a6:	75 3a                	jne    0x4058e2
4058a8:	a8 40                	test   $0x40,%al
4058aa:	75 3f                	jne    0x4058eb
4058ac:	a9 00 08 00 00       	test   $0x800,%eax
4058b1:	75 41                	jne    0x4058f4