4054ad:	85 db                	test   %ebx,%ebx
4054af:	74 15                	je     0x4054c6
4054b1:	8b c3                	mov    %ebx,%eax
4054b3:	e8 34 fb ff ff       	call   0x404fec
4054b8:	8b d7                	mov    %edi,%edx
4054ba:	ff d6                	call   *%esi
4054bc:	84 c0                	test   %al,%al
4054be:	74 06                	je     0x4054c6
4054c0:	8b 1b                	mov    (%ebx),%ebx
4054c2:	85 db                	test   %ebx,%ebx
4054c4:	75 eb                	jne    0x4054b1
4054c6:	5f                   	pop    %edi
4054c7:	5e                   	pop    %esi
4054c8:	5b                   	pop    %ebx
4054c9:	c3                   	ret
4054ca:	8b c0                	mov    %eax,%eax
4054cc:	e8 0b 00 00 00       	call   0x4054dc
4054d1:	c3                   	ret
4054d2:	8b c0                	mov    %eax,%eax
4054d4:	e8 23 00 00 00       	call   0x4054fc
4054d9:	c3                   	ret
4054da:	8b c0                	mov    %eax,%eax
4054dc:	53                   	push   %ebx
4054dd:	8b d8                	mov    %eax,%ebx
4054df:	b8 08 00 00 00       	mov    $0x8,%eax
4054e4:	e8 d3 d1 ff ff       	call   0x4026bc
4054e9:	8b 15 38 30 46 00    	mov    0x463038,%edx
4054ef:	89 10                	mov    %edx,(%eax)
4054f1:	89 58 04             	mov    %ebx,0x4(%eax)
4054f4:	a3 38 30 46 00       	mov    %eax,0x463038
4054f9:	5b                   	pop    %ebx
4054fa:	c3                   	ret
4054fb:	90                   	nop
4054fc:	53                   	push   %ebx
4054fd:	56                   	push   %esi
4054fe:	8b 35 38 30 46 00    	mov    0x463038,%esi
405504:	85 f6                	test   %esi,%esi
405506:	74 22                	je     0x40552a
405508:	8b 56 04             	mov    0x4(%esi),%edx
40550b:	3b d0                	cmp    %eax,%edx
40550d:	75 1b                	jne    0x40552a
40550f:	a1 38 30 46 00       	mov    0x463038,%eax
405514:	8b 00                	mov    (%eax),%eax
405516:	a3 38 30 46 00       	mov    %eax,0x463038
40551b:	ba 08 00 00 00       	mov    $0x8,%edx
405520:	8b c6                	mov    %esi,%eax
405522:	e8 b5 d1 ff ff       	call   0x4026dc
405527:	5e                   	pop    %esi
405528:	5b                   	pop    %ebx
405529:	c3                   	ret
40552a:	8b d6                	mov    %esi,%edx
40552c:	85 d2                	test   %edx,%edx
40552e:	74 27                	je     0x405557
405530:	8b 0a                	mov    (%edx),%ecx
405532:	85 c9                	test   %ecx,%ecx
405534:	74 1b                	je     0x405551
405536:	8b 59 04             	mov    0x4(%ecx),%ebx
405539:	3b d8                	cmp    %eax,%ebx
40553b:	75 14                	jne    0x405551
40553d:	8b f1                	mov    %ecx,%esi
40553f:	8b 01                	mov    (%ecx),%eax
405541:	89 02                	mov    %eax,(%edx)
405543:	ba 08 00 00 00       	mov    $0x8,%edx
405548:	8b c6                	mov    %esi,%eax
40554a:	e8 8d d1 ff ff       	call   0x4026dc
40554f:	eb 06                	jmp    0x405557
405551:	8b 12                	mov    (%edx),%edx
405553:	85 d2                	test   %edx,%edx
405555:	75 d9                	jne    0x405530
405557:	5e                   	pop    %esi
405558:	5b                   	pop    %ebx
405559:	c3                   	ret
40555a:	8b c0                	mov    %eax,%eax
40555c:	55                   	push   %ebp
40555d:	8b ec                	mov    %esp,%ebp
40555f:	83 c4 f8             	add    $0xfffffff8,%esp
405562:	53                   	push   %ebx
405563:	56                   	push   %esi
405564:	57                   	push   %edi
405565:	89 45 fc             	mov    %eax,-0x4(%ebp)
405568:	a1 38 30 46 00       	mov    0x463038,%eax
40556d:	89 45 f8             	mov    %eax,-0x8(%ebp)
405570:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
405574:	74 39                	je     0x4055af
405576:	33 c0                	xor    %eax,%eax
405578:	55                   	push   %ebp
405579:	68 97 55 40 00       	push   $0x405597
40557e:	64 ff 30             	push   %fs:(%eax)
405581:	64 89 20             	mov    %esp,%fs:(%eax)
405584:	8b 5d f8             	mov    -0x8(%ebp),%ebx
405587:	8b 45 fc             	mov    -0x4(%ebp),%eax
40558a:	ff 53 04             	call   *0x4(%ebx)
40558d:	33 c0                	xor    %eax,%eax
40558f:	5a                   	pop    %edx
405590:	59                   	pop    %ecx
405591:	59                   	pop    %ecx
405592:	64 89 10             	mov    %edx,%fs:(%eax)
405595:	eb 0a                	jmp    0x4055a1
405597:	e9 4c e1 ff ff       	jmp    0x4036e8
40559c:	e8 af e4 ff ff       	call   0x403a50
4055a1:	8b 45 f8             	mov    -0x8(%ebp),%eax
4055a4:	8b 00                	mov    (%eax),%eax
4055a6:	89 45 f8             	mov    %eax,-0x8(%ebp)
4055a9:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
4055ad:	75 c7                	jne    0x405576
4055af:	5f                   	pop    %edi
4055b0:	5e                   	pop    %esi
4055b1:	5b                   	pop    %ebx
4055b2:	59                   	pop    %ecx
4055b3:	59                   	pop    %ecx
4055b4:	5d                   	pop    %ebp
4055b5:	c3                   	ret
4055b6:	8b c0                	mov    %eax,%eax
4055b8:	8b 15 34 30 46 00    	mov    0x463034,%edx
4055be:	89 10                	mov    %edx,(%eax)
4055c0:	a3 34 30 46 00       	mov    %eax,0x463034
4055c5:	c3                   	ret
4055c6:	8b c0                	mov    %eax,%eax
4055c8:	55                   	push   %ebp
4055c9:	8b ec                	mov    %esp,%ebp
4055cb:	51                   	push   %ecx
4055cc:	89 45 fc             	mov    %eax,-0x4(%ebp)
4055cf:	33 d2                	xor    %edx,%edx
4055d1:	55                   	push   %ebp
4055d2:	68 2c 56 40 00       	push   $0x40562c
4055d7:	64 ff 32             	push   %fs:(%edx)
4055da:	64 89 22             	mov    %esp,%fs:(%edx)
4055dd:	8b 45 fc             	mov    -0x4(%ebp),%eax
4055e0:	8b 40 04             	mov    0x4(%eax),%eax
4055e3:	e8 74 ff ff ff       	call   0x40555c
4055e8:	33 c0                	xor    %eax,%eax
4055ea:	5a                   	pop    %edx
4055eb:	59                   	pop    %ecx
4055ec:	59                   	pop    %ecx
4055ed:	64 89 10             	mov    %edx,%fs:(%eax)
4055f0:	68 33 56 40 00       	push   $0x405633
4055f5:	8b 45 fc             	mov    -0x4(%ebp),%eax
4055f8:	3b 05 34 30 46 00    	cmp    0x463034,%eax
4055fe:	75 0c                	jne    0x40560c
405600:	8b 45 fc             	mov    -0x4(%ebp),%eax
405603:	8b 00                	mov    (%eax),%eax
405605:	a3 34 30 46 00       	mov    %eax,0x463034
40560a:	eb 1f                	jmp    0x40562b
40560c:	a1 34 30 46 00       	mov    0x463034,%eax
405611:	85 c0                	test   %eax,%eax
405613:	74 16                	je     0x40562b
405615:	8b 10                	mov    (%eax),%edx
405617:	3b 55 fc             	cmp    -0x4(%ebp),%edx
40561a:	75 09                	jne    0x405625
40561c:	8b 55 fc             	mov    -0x4(%ebp),%edx
40561f:	8b 12                	mov    (%edx),%edx
405621:	89 10                	mov    %edx,(%eax)
405623:	eb 06                	jmp    0x40562b
405625:	8b 00                	mov    (%eax),%eax
405627:	85 c0                	test   %eax,%eax
405629:	75 ea                	jne    0x405615
40562b:	c3                   	ret
40562c:	e9 6b e3 ff ff       	jmp    0x40399c
405631:	eb c2                	jmp    0x4055f5
405633:	59                   	pop    %ecx
405634:	5d                   	pop    %ebp
405635:	c3                   	ret
405636:	8b c0                	mov    %eax,%eax
405638:	8b 10                	mov    (%eax),%edx
40563a:	85 d2                	test   %edx,%edx
40563c:	74 0e                	je     0x40564c
40563e:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
405644:	50                   	push   %eax
405645:	52                   	push   %edx
405646:	8b 02                	mov    (%edx),%eax
405648:	ff 50 08             	call   *0x8(%eax)
40564b:	58                   	pop    %eax
40564c:	c3                   	ret
40564d:	8d 40 00             	lea    0x0(%eax),%eax
405650:	85 d2                	test   %edx,%edx
405652:	74 19                	je     0x40566d
405654:	52                   	push   %edx
405655:	50                   	push   %eax
405656:	8b 02                	mov    (%edx),%eax
405658:	52                   	push   %edx
405659:	ff 50 04             	call   *0x4(%eax)
40565c:	58                   	pop    %eax
40565d:	8b 08                	mov    (%eax),%ecx
40565f:	8f 00                	pop    (%eax)
405661:	85 c9                	test   %ecx,%ecx
405663:	75 01                	jne    0x405666
405665:	c3                   	ret
405666:	8b 01                	mov    (%ecx),%eax
405668:	51                   	push   %ecx
405669:	ff 50 08             	call   *0x8(%eax)
40566c:	c3                   	ret
40566d:	8b 08                	mov    (%eax),%ecx
40566f:	85 c9                	test   %ecx,%ecx
405671:	89 10                	mov    %edx,(%eax)
405673:	74 06                	je     0x40567b
405675:	8b 01                	mov    (%ecx),%eax
405677:	51                   	push   %ecx
405678:	ff 50 08             	call   *0x8(%eax)
40567b:	c3                   	ret
40567c:	85 d2                	test   %edx,%edx
40567e:	0f 84 b4 ff ff ff    	je     0x405638
405684:	57                   	push   %edi
405685:	89 c7                	mov    %eax,%edi
405687:	6a 00                	push   $0x0
405689:	54                   	push   %esp
40568a:	51                   	push   %ecx
40568b:	52                   	push   %edx
40568c:	8b 02                	mov    (%edx),%eax
40568e:	ff 10                	call   *(%eax)
405690:	85 c0                	test   %eax,%eax
405692:	74 07                	je     0x40569b
405694:	b0 17                	mov    $0x17,%al
405696:	e9 7d d1 ff ff       	jmp    0x402818
40569b:	8b 07                	mov    (%edi),%eax
40569d:	85 c0                	test   %eax,%eax
40569f:	74 06                	je     0x4056a7
4056a1:	50                   	push   %eax
4056a2:	8b 00                	mov    (%eax),%eax
4056a4:	ff 50 08             	call   *0x8(%eax)
4056a7:	58                   	pop    %eax
4056a8:	89 07                	mov    %eax,(%edi)
4056aa:	5f                   	pop    %edi
4056ab:	c3                   	ret
4056ac:	85 c0                	test   %eax,%eax
4056ae:	74 06                	je     0x4056b6
4056b0:	50                   	push   %eax
4056b1:	8b 00                	mov    (%eax),%eax
4056b3:	ff 50 04             	call   *0x4(%eax)
4056b6:	c3                   	ret
4056b7:	90                   	nop
4056b8:	83 c0 04             	add    $0x4,%eax
4056bb:	50                   	push   %eax
4056bc:	e8 33 bc ff ff       	call   0x4012f4
4056c1:	c3                   	ret
4056c2:	8b c0                	mov    %eax,%eax
4056c4:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
4056c8:	74 07                	je     0x4056d1
4056ca:	b0 02                	mov    $0x2,%al
4056cc:	e8 47 d1 ff ff       	call   0x402818
4056d1:	c3                   	ret
4056d2:	8b c0                	mov    %eax,%eax
4056d4:	e8 07 db ff ff       	call   0x4031e0
4056d9:	c7 40 04 01 00 00 00 	movl   $0x1,0x4(%eax)
4056e0:	c3                   	ret
4056e1:	8d 40 00             	lea    0x0(%eax),%eax
4056e4:	55                   	push   %ebp
4056e5:	8b ec                	mov    %esp,%ebp
4056e7:	53                   	push   %ebx
4056e8:	8b 5d 08             	mov    0x8(%ebp),%ebx
4056eb:	8b 4d 10             	mov    0x10(%ebp),%ecx
4056ee:	8b 55 0c             	mov    0xc(%ebp),%edx
4056f1:	8b c3                	mov    %ebx,%eax
4056f3:	e8 04 dc ff ff       	call   0x4032fc
4056f8:	84 c0                	test   %al,%al
4056fa:	74 04                	je     0x405700
4056fc:	33 c0                	xor    %eax,%eax
4056fe:	eb 05                	jmp    0x405705
405700:	b8 02 40 00 80       	mov    $0x80004002,%eax
405705:	5b                   	pop    %ebx
405706:	5d                   	pop    %ebp
405707:	c2 0c 00             	ret    $0xc
40570a:	8b c0                	mov    %eax,%eax
40570c:	55                   	push   %ebp
40570d:	8b ec                	mov    %esp,%ebp
40570f:	8b 45 08             	mov    0x8(%ebp),%eax
405712:	83 c0 04             	add    $0x4,%eax
405715:	50                   	push   %eax
405716:	e8 d1 bb ff ff       	call   0x4012ec
40571b:	5d                   	pop    %ebp
40571c:	c2 04 00             	ret    $0x4
40571f:	90                   	nop
405720:	55                   	push   %ebp
405721:	8b ec                	mov    %esp,%ebp
405723:	53                   	push   %ebx
405724:	56                   	push   %esi
405725:	8b 5d 08             	mov    0x8(%ebp),%ebx
405728:	8d 43 04             	lea    0x4(%ebx),%eax
40572b:	50                   	push   %eax
40572c:	e8 c3 bb ff ff       	call   0x4012f4
405731:	8b f0                	mov    %eax,%esi
405733:	85 f6                	test   %esi,%esi
405735:	75 09                	jne    0x405740
405737:	b2 01                	mov    $0x1,%dl
405739:	8b c3                	mov    %ebx,%eax
40573b:	8b 08                	mov    (%eax),%ecx
40573d:	ff 51 fc             	call   *-0x4(%ecx)
405740:	8b c6                	mov    %esi,%eax
405742:	5e                   	pop    %esi
405743:	5b                   	pop    %ebx
405744:	5d                   	pop    %ebp
405745:	c2 04 00             	ret    $0x4
405748:	55                   	push   %ebp
405749:	8b ec                	mov    %esp,%ebp
40574b:	83 c4 f8             	add    $0xfffffff8,%esp
40574e:	53                   	push   %ebx
40574f:	56                   	push   %esi
405750:	89 4d f8             	mov    %ecx,-0x8(%ebp)
405753:	89 55 fc             	mov    %edx,-0x4(%ebp)
405756:	33 d2                	xor    %edx,%edx
405758:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
40575c:	0f 84 b8 00 00 00    	je     0x40581a
405762:	33 f6                	xor    %esi,%esi
405764:	33 c9                	xor    %ecx,%ecx
405766:	85 c0                	test   %eax,%eax
405768:	0f 84 87 00 00 00    	je     0x4057f5
40576e:	eb 6c                	jmp    0x4057dc
405770:	8b 55 f8             	mov    -0x8(%ebp),%edx
405773:	0f b7 14 4a          	movzwl (%edx,%ecx,2),%edx
405777:	41                   	inc    %ecx
405778:	83 fa 7f             	cmp    $0x7f,%edx
40577b:	77 06                	ja     0x405783
40577d:	88 14 30             	mov    %dl,(%eax,%esi,1)
405780:	46                   	inc    %esi
405781:	eb 59                	jmp    0x4057dc
405783:	81 fa ff 07 00 00    	cmp    $0x7ff,%edx
405789:	76 31                	jbe    0x4057bc
40578b:	8d 5e 03             	lea    0x3(%esi),%ebx
40578e:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
405791:	77 53                	ja     0x4057e6
405793:	8b da                	mov    %edx,%ebx
405795:	c1 eb 0c             	shr    $0xc,%ebx
405798:	80 cb e0             	or     $0xe0,%bl
40579b:	88 1c 30             	mov    %bl,(%eax,%esi,1)
40579e:	8b da                	mov    %edx,%ebx
4057a0:	c1 eb 06             	shr    $0x6,%ebx
4057a3:	80 e3 3f             	and    $0x3f,%bl
4057a6:	80 cb 80             	or     $0x80,%bl
4057a9:	88 5c 30 01          	mov    %bl,0x1(%eax,%esi,1)
4057ad:	80 e2 3f             	and    $0x3f,%dl
4057b0:	80 ca 80             	or     $0x80,%dl
4057b3:	88 54 30 02          	mov    %dl,0x2(%eax,%esi,1)
4057b7:	83 c6 03             	add    $0x3,%esi
4057ba:	eb 20                	jmp    0x4057dc
4057bc:	8d 5e 02             	lea    0x2(%esi),%ebx
4057bf:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
4057c2:	77 22                	ja     0x4057e6
4057c4:	8b da                	mov    %edx,%ebx
4057c6:	c1 eb 06             	shr    $0x6,%ebx
4057c9:	80 cb c0             	or     $0xc0,%bl
4057cc:	88 1c 30             	mov    %bl,(%eax,%esi,1)
4057cf:	80 e2 3f             	and    $0x3f,%dl
4057d2:	80 ca 80             	or     $0x80,%dl
4057d5:	88 54 30 01          	mov    %dl,0x1(%eax,%esi,1)
4057d9:	83 c6 02             	add    $0x2,%esi
4057dc:	3b 4d 08             	cmp    0x8(%ebp),%ecx
4057df:	73 05                	jae    0x4057e6
4057e1:	3b 75 fc             	cmp    -0x4(%ebp),%esi
4057e4:	72 8a                	jb     0x405770
4057e6:	3b 75 fc             	cmp    -0x4(%ebp),%esi
4057e9:	72 04                	jb     0x4057ef