45f456:	83 f9 23             	cmp    $0x23,%ecx
45f459:	72 e5                	jb     0x45f440
45f45b:	33 c0                	xor    %eax,%eax
45f45d:	33 ff                	xor    %edi,%edi
45f45f:	85 c0                	test   %eax,%eax
45f461:	74 30                	je     0x45f493
45f463:	3b c3                	cmp    %ebx,%eax
45f465:	77 2c                	ja     0x45f493
45f467:	85 ff                	test   %edi,%edi
45f469:	0f 84 bc 00 00 00    	je     0x45f52b
45f46f:	83 e7 07             	and    $0x7,%edi
45f472:	83 ff 05             	cmp    $0x5,%edi
45f475:	77 1c                	ja     0x45f493
45f477:	ff 24 bd 48 f5 45 00 	jmp    *0x45f548(,%edi,4)
45f47e:	8d 4d f4             	lea    -0xc(%ebp),%ecx
45f481:	51                   	push   %ecx
45f482:	50                   	push   %eax
45f483:	e8 f8 16 ff ff       	call   0x450b80
45f488:	83 c4 08             	add    $0x8,%esp
45f48b:	85 c0                	test   %eax,%eax
45f48d:	0f 85 a4 00 00 00    	jne    0x45f537
45f493:	5f                   	pop    %edi
45f494:	5e                   	pop    %esi
45f495:	32 c0                	xor    %al,%al
45f497:	5b                   	pop    %ebx
45f498:	8b e5                	mov    %ebp,%esp
45f49a:	5d                   	pop    %ebp
45f49b:	c3                   	ret
45f49c:	83 c0 08             	add    $0x8,%eax
45f49f:	e9 93 00 00 00       	jmp    0x45f537
45f4a4:	0f b6 38             	movzbl (%eax),%edi
45f4a7:	81 ff 80 00 00 00    	cmp    $0x80,%edi
45f4ad:	73 03                	jae    0x45f4b2
45f4af:	40                   	inc    %eax
45f4b0:	eb 5a                	jmp    0x45f50c
45f4b2:	b9 07 00 00 00       	mov    $0x7,%ecx
45f4b7:	8d 58 01             	lea    0x1(%eax),%ebx
45f4ba:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
45f4c0:	0f b6 33             	movzbl (%ebx),%esi
45f4c3:	43                   	inc    %ebx
45f4c4:	8d 56 ff             	lea    -0x1(%esi),%edx
45f4c7:	d3 e2                	shl    %cl,%edx
45f4c9:	03 fa                	add    %edx,%edi
45f4cb:	8b d7                	mov    %edi,%edx
45f4cd:	81 fe 80 00 00 00    	cmp    $0x80,%esi
45f4d3:	72 32                	jb     0x45f507
45f4d5:	83 c1 07             	add    $0x7,%ecx
45f4d8:	83 f9 1c             	cmp    $0x1c,%ecx
45f4db:	72 e3                	jb     0x45f4c0
45f4dd:	0f b6 78 04          	movzbl 0x4(%eax),%edi
45f4e1:	83 ff 08             	cmp    $0x8,%edi
45f4e4:	72 06                	jb     0x45f4ec
45f4e6:	33 c0                	xor    %eax,%eax
45f4e8:	33 ff                	xor    %edi,%edi
45f4ea:	eb 1d                	jmp    0x45f509
45f4ec:	83 c7 0f             	add    $0xf,%edi
45f4ef:	c1 e7 1c             	shl    $0x1c,%edi
45f4f2:	03 fa                	add    %edx,%edi
45f4f4:	81 ff ef ff ff 7f    	cmp    $0x7fffffef,%edi
45f4fa:	76 06                	jbe    0x45f502
45f4fc:	33 c0                	xor    %eax,%eax
45f4fe:	33 ff                	xor    %edi,%edi
45f500:	eb 07                	jmp    0x45f509
45f502:	83 c0 05             	add    $0x5,%eax
45f505:	eb 02                	jmp    0x45f509
45f507:	8b c3                	mov    %ebx,%eax
45f509:	8b 5d fc             	mov    -0x4(%ebp),%ebx
45f50c:	85 c0                	test   %eax,%eax
45f50e:	74 83                	je     0x45f493
45f510:	8b cb                	mov    %ebx,%ecx
45f512:	2b c8                	sub    %eax,%ecx
45f514:	3b f9                	cmp    %ecx,%edi
45f516:	0f 8f 77 ff ff ff    	jg     0x45f493
45f51c:	03 c7                	add    %edi,%eax
45f51e:	eb 17                	jmp    0x45f537
45f520:	ff 45 10             	incl   0x10(%ebp)
45f523:	eb 12                	jmp    0x45f537
45f525:	83 6d 10 01          	subl   $0x1,0x10(%ebp)
45f529:	79 0c                	jns    0x45f537
45f52b:	5f                   	pop    %edi
45f52c:	5e                   	pop    %esi
45f52d:	b0 01                	mov    $0x1,%al
45f52f:	5b                   	pop    %ebx
45f530:	8b e5                	mov    %ebp,%esp
45f532:	5d                   	pop    %ebp
45f533:	c3                   	ret
45f534:	83 c0 04             	add    $0x4,%eax
45f537:	3b c3                	cmp    %ebx,%eax
45f539:	0f 82 d1 fe ff ff    	jb     0x45f410
45f53f:	5f                   	pop    %edi
45f540:	5e                   	pop    %esi
45f541:	32 c0                	xor    %al,%al
45f543:	5b                   	pop    %ebx
45f544:	8b e5                	mov    %ebp,%esp
45f546:	5d                   	pop    %ebp
45f547:	c3                   	ret
45f548:	7e f4                	jle    0x45f53e
45f54a:	45                   	inc    %ebp
45f54b:	00 9c f4 45 00 a4 f4 	add    %bl,-0xb5bffbb(%esp,%esi,8)
45f552:	45                   	inc    %ebp
45f553:	00 20                	add    %ah,(%eax)
45f555:	f5                   	cmc
45f556:	45                   	inc    %ebp
45f557:	00 25 f5 45 00 34    	add    %ah,0x340045f5
45f55d:	f5                   	cmc
45f55e:	45                   	inc    %ebp
45f55f:	00 55 8b             	add    %dl,-0x75(%ebp)
45f562:	ec                   	in     (%dx),%al
45f563:	83 ec 08             	sub    $0x8,%esp
45f566:	8b 45 0c             	mov    0xc(%ebp),%eax
45f569:	53                   	push   %ebx
45f56a:	56                   	push   %esi
45f56b:	8b 75 10             	mov    0x10(%ebp),%esi
45f56e:	8b d9                	mov    %ecx,%ebx
45f570:	89 45 fc             	mov    %eax,-0x4(%ebp)
45f573:	8d 45 fc             	lea    -0x4(%ebp),%eax
45f576:	57                   	push   %edi
45f577:	50                   	push   %eax
45f578:	e8 63 02 00 00       	call   0x45f7e0
45f57d:	8b 55 fc             	mov    -0x4(%ebp),%edx
45f580:	83 c4 04             	add    $0x4,%esp
45f583:	8b f8                	mov    %eax,%edi
45f585:	85 d2                	test   %edx,%edx
45f587:	0f 84 8b 01 00 00    	je     0x45f718
45f58d:	8b 03                	mov    (%ebx),%eax
45f58f:	85 c0                	test   %eax,%eax
45f591:	0f 85 88 00 00 00    	jne    0x45f61f
45f597:	8b 4e 04             	mov    0x4(%esi),%ecx
45f59a:	2b ca                	sub    %edx,%ecx
45f59c:	83 c1 10             	add    $0x10,%ecx
45f59f:	3b f9                	cmp    %ecx,%edi
45f5a1:	7e 5c                	jle    0x45f5ff
45f5a3:	39 46 08             	cmp    %eax,0x8(%esi)
45f5a6:	0f 84 6c 01 00 00    	je     0x45f718
45f5ac:	0f 1f 40 00          	nopl   0x0(%eax)
45f5b0:	2b f9                	sub    %ecx,%edi
45f5b2:	83 7e 10 10          	cmpl   $0x10,0x10(%esi)
45f5b6:	0f 8e 5c 01 00 00    	jle    0x45f718
45f5bc:	6a ff                	push   $0xffffffff
45f5be:	6a 00                	push   $0x0
45f5c0:	8b ce                	mov    %esi,%ecx
45f5c2:	e8 99 fc ff ff       	call   0x45f260
45f5c7:	8b 4e 04             	mov    0x4(%esi),%ecx
45f5ca:	8b d0                	mov    %eax,%edx
45f5cc:	85 d2                	test   %edx,%edx
45f5ce:	74 3b                	je     0x45f60b
45f5d0:	2b c1                	sub    %ecx,%eax
45f5d2:	01 46 10             	add    %eax,0x10(%esi)
45f5d5:	b8 00 00 00 00       	mov    $0x0,%eax
45f5da:	0f 48 46 10          	cmovs  0x10(%esi),%eax
45f5de:	83 c2 10             	add    $0x10,%edx
45f5e1:	03 c1                	add    %ecx,%eax
45f5e3:	2b ca                	sub    %edx,%ecx
45f5e5:	83 c1 10             	add    $0x10,%ecx
45f5e8:	89 06                	mov    %eax,(%esi)
45f5ea:	3b f9                	cmp    %ecx,%edi
45f5ec:	7e 11                	jle    0x45f5ff
45f5ee:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
45f5f2:	75 bc                	jne    0x45f5b0
45f5f4:	5f                   	pop    %edi
45f5f5:	5e                   	pop    %esi
45f5f6:	33 c0                	xor    %eax,%eax
45f5f8:	5b                   	pop    %ebx
45f5f9:	8b e5                	mov    %ebp,%esp
45f5fb:	5d                   	pop    %ebp
45f5fc:	c2 0c 00             	ret    $0xc
45f5ff:	8d 04 3a             	lea    (%edx,%edi,1),%eax
45f602:	5f                   	pop    %edi
45f603:	5e                   	pop    %esi
45f604:	5b                   	pop    %ebx
45f605:	8b e5                	mov    %ebp,%esp
45f607:	5d                   	pop    %ebp
45f608:	c2 0c 00             	ret    $0xc
45f60b:	c7 46 3c 01 00 00 00 	movl   $0x1,0x3c(%esi)
45f612:	33 c0                	xor    %eax,%eax
45f614:	5f                   	pop    %edi
45f615:	89 0e                	mov    %ecx,(%esi)
45f617:	5e                   	pop    %esi
45f618:	5b                   	pop    %ebx
45f619:	8b e5                	mov    %ebp,%esp
45f61b:	5d                   	pop    %ebp
45f61c:	c2 0c 00             	ret    $0xc
45f61f:	50                   	push   %eax
45f620:	8b 45 08             	mov    0x8(%ebp),%eax
45f623:	6a 00                	push   $0x0
45f625:	8d 04 c5 02 00 00 00 	lea    0x2(,%eax,8),%eax
45f62c:	50                   	push   %eax
45f62d:	e8 3e 05 00 00       	call   0x45fb70
45f632:	ff 33                	push   (%ebx)
45f634:	8b c7                	mov    %edi,%eax
45f636:	99                   	cltd
45f637:	52                   	push   %edx
45f638:	50                   	push   %eax
45f639:	e8 32 05 00 00       	call   0x45fb70
45f63e:	8b 13                	mov    (%ebx),%edx
45f640:	83 c4 18             	add    $0x18,%esp
45f643:	8b 5e 04             	mov    0x4(%esi),%ebx
45f646:	8b c3                	mov    %ebx,%eax
45f648:	8b 4d fc             	mov    -0x4(%ebp),%ecx
45f64b:	2b c1                	sub    %ecx,%eax
45f64d:	83 c0 10             	add    $0x10,%eax
45f650:	89 55 f8             	mov    %edx,-0x8(%ebp)
45f653:	3b f8                	cmp    %eax,%edi
45f655:	7f 17                	jg     0x45f66e
45f657:	57                   	push   %edi
45f658:	51                   	push   %ecx
45f659:	8b ca                	mov    %edx,%ecx
45f65b:	e8 20 98 ff ff       	call   0x458e80
45f660:	8b 45 fc             	mov    -0x4(%ebp),%eax
45f663:	03 c7                	add    %edi,%eax
45f665:	5f                   	pop    %edi
45f666:	5e                   	pop    %esi
45f667:	5b                   	pop    %ebx
45f668:	8b e5                	mov    %ebp,%esp
45f66a:	5d                   	pop    %ebp
45f66b:	c2 0c 00             	ret    $0xc
45f66e:	8b c3                	mov    %ebx,%eax
45f670:	2b c1                	sub    %ecx,%eax
45f672:	03 46 10             	add    0x10(%esi),%eax
45f675:	3b f8                	cmp    %eax,%edi
45f677:	7f 20                	jg     0x45f699
45f679:	b9 80 f0 fa 02       	mov    $0x2faf080,%ecx
45f67e:	8b c7                	mov    %edi,%eax
45f680:	3b f9                	cmp    %ecx,%edi
45f682:	0f 4f c1             	cmovg  %ecx,%eax
45f685:	8b ca                	mov    %edx,%ecx
45f687:	03 42 10             	add    0x10(%edx),%eax
45f68a:	50                   	push   %eax
45f68b:	e8 50 b6 ff ff       	call   0x45ace0
45f690:	8b 5e 04             	mov    0x4(%esi),%ebx
45f693:	8b 4d fc             	mov    -0x4(%ebp),%ecx
45f696:	8b 55 f8             	mov    -0x8(%ebp),%edx
45f699:	2b d9                	sub    %ecx,%ebx
45f69b:	83 c3 10             	add    $0x10,%ebx
45f69e:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
45f6a2:	74 74                	je     0x45f718
45f6a4:	53                   	push   %ebx
45f6a5:	51                   	push   %ecx
45f6a6:	8b ca                	mov    %edx,%ecx
45f6a8:	e8 d3 97 ff ff       	call   0x458e80
45f6ad:	2b fb                	sub    %ebx,%edi
45f6af:	83 7e 10 10          	cmpl   $0x10,0x10(%esi)
45f6b3:	7e 63                	jle    0x45f718
45f6b5:	6a ff                	push   $0xffffffff
45f6b7:	6a 00                	push   $0x0
45f6b9:	8b ce                	mov    %esi,%ecx
45f6bb:	e8 a0 fb ff ff       	call   0x45f260
45f6c0:	8b 5e 04             	mov    0x4(%esi),%ebx
45f6c3:	8b d0                	mov    %eax,%edx
45f6c5:	85 d2                	test   %edx,%edx
45f6c7:	74 46                	je     0x45f70f
45f6c9:	8b ca                	mov    %edx,%ecx
45f6cb:	b8 00 00 00 00       	mov    $0x0,%eax
45f6d0:	2b cb                	sub    %ebx,%ecx
45f6d2:	01 4e 10             	add    %ecx,0x10(%esi)
45f6d5:	8d 4a 10             	lea    0x10(%edx),%ecx
45f6d8:	0f 48 46 10          	cmovs  0x10(%esi),%eax
45f6dc:	03 c3                	add    %ebx,%eax
45f6de:	2b d9                	sub    %ecx,%ebx
45f6e0:	83 c3 10             	add    $0x10,%ebx
45f6e3:	89 06                	mov    %eax,(%esi)
45f6e5:	89 4d fc             	mov    %ecx,-0x4(%ebp)
45f6e8:	3b fb                	cmp    %ebx,%edi
45f6ea:	7e 0b                	jle    0x45f6f7
45f6ec:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
45f6f0:	74 26                	je     0x45f718
45f6f2:	8b 55 f8             	mov    -0x8(%ebp),%edx
45f6f5:	eb ad                	jmp    0x45f6a4
45f6f7:	57                   	push   %edi
45f6f8:	51                   	push   %ecx
45f6f9:	8b 4d f8             	mov    -0x8(%ebp),%ecx
45f6fc:	e8 7f 97 ff ff       	call   0x458e80
45f701:	8b 45 fc             	mov    -0x4(%ebp),%eax
45f704:	03 c7                	add    %edi,%eax
45f706:	5f                   	pop    %edi
45f707:	5e                   	pop    %esi
45f708:	5b                   	pop    %ebx
45f709:	8b e5                	mov    %ebp,%esp
45f70b:	5d                   	pop    %ebp
45f70c:	c2 0c 00             	ret    $0xc
45f70f:	c7 46 3c 01 00 00 00 	movl   $0x1,0x3c(%esi)
45f716:	89 1e                	mov    %ebx,(%esi)
45f718:	5f                   	pop    %edi
45f719:	5e                   	pop    %esi
45f71a:	33 c0                	xor    %eax,%eax
45f71c:	5b                   	pop    %ebx
45f71d:	8b e5                	mov    %ebp,%esp
45f71f:	5d                   	pop    %ebp
45f720:	c2 0c 00             	ret    $0xc
45f723:	cc                   	int3
45f724:	cc                   	int3
45f725:	cc                   	int3
45f726:	cc                   	int3
45f727:	cc                   	int3
45f728:	cc                   	int3
45f729:	cc                   	int3
45f72a:	cc                   	int3
45f72b:	cc                   	int3
45f72c:	cc                   	int3
45f72d:	cc                   	int3
45f72e:	cc                   	int3
45f72f:	cc                   	int3
45f730:	55                   	push   %ebp
45f731:	8b ec                	mov    %esp,%ebp
45f733:	83 ec 08             	sub    $0x8,%esp
45f736:	8b 45 0c             	mov    0xc(%ebp),%eax
45f739:	53                   	push   %ebx
45f73a:	8b 5d 08             	mov    0x8(%ebp),%ebx
45f73d:	89 45 fc             	mov    %eax,-0x4(%ebp)
45f740:	8d 45 fc             	lea    -0x4(%ebp),%eax
45f743:	56                   	push   %esi
45f744:	50                   	push   %eax
45f745:	8b f1                	mov    %ecx,%esi
45f747:	e8 94 00 00 00       	call   0x45f7e0
45f74c:	8b 55 fc             	mov    -0x4(%ebp),%edx
45f74f:	83 c4 04             	add    $0x4,%esp
45f752:	85 d2                	test   %edx,%edx
45f754:	75 0a                	jne    0x45f760
45f756:	5e                   	pop    %esi
45f757:	33 c0                	xor    %eax,%eax
45f759:	5b                   	pop    %ebx
45f75a:	8b e5                	mov    %ebp,%esp
45f75c:	5d                   	pop    %ebp
45f75d:	c2 08 00             	ret    $0x8
45f760:	2b 46 04             	sub    0x4(%esi),%eax
45f763:	57                   	push   %edi
45f764:	8d 3c 10             	lea    (%eax,%edx,1),%edi
45f767:	33 c0                	xor    %eax,%eax
45f769:	85 ff                	test   %edi,%edi
45f76b:	89 7d fc             	mov    %edi,-0x4(%ebp)
45f76e:	0f 48 c7             	cmovs  %edi,%eax
45f771:	8d 7e 10             	lea    0x10(%esi),%edi
45f774:	03 46 04             	add    0x4(%esi),%eax
45f777:	83 46 44 ff          	addl   $0xffffffff,0x44(%esi)
45f77b:	89 06                	mov    %eax,(%esi)
45f77d:	8b 07                	mov    (%edi),%eax
45f77f:	89 45 f8             	mov    %eax,-0x8(%ebp)
45f782:	8b 45 fc             	mov    -0x4(%ebp),%eax
45f785:	89 07                	mov    %eax,(%edi)
45f787:	78 3f                	js     0x45f7c8
45f789:	8b 03                	mov    (%ebx),%eax
45f78b:	8b cb                	mov    %ebx,%ecx
45f78d:	56                   	push   %esi
45f78e:	52                   	push   %edx
45f78f:	ff 50 28             	call   *0x28(%eax)
45f792:	8b d0                	mov    %eax,%edx
45f794:	85 d2                	test   %edx,%edx
45f796:	74 30                	je     0x45f7c8
45f798:	ff 46 44             	incl   0x44(%esi)
45f79b:	83 7e 3c 00          	cmpl   $0x0,0x3c(%esi)