51a40a:	53                   	push   %ebx
51a40b:	55                   	push   %ebp
51a40c:	33 db                	xor    %ebx,%ebx
51a40e:	33 ed                	xor    %ebp,%ebp
51a410:	56                   	push   %esi
51a411:	57                   	push   %edi
51a412:	8b 7c 24 48          	mov    0x48(%esp),%edi
51a416:	89 5c 24 24          	mov    %ebx,0x24(%esp)
51a41a:	89 6c 24 20          	mov    %ebp,0x20(%esp)
51a41e:	66 90                	xchg   %ax,%ax
51a420:	68 0a 04 00 00       	push   $0x40a
51a425:	68 a0 06 64 00       	push   $0x6406a0
51a42a:	6a 1c                	push   $0x1c
51a42c:	c7 44 24 1c 00 00 00 	movl   $0x0,0x1c(%esp)
51a433:	00
51a434:	e8 07 66 fc ff       	call   0x4e0a40
51a439:	83 c4 0c             	add    $0xc,%esp
51a43c:	89 44 24 18          	mov    %eax,0x18(%esp)
51a440:	85 c0                	test   %eax,%eax
51a442:	0f 84 80 01 00 00    	je     0x51a5c8
51a448:	33 f6                	xor    %esi,%esi
51a44a:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
51a450:	33 ed                	xor    %ebp,%ebp
51a452:	ff 74 24 44          	push   0x44(%esp)
51a456:	8b bd c4 e2 68 00    	mov    0x68e2c4(%ebp),%edi
51a45c:	8d 44 24 18          	lea    0x18(%esp),%eax
51a460:	ff 74 24 44          	push   0x44(%esp)
51a464:	c7 44 24 1c 00 00 00 	movl   $0x0,0x1c(%esp)
51a46b:	00
51a46c:	50                   	push   %eax
51a46d:	8d 44 24 28          	lea    0x28(%esp),%eax
51a471:	c7 44 24 28 00 00 00 	movl   $0x0,0x28(%esp)
51a478:	00
51a479:	50                   	push   %eax
51a47a:	ff 74 24 4c          	push   0x4c(%esp)
51a47e:	8b 47 04             	mov    0x4(%edi),%eax
51a481:	ff 74 24 4c          	push   0x4c(%esp)
51a485:	ff 74 24 4c          	push   0x4c(%esp)
51a489:	ff 74 24 4c          	push   0x4c(%esp)
51a48d:	ff d0                	call   *%eax
51a48f:	83 c4 20             	add    $0x20,%esp
51a492:	8b d8                	mov    %eax,%ebx
51a494:	83 7c 24 14 00       	cmpl   $0x0,0x14(%esp)
51a499:	7e 6a                	jle    0x51a505
51a49b:	8b 4c 24 48          	mov    0x48(%esp),%ecx
51a49f:	8b 54 24 18          	mov    0x18(%esp),%edx
51a4a3:	8b 01                	mov    (%ecx),%eax
51a4a5:	89 3c 82             	mov    %edi,(%edx,%eax,4)
51a4a8:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
51a4ad:	74 11                	je     0x51a4c0
51a4af:	8d 44 24 10          	lea    0x10(%esp),%eax
51a4b3:	50                   	push   %eax
51a4b4:	8b 47 0c             	mov    0xc(%edi),%eax
51a4b7:	ff d0                	call   *%eax
51a4b9:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
51a4bd:	83 c4 04             	add    $0x4,%esp
51a4c0:	8b 44 24 1c          	mov    0x1c(%esp),%eax
51a4c4:	89 44 24 10          	mov    %eax,0x10(%esp)
51a4c8:	8b 44 24 14          	mov    0x14(%esp),%eax
51a4cc:	01 01                	add    %eax,(%ecx)
51a4ce:	83 39 01             	cmpl   $0x1,(%ecx)
51a4d1:	7e 2c                	jle    0x51a4ff
51a4d3:	56                   	push   %esi
51a4d4:	e8 27 e9 03 00       	call   0x558e00
51a4d9:	53                   	push   %ebx
51a4da:	e8 21 e9 03 00       	call   0x558e00
51a4df:	8b 47 0c             	mov    0xc(%edi),%eax
51a4e2:	83 c4 08             	add    $0x8,%esp
51a4e5:	85 c0                	test   %eax,%eax
51a4e7:	74 0a                	je     0x51a4f3
51a4e9:	8d 4c 24 10          	lea    0x10(%esp),%ecx
51a4ed:	51                   	push   %ecx
51a4ee:	ff d0                	call   *%eax
51a4f0:	83 c4 04             	add    $0x4,%esp
51a4f3:	c7 44 24 10 00 00 00 	movl   $0x0,0x10(%esp)
51a4fa:	00
51a4fb:	33 db                	xor    %ebx,%ebx
51a4fd:	eb 04                	jmp    0x51a503
51a4ff:	85 f6                	test   %esi,%esi
51a501:	75 02                	jne    0x51a505
51a503:	8b f3                	mov    %ebx,%esi
51a505:	83 c5 04             	add    $0x4,%ebp
51a508:	83 fd 1c             	cmp    $0x1c,%ebp
51a50b:	0f 82 41 ff ff ff    	jb     0x51a452
51a511:	8b 7c 24 48          	mov    0x48(%esp),%edi
51a515:	83 3f 01             	cmpl   $0x1,(%edi)
51a518:	75 1a                	jne    0x51a534
51a51a:	8b 44 24 18          	mov    0x18(%esp),%eax
51a51e:	8b 00                	mov    (%eax),%eax
51a520:	83 78 10 00          	cmpl   $0x0,0x10(%eax)
51a524:	74 0e                	je     0x51a534
51a526:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
51a52a:	89 41 10             	mov    %eax,0x10(%ecx)
51a52d:	8b 44 24 10          	mov    0x10(%esp),%eax
51a531:	89 41 14             	mov    %eax,0x14(%ecx)
51a534:	68 38 04 00 00       	push   $0x438
51a539:	68 a0 06 64 00       	push   $0x6406a0
51a53e:	ff 74 24 20          	push   0x20(%esp)
51a542:	e8 39 62 fc ff       	call   0x4e0780
51a547:	68 3c 04 00 00       	push   $0x43c
51a54c:	68 a0 06 64 00       	push   $0x6406a0
51a551:	ff 74 24 34          	push   0x34(%esp)
51a555:	e8 26 62 fc ff       	call   0x4e0780
51a55a:	ff 74 24 3c          	push   0x3c(%esp)
51a55e:	e8 2d 10 ff ff       	call   0x50b590
51a563:	83 c4 1c             	add    $0x1c,%esp
51a566:	85 f6                	test   %esi,%esi
51a568:	74 54                	je     0x51a5be
51a56a:	56                   	push   %esi
51a56b:	e8 50 5b fd ff       	call   0x4f00c0
51a570:	83 c4 04             	add    $0x4,%esp
51a573:	83 f8 ff             	cmp    $0xffffffff,%eax
51a576:	75 41                	jne    0x51a5b9
51a578:	56                   	push   %esi
51a579:	e8 e2 ea 03 00       	call   0x559060
51a57e:	8b e8                	mov    %eax,%ebp
51a580:	89 44 24 24          	mov    %eax,0x24(%esp)
51a584:	56                   	push   %esi
51a585:	89 6c 24 38          	mov    %ebp,0x38(%esp)
51a589:	e8 c2 ea 03 00       	call   0x559050
51a58e:	8b d8                	mov    %eax,%ebx
51a590:	68 46 04 00 00       	push   $0x446
51a595:	68 a0 06 64 00       	push   $0x6406a0
51a59a:	56                   	push   %esi
51a59b:	8b 43 04             	mov    0x4(%ebx),%eax
51a59e:	89 44 24 4c          	mov    %eax,0x4c(%esp)
51a5a2:	8b 03                	mov    (%ebx),%eax
51a5a4:	89 5c 24 38          	mov    %ebx,0x38(%esp)
51a5a8:	89 44 24 50          	mov    %eax,0x50(%esp)
51a5ac:	e8 cf 61 fc ff       	call   0x4e0780
51a5b1:	83 c4 14             	add    $0x14,%esp
51a5b4:	e9 67 fe ff ff       	jmp    0x51a420
51a5b9:	e8 02 e2 fb ff       	call   0x4d87c0
51a5be:	5f                   	pop    %edi
51a5bf:	8b c6                	mov    %esi,%eax
51a5c1:	5e                   	pop    %esi
51a5c2:	5d                   	pop    %ebp
51a5c3:	5b                   	pop    %ebx
51a5c4:	83 c4 18             	add    $0x18,%esp
51a5c7:	c3                   	ret
51a5c8:	68 0e 04 00 00       	push   $0x40e
51a5cd:	68 a0 06 64 00       	push   $0x6406a0
51a5d2:	6a 41                	push   $0x41
51a5d4:	6a 7c                	push   $0x7c
51a5d6:	6a 2c                	push   $0x2c
51a5d8:	e8 a3 e9 fb ff       	call   0x4d8f80
51a5dd:	68 3c 04 00 00       	push   $0x43c
51a5e2:	68 a0 06 64 00       	push   $0x6406a0
51a5e7:	55                   	push   %ebp
51a5e8:	e8 93 61 fc ff       	call   0x4e0780
51a5ed:	53                   	push   %ebx
51a5ee:	e8 9d 0f ff ff       	call   0x50b590
51a5f3:	83 c4 24             	add    $0x24,%esp
51a5f6:	33 c0                	xor    %eax,%eax
51a5f8:	5f                   	pop    %edi
51a5f9:	5e                   	pop    %esi
51a5fa:	5d                   	pop    %ebp
51a5fb:	5b                   	pop    %ebx
51a5fc:	83 c4 18             	add    $0x18,%esp
51a5ff:	c3                   	ret
51a600:	56                   	push   %esi
51a601:	8b 74 24 08          	mov    0x8(%esp),%esi
51a605:	85 f6                	test   %esi,%esi
51a607:	74 28                	je     0x51a631
51a609:	56                   	push   %esi
51a60a:	e8 11 f6 fb ff       	call   0x4d9c20
51a60f:	8d 46 14             	lea    0x14(%esi),%eax
51a612:	50                   	push   %eax
51a613:	e8 08 f6 fb ff       	call   0x4d9c20
51a618:	83 c4 08             	add    $0x8,%esp
51a61b:	f6 46 30 01          	testb  $0x1,0x30(%esi)
51a61f:	74 10                	je     0x51a631
51a621:	6a 2a                	push   $0x2a
51a623:	68 70 07 64 00       	push   $0x640770
51a628:	56                   	push   %esi
51a629:	e8 52 61 fc ff       	call   0x4e0780
51a62e:	83 c4 0c             	add    $0xc,%esp
51a631:	5e                   	pop    %esi
51a632:	c3                   	ret
51a633:	cc                   	int3
51a634:	cc                   	int3
51a635:	cc                   	int3
51a636:	cc                   	int3
51a637:	cc                   	int3
51a638:	cc                   	int3
51a639:	cc                   	int3
51a63a:	cc                   	int3
51a63b:	cc                   	int3
51a63c:	cc                   	int3
51a63d:	cc                   	int3
51a63e:	cc                   	int3
51a63f:	cc                   	int3
51a640:	56                   	push   %esi
51a641:	8b 74 24 08          	mov    0x8(%esp),%esi
51a645:	6a 34                	push   $0x34
51a647:	6a 00                	push   $0x0
51a649:	56                   	push   %esi
51a64a:	e8 21 86 0b 00       	call   0x5d2c70
51a64f:	56                   	push   %esi
51a650:	e8 2b ff fb ff       	call   0x4da580
51a655:	83 c4 10             	add    $0x10,%esp
51a658:	8d 46 14             	lea    0x14(%esi),%eax
51a65b:	5e                   	pop    %esi
51a65c:	89 44 24 04          	mov    %eax,0x4(%esp)
51a660:	e9 1b ff fb ff       	jmp    0x4da580
51a665:	cc                   	int3
51a666:	cc                   	int3
51a667:	cc                   	int3
51a668:	cc                   	int3
51a669:	cc                   	int3
51a66a:	cc                   	int3
51a66b:	cc                   	int3
51a66c:	cc                   	int3
51a66d:	cc                   	int3
51a66e:	cc                   	int3
51a66f:	cc                   	int3
51a670:	56                   	push   %esi
51a671:	ff 74 24 0c          	push   0xc(%esp)
51a675:	8b 74 24 0c          	mov    0xc(%esp),%esi
51a679:	56                   	push   %esi
51a67a:	e8 61 f4 fb ff       	call   0x4d9ae0
51a67f:	83 c4 08             	add    $0x8,%esp
51a682:	85 c0                	test   %eax,%eax
51a684:	75 02                	jne    0x51a688
51a686:	5e                   	pop    %esi
51a687:	c3                   	ret
51a688:	8d 46 14             	lea    0x14(%esi),%eax
51a68b:	6a 00                	push   $0x0
51a68d:	50                   	push   %eax
51a68e:	e8 4d fa fb ff       	call   0x4da0e0
51a693:	ff 74 24 14          	push   0x14(%esp)
51a697:	e8 84 f7 fb ff       	call   0x4d9e20
51a69c:	83 c4 0c             	add    $0xc,%esp
51a69f:	89 46 28             	mov    %eax,0x28(%esi)
51a6a2:	c7 46 2c 00 00 00 00 	movl   $0x0,0x2c(%esi)
51a6a9:	b8 01 00 00 00       	mov    $0x1,%eax
51a6ae:	5e                   	pop    %esi
51a6af:	c3                   	ret
51a6b0:	b8 14 00 00 00       	mov    $0x14,%eax
51a6b5:	e8 f6 70 0b 00       	call   0x5d17b0
51a6ba:	53                   	push   %ebx
51a6bb:	8b 5c 24 2c          	mov    0x2c(%esp),%ebx
51a6bf:	55                   	push   %ebp
51a6c0:	56                   	push   %esi
51a6c1:	57                   	push   %edi
51a6c2:	53                   	push   %ebx
51a6c3:	c7 44 24 20 00 00 00 	movl   $0x0,0x20(%esp)
51a6ca:	00
51a6cb:	e8 40 d7 fc ff       	call   0x4e7e10
51a6d0:	8b 6c 24 2c          	mov    0x2c(%esp),%ebp
51a6d4:	83 c4 04             	add    $0x4,%esp
51a6d7:	85 ed                	test   %ebp,%ebp
51a6d9:	75 0f                	jne    0x51a6ea
51a6db:	53                   	push   %ebx
51a6dc:	e8 ef d4 fc ff       	call   0x4e7bd0
51a6e1:	8b e8                	mov    %eax,%ebp
51a6e3:	83 c4 04             	add    $0x4,%esp
51a6e6:	89 6c 24 28          	mov    %ebp,0x28(%esp)
51a6ea:	8b 74 24 2c          	mov    0x2c(%esp),%esi
51a6ee:	85 f6                	test   %esi,%esi
51a6f0:	75 0b                	jne    0x51a6fd
51a6f2:	53                   	push   %ebx
51a6f3:	e8 d8 d4 fc ff       	call   0x4e7bd0
51a6f8:	83 c4 04             	add    $0x4,%esp
51a6fb:	8b f0                	mov    %eax,%esi
51a6fd:	53                   	push   %ebx
51a6fe:	e8 cd d4 fc ff       	call   0x4e7bd0
51a703:	53                   	push   %ebx
51a704:	89 44 24 20          	mov    %eax,0x20(%esp)
51a708:	e8 c3 d4 fc ff       	call   0x4e7bd0
51a70d:	83 c4 08             	add    $0x8,%esp
51a710:	89 44 24 14          	mov    %eax,0x14(%esp)
51a714:	85 c0                	test   %eax,%eax
51a716:	0f 84 21 02 00 00    	je     0x51a93d
51a71c:	8b 7c 24 34          	mov    0x34(%esp),%edi
51a720:	57                   	push   %edi
51a721:	ff 74 24 34          	push   0x34(%esp)
51a725:	e8 16 fa fb ff       	call   0x4da140
51a72a:	83 c4 08             	add    $0x8,%esp
51a72d:	85 c0                	test   %eax,%eax
51a72f:	79 41                	jns    0x51a772
51a731:	6a 00                	push   $0x0
51a733:	55                   	push   %ebp
51a734:	e8 a7 f9 fb ff       	call   0x4da0e0
51a739:	ff 74 24 38          	push   0x38(%esp)
51a73d:	56                   	push   %esi
51a73e:	e8 9d f3 fb ff       	call   0x4d9ae0
51a743:	83 c4 10             	add    $0x10,%esp
51a746:	53                   	push   %ebx
51a747:	85 c0                	test   %eax,%eax
51a749:	75 12                	jne    0x51a75d
51a74b:	e8 80 d3 fc ff       	call   0x4e7ad0
51a750:	83 c4 04             	add    $0x4,%esp
51a753:	33 c0                	xor    %eax,%eax
51a755:	5f                   	pop    %edi
51a756:	5e                   	pop    %esi
51a757:	5d                   	pop    %ebp
51a758:	5b                   	pop    %ebx
51a759:	83 c4 14             	add    $0x14,%esp
51a75c:	c3                   	ret
51a75d:	e8 6e d3 fc ff       	call   0x4e7ad0
51a762:	83 c4 04             	add    $0x4,%esp
51a765:	b8 01 00 00 00       	mov    $0x1,%eax
51a76a:	5f                   	pop    %edi
51a76b:	5e                   	pop    %esi
51a76c:	5d                   	pop    %ebp
51a76d:	5b                   	pop    %ebx
51a76e:	83 c4 14             	add    $0x14,%esp
51a771:	c3                   	ret
51a772:	ff 74 24 30          	push   0x30(%esp)
51a776:	e8 a5 f6 fb ff       	call   0x4d9e20
51a77b:	8b c8                	mov    %eax,%ecx
51a77d:	83 c4 04             	add    $0x4,%esp
51a780:	8b 47 28             	mov    0x28(%edi),%eax
51a783:	03 c0                	add    %eax,%eax
51a785:	3b c1                	cmp    %ecx,%eax
51a787:	0f 4f c8             	cmovg  %eax,%ecx
51a78a:	8b 47 2c             	mov    0x2c(%edi),%eax
51a78d:	89 4c 24 10          	mov    %ecx,0x10(%esp)
51a791:	3b c8                	cmp    %eax,%ecx
51a793:	74 63                	je     0x51a7f8
51a795:	53                   	push   %ebx
51a796:	c7 44 24 30 ff ff ff 	movl   $0xffffffff,0x30(%esp)
51a79d:	ff
51a79e:	e8 6d d6 fc ff       	call   0x4e7e10
51a7a3:	53                   	push   %ebx
51a7a4:	e8 27 d4 fc ff       	call   0x4e7bd0
51a7a9:	83 c4 08             	add    $0x8,%esp
51a7ac:	89 44 24 20          	mov    %eax,0x20(%esp)
51a7b0:	85 c0                	test   %eax,%eax
51a7b2:	74 34                	je     0x51a7e8
51a7b4:	ff 74 24 10          	push   0x10(%esp)
51a7b8:	50                   	push   %eax
51a7b9:	e8 72 f8 fb ff       	call   0x4da030
51a7be:	83 c4 08             	add    $0x8,%esp
51a7c1:	85 c0                	test   %eax,%eax
51a7c3:	74 23                	je     0x51a7e8
51a7c5:	53                   	push   %ebx
51a7c6:	57                   	push   %edi
51a7c7:	ff 74 24 28          	push   0x28(%esp)
51a7cb:	8d 47 14             	lea    0x14(%edi),%eax
51a7ce:	6a 00                	push   $0x0
51a7d0:	50                   	push   %eax
51a7d1:	e8 3a fd fc ff       	call   0x4ea510
51a7d6:	8b 4c 24 40          	mov    0x40(%esp),%ecx
51a7da:	83 c4 14             	add    $0x14,%esp
51a7dd:	85 c0                	test   %eax,%eax
51a7df:	0f 45 4c 24 10       	cmovne 0x10(%esp),%ecx
51a7e4:	89 4c 24 2c          	mov    %ecx,0x2c(%esp)
51a7e8:	53                   	push   %ebx