40550e:	83 e0 18             	and    $0x18,%eax
405511:	c3                   	ret
405512:	55                   	push   %ebp
405513:	8b ec                	mov    %esp,%ebp
405515:	53                   	push   %ebx
405516:	56                   	push   %esi
405517:	57                   	push   %edi
405518:	8b 7d 0c             	mov    0xc(%ebp),%edi
40551b:	85 ff                	test   %edi,%edi
40551d:	74 16                	je     0x405535
40551f:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
405523:	74 10                	je     0x405535
405525:	80 3f 00             	cmpb   $0x0,(%edi)
405528:	75 12                	jne    0x40553c
40552a:	8b 45 08             	mov    0x8(%ebp),%eax
40552d:	85 c0                	test   %eax,%eax
40552f:	74 04                	je     0x405535
405531:	66 83 20 00          	andw   $0x0,(%eax)
405535:	33 c0                	xor    %eax,%eax
405537:	5f                   	pop    %edi
405538:	5e                   	pop    %esi
405539:	5b                   	pop    %ebx
40553a:	5d                   	pop    %ebp
40553b:	c3                   	ret
40553c:	8b 45 18             	mov    0x18(%ebp),%eax
40553f:	85 c0                	test   %eax,%eax
405541:	75 0f                	jne    0x405552
405543:	e8 7e 3d 00 00       	call   0x4092c6
405548:	8b 70 08             	mov    0x8(%eax),%esi
40554b:	e8 50 3d 00 00       	call   0x4092a0
405550:	eb 05                	jmp    0x405557
405552:	8b 30                	mov    (%eax),%esi
405554:	8b 40 04             	mov    0x4(%eax),%eax
405557:	85 f6                	test   %esi,%esi
405559:	89 45 0c             	mov    %eax,0xc(%ebp)
40555c:	75 13                	jne    0x405571
40555e:	8b 45 08             	mov    0x8(%ebp),%eax
405561:	85 c0                	test   %eax,%eax
405563:	74 07                	je     0x40556c
405565:	66 0f b6 0f          	movzbw (%edi),%cx
405569:	66 89 08             	mov    %cx,(%eax)
40556c:	33 c0                	xor    %eax,%eax
40556e:	40                   	inc    %eax
40556f:	eb c6                	jmp    0x405537
405571:	ff 75 0c             	push   0xc(%ebp)
405574:	e8 b6 fe ff ff       	call   0x40542f
405579:	8b 75 14             	mov    0x14(%ebp),%esi
40557c:	83 3e 00             	cmpl   $0x0,(%esi)
40557f:	59                   	pop    %ecx
405580:	8b d8                	mov    %eax,%ebx
405582:	74 54                	je     0x4055d8
405584:	8a 07                	mov    (%edi),%al
405586:	53                   	push   %ebx
405587:	88 46 01             	mov    %al,0x1(%esi)
40558a:	e8 fb 3c 00 00       	call   0x40928a
40558f:	83 f8 01             	cmp    $0x1,%eax
405592:	59                   	pop    %ecx
405593:	7e 2d                	jle    0x4055c2
405595:	33 c0                	xor    %eax,%eax
405597:	39 45 08             	cmp    %eax,0x8(%ebp)
40559a:	0f 95 c0             	setne  %al
40559d:	50                   	push   %eax
40559e:	ff 75 08             	push   0x8(%ebp)
4055a1:	6a 02                	push   $0x2
4055a3:	56                   	push   %esi
4055a4:	6a 09                	push   $0x9
4055a6:	ff 75 0c             	push   0xc(%ebp)
4055a9:	ff 15 a0 70 41 00    	call   *0x4170a0
4055af:	85 c0                	test   %eax,%eax
4055b1:	74 0f                	je     0x4055c2
4055b3:	83 26 00             	andl   $0x0,(%esi)
4055b6:	53                   	push   %ebx
4055b7:	e8 ce 3c 00 00       	call   0x40928a
4055bc:	59                   	pop    %ecx
4055bd:	e9 75 ff ff ff       	jmp    0x405537
4055c2:	83 26 00             	andl   $0x0,(%esi)
4055c5:	e8 30 3e 00 00       	call   0x4093fa
4055ca:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
4055d0:	83 c8 ff             	or     $0xffffffff,%eax
4055d3:	e9 5f ff ff ff       	jmp    0x405537
4055d8:	85 db                	test   %ebx,%ebx
4055da:	75 13                	jne    0x4055ef
4055dc:	e8 4a 38 00 00       	call   0x408e2b
4055e1:	0f b6 0f             	movzbl (%edi),%ecx
4055e4:	0f b7 04 48          	movzwl (%eax,%ecx,2),%eax
4055e8:	25 00 80 00 00       	and    $0x8000,%eax
4055ed:	eb 0e                	jmp    0x4055fd
4055ef:	0f b6 07             	movzbl (%edi),%eax
4055f2:	8b 4b 04             	mov    0x4(%ebx),%ecx
4055f5:	0f b6 44 01 1d       	movzbl 0x1d(%ecx,%eax,1),%eax
4055fa:	83 e0 04             	and    $0x4,%eax
4055fd:	85 c0                	test   %eax,%eax
4055ff:	74 5b                	je     0x40565c
405601:	53                   	push   %ebx
405602:	e8 83 3c 00 00       	call   0x40928a
405607:	39 45 10             	cmp    %eax,0x10(%ebp)
40560a:	59                   	pop    %ecx
40560b:	73 0c                	jae    0x405619
40560d:	8a 07                	mov    (%edi),%al
40560f:	6a fe                	push   $0xfffffffe
405611:	88 06                	mov    %al,(%esi)
405613:	58                   	pop    %eax
405614:	e9 1e ff ff ff       	jmp    0x405537
405619:	53                   	push   %ebx
40561a:	e8 6b 3c 00 00       	call   0x40928a
40561f:	83 f8 01             	cmp    $0x1,%eax
405622:	59                   	pop    %ecx
405623:	7e 28                	jle    0x40564d
405625:	33 c0                	xor    %eax,%eax
405627:	39 45 08             	cmp    %eax,0x8(%ebp)
40562a:	0f 95 c0             	setne  %al
40562d:	50                   	push   %eax
40562e:	ff 75 08             	push   0x8(%ebp)
405631:	53                   	push   %ebx
405632:	e8 53 3c 00 00       	call   0x40928a
405637:	59                   	pop    %ecx
405638:	50                   	push   %eax
405639:	57                   	push   %edi
40563a:	6a 09                	push   $0x9
40563c:	ff 75 0c             	push   0xc(%ebp)
40563f:	ff 15 a0 70 41 00    	call   *0x4170a0
405645:	85 c0                	test   %eax,%eax
405647:	0f 85 69 ff ff ff    	jne    0x4055b6
40564d:	80 7f 01 00          	cmpb   $0x0,0x1(%edi)
405651:	0f 85 5f ff ff ff    	jne    0x4055b6
405657:	e9 66 ff ff ff       	jmp    0x4055c2
40565c:	33 c0                	xor    %eax,%eax
40565e:	39 45 08             	cmp    %eax,0x8(%ebp)
405661:	0f 95 c0             	setne  %al
405664:	50                   	push   %eax
405665:	ff 75 08             	push   0x8(%ebp)
405668:	6a 01                	push   $0x1
40566a:	57                   	push   %edi
40566b:	6a 09                	push   $0x9
40566d:	ff 75 0c             	push   0xc(%ebp)
405670:	ff 15 a0 70 41 00    	call   *0x4170a0
405676:	85 c0                	test   %eax,%eax
405678:	0f 85 ee fe ff ff    	jne    0x40556c
40567e:	e9 42 ff ff ff       	jmp    0x4055c5
405683:	55                   	push   %ebp
405684:	8b ec                	mov    %esp,%ebp
405686:	8b 45 0c             	mov    0xc(%ebp),%eax
405689:	ff 30                	push   (%eax)
40568b:	ff 70 04             	push   0x4(%eax)
40568e:	8d 45 0c             	lea    0xc(%ebp),%eax
405691:	50                   	push   %eax
405692:	6a 01                	push   $0x1
405694:	8d 45 08             	lea    0x8(%ebp),%eax
405697:	50                   	push   %eax
405698:	6a 01                	push   $0x1
40569a:	6a 00                	push   $0x0
40569c:	e8 1b 53 00 00       	call   0x40a9bc
4056a1:	0f bf 4d 0c          	movswl 0xc(%ebp),%ecx
4056a5:	83 c4 1c             	add    $0x1c,%esp
4056a8:	f7 d8                	neg    %eax
4056aa:	1b c0                	sbb    %eax,%eax
4056ac:	23 c1                	and    %ecx,%eax
4056ae:	5d                   	pop    %ebp
4056af:	c3                   	ret
4056b0:	55                   	push   %ebp
4056b1:	8b ec                	mov    %esp,%ebp
4056b3:	8b 45 14             	mov    0x14(%ebp),%eax
4056b6:	ff 30                	push   (%eax)
4056b8:	ff 70 04             	push   0x4(%eax)
4056bb:	8b 45 0c             	mov    0xc(%ebp),%eax
4056be:	ff 75 10             	push   0x10(%ebp)
4056c1:	2b 45 08             	sub    0x8(%ebp),%eax
4056c4:	d1 f8                	sar    $1,%eax
4056c6:	50                   	push   %eax
4056c7:	ff 75 08             	push   0x8(%ebp)
4056ca:	6a 01                	push   $0x1
4056cc:	6a 00                	push   $0x0
4056ce:	e8 e9 52 00 00       	call   0x40a9bc
4056d3:	8b 45 0c             	mov    0xc(%ebp),%eax
4056d6:	83 c4 1c             	add    $0x1c,%esp
4056d9:	5d                   	pop    %ebp
4056da:	c3                   	ret
4056db:	55                   	push   %ebp
4056dc:	8b ec                	mov    %esp,%ebp
4056de:	51                   	push   %ecx
4056df:	57                   	push   %edi
4056e0:	8b 7d 08             	mov    0x8(%ebp),%edi
4056e3:	66 81 ff ff ff       	cmp    $0xffff,%di
4056e8:	0f b7 c7             	movzwl %di,%eax
4056eb:	89 45 fc             	mov    %eax,-0x4(%ebp)
4056ee:	74 4c                	je     0x40573c
4056f0:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4056f3:	56                   	push   %esi
4056f4:	8b 31                	mov    (%ecx),%esi
4056f6:	85 f6                	test   %esi,%esi
4056f8:	ba 00 01 00 00       	mov    $0x100,%edx
4056fd:	75 16                	jne    0x405715
4056ff:	66 3b fa             	cmp    %dx,%di
405702:	73 11                	jae    0x405715
405704:	8d 4f bf             	lea    -0x41(%edi),%ecx
405707:	66 83 f9 19          	cmp    $0x19,%cx
40570b:	77 2e                	ja     0x40573b
40570d:	83 c7 20             	add    $0x20,%edi
405710:	0f b7 c7             	movzwl %di,%eax
405713:	eb 26                	jmp    0x40573b
405715:	ff 71 04             	push   0x4(%ecx)
405718:	8d 45 fc             	lea    -0x4(%ebp),%eax
40571b:	6a 01                	push   $0x1
40571d:	50                   	push   %eax
40571e:	6a 01                	push   $0x1
405720:	8d 45 08             	lea    0x8(%ebp),%eax
405723:	50                   	push   %eax
405724:	52                   	push   %edx
405725:	56                   	push   %esi
405726:	6a 00                	push   $0x0
405728:	e8 2e 55 00 00       	call   0x40ac5b
40572d:	83 c4 20             	add    $0x20,%esp
405730:	85 c0                	test   %eax,%eax
405732:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
405736:	74 03                	je     0x40573b
405738:	8b 45 fc             	mov    -0x4(%ebp),%eax
40573b:	5e                   	pop    %esi
40573c:	5f                   	pop    %edi
40573d:	c9                   	leave
40573e:	c3                   	ret
40573f:	55                   	push   %ebp
405740:	8b ec                	mov    %esp,%ebp
405742:	51                   	push   %ecx
405743:	56                   	push   %esi
405744:	8b 75 08             	mov    0x8(%ebp),%esi
405747:	66 81 fe ff ff       	cmp    $0xffff,%si
40574c:	0f b7 c6             	movzwl %si,%eax
40574f:	89 45 fc             	mov    %eax,-0x4(%ebp)
405752:	74 4b                	je     0x40579f
405754:	8b 4d 0c             	mov    0xc(%ebp),%ecx
405757:	8b 11                	mov    (%ecx),%edx
405759:	85 d2                	test   %edx,%edx
40575b:	75 18                	jne    0x405775
40575d:	66 81 fe 00 01       	cmp    $0x100,%si
405762:	73 11                	jae    0x405775
405764:	8d 4e 9f             	lea    -0x61(%esi),%ecx
405767:	66 83 f9 19          	cmp    $0x19,%cx
40576b:	77 32                	ja     0x40579f
40576d:	83 c6 e0             	add    $0xffffffe0,%esi
405770:	0f b7 c6             	movzwl %si,%eax
405773:	eb 2a                	jmp    0x40579f
405775:	ff 71 04             	push   0x4(%ecx)
405778:	8d 45 fc             	lea    -0x4(%ebp),%eax
40577b:	6a 01                	push   $0x1
40577d:	50                   	push   %eax
40577e:	6a 01                	push   $0x1
405780:	8d 45 08             	lea    0x8(%ebp),%eax
405783:	50                   	push   %eax
405784:	68 00 02 00 00       	push   $0x200
405789:	52                   	push   %edx
40578a:	6a 00                	push   $0x0
40578c:	e8 ca 54 00 00       	call   0x40ac5b
405791:	83 c4 20             	add    $0x20,%esp
405794:	85 c0                	test   %eax,%eax
405796:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
40579a:	74 03                	je     0x40579f
40579c:	8b 45 fc             	mov    -0x4(%ebp),%eax
40579f:	5e                   	pop    %esi
4057a0:	c9                   	leave
4057a1:	c3                   	ret
4057a2:	cc                   	int3
4057a3:	cc                   	int3
4057a4:	cc                   	int3
4057a5:	cc                   	int3
4057a6:	cc                   	int3
4057a7:	cc                   	int3
4057a8:	cc                   	int3
4057a9:	cc                   	int3
4057aa:	cc                   	int3
4057ab:	cc                   	int3
4057ac:	cc                   	int3
4057ad:	cc                   	int3
4057ae:	cc                   	int3
4057af:	cc                   	int3
4057b0:	8d 42 ff             	lea    -0x1(%edx),%eax
4057b3:	5b                   	pop    %ebx
4057b4:	c3                   	ret
4057b5:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
4057bc:	8d 64 24 00          	lea    0x0(%esp),%esp
4057c0:	33 c0                	xor    %eax,%eax
4057c2:	8a 44 24 08          	mov    0x8(%esp),%al
4057c6:	53                   	push   %ebx
4057c7:	8b d8                	mov    %eax,%ebx
4057c9:	c1 e0 08             	shl    $0x8,%eax
4057cc:	8b 54 24 08          	mov    0x8(%esp),%edx
4057d0:	f7 c2 03 00 00 00    	test   $0x3,%edx
4057d6:	74 15                	je     0x4057ed
4057d8:	8a 0a                	mov    (%edx),%cl
4057da:	83 c2 01             	add    $0x1,%edx
4057dd:	3a cb                	cmp    %bl,%cl
4057df:	74 cf                	je     0x4057b0
4057e1:	84 c9                	test   %cl,%cl
4057e3:	74 51                	je     0x405836
4057e5:	f7 c2 03 00 00 00    	test   $0x3,%edx
4057eb:	75 eb                	jne    0x4057d8
4057ed:	0b d8                	or     %eax,%ebx
4057ef:	57                   	push   %edi
4057f0:	8b c3                	mov    %ebx,%eax
4057f2:	c1 e3 10             	shl    $0x10,%ebx
4057f5:	56                   	push   %esi
4057f6:	0b d8                	or     %eax,%ebx
4057f8:	8b 0a                	mov    (%edx),%ecx
4057fa:	bf ff fe fe 7e       	mov    $0x7efefeff,%edi
4057ff:	8b c1                	mov    %ecx,%eax
405801:	8b f7                	mov    %edi,%esi
405803:	33 cb                	xor    %ebx,%ecx
405805:	03 f0                	add    %eax,%esi
405807:	03 f9                	add    %ecx,%edi
405809:	83 f1 ff             	xor    $0xffffffff,%ecx
40580c:	83 f0 ff             	xor    $0xffffffff,%eax
40580f:	33 cf                	xor    %edi,%ecx
405811:	33 c6                	xor    %esi,%eax
405813:	83 c2 04             	add    $0x4,%edx
405816:	81 e1 00 01 01 81    	and    $0x81010100,%ecx
40581c:	75 1c                	jne    0x40583a
40581e:	25 00 01 01 81       	and    $0x81010100,%eax
405823:	74 d3                	je     0x4057f8
405825:	25 00 01 01 01       	and    $0x1010100,%eax
40582a:	75 08                	jne    0x405834
40582c:	81 e6 00 00 00 80    	and    $0x80000000,%esi
405832:	75 c4                	jne    0x4057f8
405834:	5e                   	pop    %esi
405835:	5f                   	pop    %edi
405836:	5b                   	pop    %ebx
405837:	33 c0                	xor    %eax,%eax
405839:	c3                   	ret
40583a:	8b 42 fc             	mov    -0x4(%edx),%eax
40583d:	3a c3                	cmp    %bl,%al
40583f:	74 36                	je     0x405877
405841:	84 c0                	test   %al,%al
405843:	74 ef                	je     0x405834
405845:	3a e3                	cmp    %bl,%ah
405847:	74 27                	je     0x405870
405849:	84 e4                	test   %ah,%ah
40584b:	74 e7                	je     0x405834
40584d:	c1 e8 10             	shr    $0x10,%eax
405850:	3a c3                	cmp    %bl,%al
405852:	74 15                	je     0x405869
405854:	84 c0                	test   %al,%al
405856:	74 dc                	je     0x405834
405858:	3a e3                	cmp    %bl,%ah
40585a:	74 06                	je     0x405862
40585c:	84 e4                	test   %ah,%ah
40585e:	74 d4                	je     0x405834
405860:	eb 96                	jmp    0x4057f8
405862:	5e                   	pop    %esi
405863:	5f                   	pop    %edi
405864:	8d 42 ff             	lea    -0x1(%edx),%eax
405867:	5b                   	pop    %ebx
405868:	c3                   	ret