45f330:	75 0a                	jne    0x45f33c
45f332:	6a 01                	push   $0x1
45f334:	ff 76 08             	push   0x8(%esi)
45f337:	e8 2b ef ff ff       	call   0x45e267
45f33c:	33 c0                	xor    %eax,%eax
45f33e:	85 ff                	test   %edi,%edi
45f340:	0f 99 c0             	setns  %al
45f343:	5f                   	pop    %edi
45f344:	5e                   	pop    %esi
45f345:	5b                   	pop    %ebx
45f346:	5d                   	pop    %ebp
45f347:	c2 0c 00             	ret    $0xc
45f34a:	55                   	push   %ebp
45f34b:	8b ec                	mov    %esp,%ebp
45f34d:	53                   	push   %ebx
45f34e:	56                   	push   %esi
45f34f:	57                   	push   %edi
45f350:	8b 7d 10             	mov    0x10(%ebp),%edi
45f353:	6a 08                	push   $0x8
45f355:	0f b7 c7             	movzwl %di,%eax
45f358:	5b                   	pop    %ebx
45f359:	3b c3                	cmp    %ebx,%eax
45f35b:	74 60                	je     0x45f3bd
45f35d:	83 f8 1d             	cmp    $0x1d,%eax
45f360:	7e 0a                	jle    0x45f36c
45f362:	83 f8 1f             	cmp    $0x1f,%eax
45f365:	7e 56                	jle    0x45f3bd
45f367:	83 f8 48             	cmp    $0x48,%eax
45f36a:	74 51                	je     0x45f3bd
45f36c:	8b 5d 08             	mov    0x8(%ebp),%ebx
45f36f:	8b 75 0c             	mov    0xc(%ebp),%esi
45f372:	53                   	push   %ebx
45f373:	56                   	push   %esi
45f374:	ff 15 10 f4 48 00    	call   *0x48f410
45f37a:	85 c0                	test   %eax,%eax
45f37c:	79 58                	jns    0x45f3d6
45f37e:	66 83 ff 0c          	cmp    $0xc,%di
45f382:	75 52                	jne    0x45f3d6
45f384:	8b 7b 08             	mov    0x8(%ebx),%edi
45f387:	56                   	push   %esi
45f388:	0f b7 1f             	movzwl (%edi),%ebx
45f38b:	ff 15 5c f4 48 00    	call   *0x48f45c
45f391:	6a 08                	push   $0x8
45f393:	8b c3                	mov    %ebx,%eax
45f395:	59                   	pop    %ecx
45f396:	3b c1                	cmp    %ecx,%eax
45f398:	74 17                	je     0x45f3b1
45f39a:	83 f8 1d             	cmp    $0x1d,%eax
45f39d:	7e 0a                	jle    0x45f3a9
45f39f:	83 f8 1f             	cmp    $0x1f,%eax
45f3a2:	7e 0d                	jle    0x45f3b1
45f3a4:	83 f8 48             	cmp    $0x48,%eax
45f3a7:	74 08                	je     0x45f3b1
45f3a9:	66 89 1e             	mov    %bx,(%esi)
45f3ac:	8b 47 08             	mov    0x8(%edi),%eax
45f3af:	eb 22                	jmp    0x45f3d3
45f3b1:	53                   	push   %ebx
45f3b2:	57                   	push   %edi
45f3b3:	66 89 0e             	mov    %cx,(%esi)
45f3b6:	e8 21 ec ff ff       	call   0x45dfdc
45f3bb:	eb 16                	jmp    0x45f3d3
45f3bd:	8b 75 0c             	mov    0xc(%ebp),%esi
45f3c0:	56                   	push   %esi
45f3c1:	ff 15 5c f4 48 00    	call   *0x48f45c
45f3c7:	57                   	push   %edi
45f3c8:	ff 75 08             	push   0x8(%ebp)
45f3cb:	66 89 1e             	mov    %bx,(%esi)
45f3ce:	e8 e2 ec ff ff       	call   0x45e0b5
45f3d3:	89 46 08             	mov    %eax,0x8(%esi)
45f3d6:	5f                   	pop    %edi
45f3d7:	5e                   	pop    %esi
45f3d8:	5b                   	pop    %ebx
45f3d9:	5d                   	pop    %ebp
45f3da:	c2 0c 00             	ret    $0xc
45f3dd:	55                   	push   %ebp
45f3de:	8b ec                	mov    %esp,%ebp
45f3e0:	83 ec 20             	sub    $0x20,%esp
45f3e3:	53                   	push   %ebx
45f3e4:	8b 5d 08             	mov    0x8(%ebp),%ebx
45f3e7:	56                   	push   %esi
45f3e8:	57                   	push   %edi
45f3e9:	66 83 3b 24          	cmpw   $0x24,(%ebx)
45f3ed:	0f 85 50 01 00 00    	jne    0x45f543
45f3f3:	8d 45 e4             	lea    -0x1c(%ebp),%eax
45f3f6:	50                   	push   %eax
45f3f7:	ff 15 7c f4 48 00    	call   *0x48f47c
45f3fd:	8b 43 0c             	mov    0xc(%ebx),%eax
45f400:	8d 55 e4             	lea    -0x1c(%ebp),%edx
45f403:	33 f6                	xor    %esi,%esi
45f405:	52                   	push   %edx
45f406:	56                   	push   %esi
45f407:	89 75 ec             	mov    %esi,-0x14(%ebp)
45f40a:	89 75 f0             	mov    %esi,-0x10(%ebp)
45f40d:	8b 08                	mov    (%eax),%ecx
45f40f:	56                   	push   %esi
45f410:	50                   	push   %eax
45f411:	ff 51 28             	call   *0x28(%ecx)
45f414:	8b 7d ec             	mov    -0x14(%ebp),%edi
45f417:	89 7d 08             	mov    %edi,0x8(%ebp)
45f41a:	85 c0                	test   %eax,%eax
45f41c:	0f 88 15 01 00 00    	js     0x45f537
45f422:	85 ff                	test   %edi,%edi
45f424:	0f 8e 0d 01 00 00    	jle    0x45f537
45f42a:	8b 43 0c             	mov    0xc(%ebx),%eax
45f42d:	8d 55 e4             	lea    -0x1c(%ebp),%edx
45f430:	56                   	push   %esi
45f431:	52                   	push   %edx
45f432:	56                   	push   %esi
45f433:	8b 08                	mov    (%eax),%ecx
45f435:	56                   	push   %esi
45f436:	50                   	push   %eax
45f437:	ff 51 2c             	call   *0x2c(%ecx)
45f43a:	85 c0                	test   %eax,%eax
45f43c:	0f 88 f5 00 00 00    	js     0x45f537
45f442:	8b 5d 0c             	mov    0xc(%ebp),%ebx
45f445:	b8 00 40 00 00       	mov    $0x4000,%eax
45f44a:	8b 55 ec             	mov    -0x14(%ebp),%edx
45f44d:	89 55 f8             	mov    %edx,-0x8(%ebp)
45f450:	66 85 03             	test   %ax,(%ebx)
45f453:	74 34                	je     0x45f489
45f455:	8b 75 20             	mov    0x20(%ebp),%esi
45f458:	8b 7d 10             	mov    0x10(%ebp),%edi
45f45b:	6a 13                	push   $0x13
45f45d:	58                   	pop    %eax
45f45e:	66 89 03             	mov    %ax,(%ebx)
45f461:	8b 06                	mov    (%esi),%eax
45f463:	c1 e0 04             	shl    $0x4,%eax
45f466:	03 c7                	add    %edi,%eax
45f468:	50                   	push   %eax
45f469:	ff 15 5c f4 48 00    	call   *0x48f45c
45f46f:	8b 0e                	mov    (%esi),%ecx
45f471:	66 8b 03             	mov    (%ebx),%ax
45f474:	03 c9                	add    %ecx,%ecx
45f476:	66 89 04 cf          	mov    %ax,(%edi,%ecx,8)
45f47a:	8b 45 f8             	mov    -0x8(%ebp),%eax
45f47d:	8b 40 08             	mov    0x8(%eax),%eax
45f480:	89 44 cf 08          	mov    %eax,0x8(%edi,%ecx,8)
45f484:	e9 ae 00 00 00       	jmp    0x45f537
45f489:	8b 42 0c             	mov    0xc(%edx),%eax
45f48c:	33 c9                	xor    %ecx,%ecx
45f48e:	41                   	inc    %ecx
45f48f:	2b cf                	sub    %edi,%ecx
45f491:	8d 04 88             	lea    (%eax,%ecx,4),%eax
45f494:	8b 4a 08             	mov    0x8(%edx),%ecx
45f497:	89 45 f8             	mov    %eax,-0x8(%ebp)
45f49a:	8b c6                	mov    %esi,%eax
45f49c:	8b 75 20             	mov    0x20(%ebp),%esi
45f49f:	89 4d f4             	mov    %ecx,-0xc(%ebp)
45f4a2:	89 45 0c             	mov    %eax,0xc(%ebp)
45f4a5:	85 ff                	test   %edi,%edi
45f4a7:	0f 84 88 00 00 00    	je     0x45f535
45f4ad:	8b 5d 08             	mov    0x8(%ebp),%ebx
45f4b0:	8b 55 10             	mov    0x10(%ebp),%edx
45f4b3:	6a 13                	push   $0x13
45f4b5:	5f                   	pop    %edi
45f4b6:	8b 04 81             	mov    (%ecx,%eax,4),%eax
45f4b9:	89 45 20             	mov    %eax,0x20(%ebp)
45f4bc:	8b 06                	mov    (%esi),%eax
45f4be:	c1 e0 04             	shl    $0x4,%eax
45f4c1:	03 c2                	add    %edx,%eax
45f4c3:	50                   	push   %eax
45f4c4:	ff 15 5c f4 48 00    	call   *0x48f45c
45f4ca:	8b 16                	mov    (%esi),%edx
45f4cc:	8d 43 ff             	lea    -0x1(%ebx),%eax
45f4cf:	8b 4d 10             	mov    0x10(%ebp),%ecx
45f4d2:	c1 e2 04             	shl    $0x4,%edx
45f4d5:	66 89 3c 0a          	mov    %di,(%edx,%ecx,1)
45f4d9:	39 45 0c             	cmp    %eax,0xc(%ebp)
45f4dc:	75 1a                	jne    0x45f4f8
45f4de:	ff 75 f8             	push   -0x8(%ebp)
45f4e1:	8d 41 08             	lea    0x8(%ecx),%eax
45f4e4:	03 c2                	add    %edx,%eax
45f4e6:	8d 4d 20             	lea    0x20(%ebp),%ecx
45f4e9:	51                   	push   %ecx
45f4ea:	50                   	push   %eax
45f4eb:	83 20 00             	andl   $0x0,(%eax)
45f4ee:	e8 8d 1b fc ff       	call   0x421080
45f4f3:	83 c4 0c             	add    $0xc,%esp
45f4f6:	eb 07                	jmp    0x45f4ff
45f4f8:	8b 45 20             	mov    0x20(%ebp),%eax
45f4fb:	89 44 0a 08          	mov    %eax,0x8(%edx,%ecx,1)
45f4ff:	8b 0e                	mov    (%esi),%ecx
45f501:	8b 45 18             	mov    0x18(%ebp),%eax
45f504:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
45f507:	8b 55 10             	mov    0x10(%ebp),%edx
45f50a:	66 89 3c 48          	mov    %di,(%eax,%ecx,2)
45f50e:	8b c1                	mov    %ecx,%eax
45f510:	c1 e0 04             	shl    $0x4,%eax
45f513:	03 c2                	add    %edx,%eax
45f515:	89 04 8b             	mov    %eax,(%ebx,%ecx,4)
45f518:	8b 45 14             	mov    0x14(%ebp),%eax
45f51b:	8b 5d 08             	mov    0x8(%ebp),%ebx
45f51e:	83 24 88 00          	andl   $0x0,(%eax,%ecx,4)
45f522:	8d 41 01             	lea    0x1(%ecx),%eax
45f525:	8b 4d f4             	mov    -0xc(%ebp),%ecx
45f528:	89 06                	mov    %eax,(%esi)
45f52a:	8b 45 0c             	mov    0xc(%ebp),%eax
45f52d:	40                   	inc    %eax
45f52e:	89 45 0c             	mov    %eax,0xc(%ebp)
45f531:	3b c3                	cmp    %ebx,%eax
45f533:	72 81                	jb     0x45f4b6
45f535:	ff 0e                	decl   (%esi)
45f537:	8d 45 e4             	lea    -0x1c(%ebp),%eax
45f53a:	50                   	push   %eax
45f53b:	ff 15 5c f4 48 00    	call   *0x48f45c
45f541:	eb 37                	jmp    0x45f57a
45f543:	8b 45 0c             	mov    0xc(%ebp),%eax
45f546:	b9 00 40 00 00       	mov    $0x4000,%ecx
45f54b:	66 85 08             	test   %cx,(%eax)
45f54e:	74 2a                	je     0x45f57a
45f550:	8b 7d 20             	mov    0x20(%ebp),%edi
45f553:	8b 75 10             	mov    0x10(%ebp),%esi
45f556:	6a 13                	push   $0x13
45f558:	59                   	pop    %ecx
45f559:	66 89 08             	mov    %cx,(%eax)
45f55c:	8b 07                	mov    (%edi),%eax
45f55e:	51                   	push   %ecx
45f55f:	6a 00                	push   $0x0
45f561:	03 c0                	add    %eax,%eax
45f563:	53                   	push   %ebx
45f564:	53                   	push   %ebx
45f565:	66 89 0c c6          	mov    %cx,(%esi,%eax,8)
45f569:	ff 15 44 f4 48 00    	call   *0x48f444
45f56f:	8b 0f                	mov    (%edi),%ecx
45f571:	8b 43 08             	mov    0x8(%ebx),%eax
45f574:	03 c9                	add    %ecx,%ecx
45f576:	89 44 ce 08          	mov    %eax,0x8(%esi,%ecx,8)
45f57a:	5f                   	pop    %edi
45f57b:	5e                   	pop    %esi
45f57c:	5b                   	pop    %ebx
45f57d:	8b e5                	mov    %ebp,%esp
45f57f:	5d                   	pop    %ebp
45f580:	c2 1c 00             	ret    $0x1c
45f583:	55                   	push   %ebp
45f584:	8b ec                	mov    %esp,%ebp
45f586:	51                   	push   %ecx
45f587:	56                   	push   %esi
45f588:	57                   	push   %edi
45f589:	8b 7d 08             	mov    0x8(%ebp),%edi
45f58c:	57                   	push   %edi
45f58d:	e8 62 fb ff ff       	call   0x45f0f4
45f592:	57                   	push   %edi
45f593:	8b f0                	mov    %eax,%esi
45f595:	ff 15 5c f4 48 00    	call   *0x48f45c
45f59b:	6a 13                	push   $0x13
45f59d:	58                   	pop    %eax
45f59e:	66 89 07             	mov    %ax,(%edi)
45f5a1:	8b c6                	mov    %esi,%eax
45f5a3:	89 77 08             	mov    %esi,0x8(%edi)
45f5a6:	5f                   	pop    %edi
45f5a7:	5e                   	pop    %esi
45f5a8:	59                   	pop    %ecx
45f5a9:	5d                   	pop    %ebp
45f5aa:	c2 04 00             	ret    $0x4
45f5ad:	55                   	push   %ebp
45f5ae:	8b ec                	mov    %esp,%ebp
45f5b0:	51                   	push   %ecx
45f5b1:	53                   	push   %ebx
45f5b2:	56                   	push   %esi
45f5b3:	57                   	push   %edi
45f5b4:	ff 75 08             	push   0x8(%ebp)
45f5b7:	33 f6                	xor    %esi,%esi
45f5b9:	89 75 fc             	mov    %esi,-0x4(%ebp)
45f5bc:	ff 15 b4 f1 48 00    	call   *0x48f1b4
45f5c2:	8b f8                	mov    %eax,%edi
45f5c4:	33 c9                	xor    %ecx,%ecx
45f5c6:	6a 02                	push   $0x2
45f5c8:	5a                   	pop    %edx
45f5c9:	8d 47 01             	lea    0x1(%edi),%eax
45f5cc:	f7 e2                	mul    %edx
45f5ce:	0f 90 c1             	seto   %cl
45f5d1:	f7 d9                	neg    %ecx
45f5d3:	0b c8                	or     %eax,%ecx
45f5d5:	51                   	push   %ecx
45f5d6:	e8 1b 1a fc ff       	call   0x420ff6
45f5db:	59                   	pop    %ecx
45f5dc:	ff 75 08             	push   0x8(%ebp)
45f5df:	8b d8                	mov    %eax,%ebx
45f5e1:	53                   	push   %ebx
45f5e2:	ff 15 b0 f1 48 00    	call   *0x48f1b0
45f5e8:	33 c0                	xor    %eax,%eax
45f5ea:	66 89 04 7b          	mov    %ax,(%ebx,%edi,2)
45f5ee:	0f b7 44 7b fe       	movzwl -0x2(%ebx,%edi,2),%eax
45f5f3:	83 f8 2a             	cmp    $0x2a,%eax
45f5f6:	74 05                	je     0x45f5fd
45f5f8:	83 f8 5e             	cmp    $0x5e,%eax
45f5fb:	75 0e                	jne    0x45f60b
45f5fd:	33 c0                	xor    %eax,%eax
45f5ff:	c7 45 fc 00 40 00 00 	movl   $0x4000,-0x4(%ebp)
45f606:	66 89 44 7b fe       	mov    %ax,-0x2(%ebx,%edi,2)
45f60b:	53                   	push   %ebx
45f60c:	ff 34 b5 60 9d 4b 00 	push   0x4b9d60(,%esi,4)
45f613:	ff 15 38 f3 48 00    	call   *0x48f338
45f619:	85 c0                	test   %eax,%eax
45f61b:	74 0e                	je     0x45f62b
45f61d:	46                   	inc    %esi
45f61e:	83 fe 24             	cmp    $0x24,%esi
45f621:	7c e8                	jl     0x45f60b
45f623:	66 8b 7d fc          	mov    -0x4(%ebp),%di
45f627:	33 f6                	xor    %esi,%esi
45f629:	eb 0f                	jmp    0x45f63a
45f62b:	66 8b 7d fc          	mov    -0x4(%ebp),%di
45f62f:	66 03 3c 75 18 9d 4b 	add    0x4b9d18(,%esi,2),%di
45f636:	00
45f637:	33 f6                	xor    %esi,%esi
45f639:	46                   	inc    %esi
45f63a:	53                   	push   %ebx
45f63b:	e8 2c 1a fc ff       	call   0x42106c
45f640:	59                   	pop    %ecx
45f641:	85 f6                	test   %esi,%esi
45f643:	74 05                	je     0x45f64a
45f645:	66 8b c7             	mov    %di,%ax
45f648:	eb 05                	jmp    0x45f64f
45f64a:	b8 ff ff 00 00       	mov    $0xffff,%eax
45f64f:	5f                   	pop    %edi
45f650:	5e                   	pop    %esi
45f651:	5b                   	pop    %ebx
45f652:	8b e5                	mov    %ebp,%esp
45f654:	5d                   	pop    %ebp
45f655:	c2 04 00             	ret    $0x4
45f658:	55                   	push   %ebp
45f659:	8b ec                	mov    %esp,%ebp
45f65b:	83 ec 0c             	sub    $0xc,%esp
45f65e:	53                   	push   %ebx
45f65f:	8b 5d 14             	mov    0x14(%ebp),%ebx
45f662:	33 c0                	xor    %eax,%eax
45f664:	56                   	push   %esi
45f665:	33 d2                	xor    %edx,%edx
45f667:	8b f1                	mov    %ecx,%esi
45f669:	57                   	push   %edi
45f66a:	8b 7d 1c             	mov    0x1c(%ebp),%edi
45f66d:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
45f673:	89 75 f8             	mov    %esi,-0x8(%ebp)
45f676:	0f 94 c0             	sete   %al
45f679:	89 55 fc             	mov    %edx,-0x4(%ebp)
45f67c:	89 45 f4             	mov    %eax,-0xc(%ebp)
45f67f:	85 db                	test   %ebx,%ebx
45f681:	79 10                	jns    0x45f693
45f683:	ff 75 08             	push   0x8(%ebp)
45f686:	e8 b1 37 fc ff       	call   0x422e3c
45f68b:	8b 55 fc             	mov    -0x4(%ebp),%edx
45f68e:	8b d8                	mov    %eax,%ebx
45f690:	59                   	pop    %ecx
45f691:	85 db                	test   %ebx,%ebx
45f693:	0f 84 9c 01 00 00    	je     0x45f835
45f699:	8b 4e 04             	mov    0x4(%esi),%ecx
45f69c:	85 c9                	test   %ecx,%ecx
45f69e:	0f 84 91 01 00 00    	je     0x45f835
45f6a4:	8b 45 10             	mov    0x10(%ebp),%eax
45f6a7:	85 c0                	test   %eax,%eax