45a54d:	ff 35 60 58 4a 00    	push   0x4a5860
45a553:	8b 4d 94             	mov    -0x6c(%ebp),%ecx
45a556:	6a 18                	push   $0x18
45a558:	e8 22 31 fd ff       	call   0x42d67f
45a55d:	8b 4e 48             	mov    0x48(%esi),%ecx
45a560:	33 d2                	xor    %edx,%edx
45a562:	89 85 70 ff ff ff    	mov    %eax,-0x90(%ebp)
45a568:	8d 85 68 ff ff ff    	lea    -0x98(%ebp),%eax
45a56e:	ff 71 40             	push   0x40(%ecx)
45a571:	ff 71 3c             	push   0x3c(%ecx)
45a574:	50                   	push   %eax
45a575:	51                   	push   %ecx
45a576:	ff 35 60 58 4a 00    	push   0x4a5860
45a57c:	8b 8d 54 ff ff ff    	mov    -0xac(%ebp),%ecx
45a582:	6a 18                	push   $0x18
45a584:	e8 f6 30 fd ff       	call   0x42d67f
45a589:	83 bd 70 ff ff ff 00 	cmpl   $0x0,-0x90(%ebp)
45a590:	89 85 6c ff ff ff    	mov    %eax,-0x94(%ebp)
45a596:	0f 84 ec 01 00 00    	je     0x45a788
45a59c:	85 c0                	test   %eax,%eax
45a59e:	0f 84 e4 01 00 00    	je     0x45a788
45a5a4:	8b b5 70 ff ff ff    	mov    -0x90(%ebp),%esi
45a5aa:	8b ce                	mov    %esi,%ecx
45a5ac:	e8 c1 33 fd ff       	call   0x42d972
45a5b1:	8b 8d 6c ff ff ff    	mov    -0x94(%ebp),%ecx
45a5b7:	0f b7 c0             	movzwl %ax,%eax
45a5ba:	03 06                	add    (%esi),%eax
45a5bc:	03 c6                	add    %esi,%eax
45a5be:	89 85 38 ff ff ff    	mov    %eax,-0xc8(%ebp)
45a5c4:	e8 a9 33 fd ff       	call   0x42d972
45a5c9:	0f b7 c8             	movzwl %ax,%ecx
45a5cc:	be 0e 01 00 00       	mov    $0x10e,%esi
45a5d1:	8b 85 6c ff ff ff    	mov    -0x94(%ebp),%eax
45a5d7:	8b 55 ac             	mov    -0x54(%ebp),%edx
45a5da:	89 7d 88             	mov    %edi,-0x78(%ebp)
45a5dd:	03 08                	add    (%eax),%ecx
45a5df:	03 c8                	add    %eax,%ecx
45a5e1:	33 c0                	xor    %eax,%eax
45a5e3:	89 8d 68 ff ff ff    	mov    %ecx,-0x98(%ebp)
45a5e9:	8b 4b 08             	mov    0x8(%ebx),%ecx
45a5ec:	3b ce                	cmp    %esi,%ecx
45a5ee:	89 4d 8c             	mov    %ecx,-0x74(%ebp)
45a5f1:	0f 94 c0             	sete   %al
45a5f4:	4a                   	dec    %edx
45a5f5:	89 95 7c ff ff ff    	mov    %edx,-0x84(%ebp)
45a5fb:	8d 04 45 ff ff ff ff 	lea    -0x1(,%eax,2),%eax
45a602:	89 45 84             	mov    %eax,-0x7c(%ebp)
45a605:	8b c1                	mov    %ecx,%eax
45a607:	8b 4d a0             	mov    -0x60(%ebp),%ecx
45a60a:	2b c6                	sub    %esi,%eax
45a60c:	8b 75 8c             	mov    -0x74(%ebp),%esi
45a60f:	f7 d8                	neg    %eax
45a611:	1b c0                	sbb    %eax,%eax
45a613:	81 ee 0e 01 00 00    	sub    $0x10e,%esi
45a619:	23 c2                	and    %edx,%eax
45a61b:	f7 de                	neg    %esi
45a61d:	89 85 28 ff ff ff    	mov    %eax,-0xd8(%ebp)
45a623:	8b d7                	mov    %edi,%edx
45a625:	1b f6                	sbb    %esi,%esi
45a627:	8d 41 ff             	lea    -0x1(%ecx),%eax
45a62a:	23 f0                	and    %eax,%esi
45a62c:	89 75 8c             	mov    %esi,-0x74(%ebp)
45a62f:	8b 75 9c             	mov    -0x64(%ebp),%esi
45a632:	85 c9                	test   %ecx,%ecx
45a634:	0f 8e 34 01 00 00    	jle    0x45a76e
45a63a:	8b 75 ac             	mov    -0x54(%ebp),%esi
45a63d:	ff 75 94             	push   -0x6c(%ebp)
45a640:	ff 75 a8             	push   -0x58(%ebp)
45a643:	ff 15 68 71 4a 00    	call   *0x4a7168
45a649:	68 20 00 cc 00       	push   $0xcc0020
45a64e:	ff 75 88             	push   -0x78(%ebp)
45a651:	57                   	push   %edi
45a652:	ff 75 a4             	push   -0x5c(%ebp)
45a655:	6a 01                	push   $0x1
45a657:	56                   	push   %esi
45a658:	57                   	push   %edi
45a659:	57                   	push   %edi
45a65a:	ff 75 a8             	push   -0x58(%ebp)
45a65d:	ff 15 7c 71 4a 00    	call   *0x4a717c
45a663:	ff b5 3c ff ff ff    	push   -0xc4(%ebp)
45a669:	ff 75 a8             	push   -0x58(%ebp)
45a66c:	ff 15 68 71 4a 00    	call   *0x4a7168
45a672:	57                   	push   %edi
45a673:	ff b5 70 ff ff ff    	push   -0x90(%ebp)
45a679:	ff b5 38 ff ff ff    	push   -0xc8(%ebp)
45a67f:	6a 01                	push   $0x1
45a681:	57                   	push   %edi
45a682:	ff 75 94             	push   -0x6c(%ebp)
45a685:	ff 75 a4             	push   -0x5c(%ebp)
45a688:	ff 15 e8 70 4a 00    	call   *0x4a70e8
45a68e:	85 c0                	test   %eax,%eax
45a690:	0f 84 cf 00 00 00    	je     0x45a765
45a696:	8b 95 28 ff ff ff    	mov    -0xd8(%ebp),%edx
45a69c:	33 c0                	xor    %eax,%eax
45a69e:	8b 8d 38 ff ff ff    	mov    -0xc8(%ebp),%ecx
45a6a4:	88 85 77 ff ff ff    	mov    %al,-0x89(%ebp)
45a6aa:	85 d2                	test   %edx,%edx
45a6ac:	78 40                	js     0x45a6ee
45a6ae:	8b 7d 84             	mov    -0x7c(%ebp),%edi
45a6b1:	8b b5 68 ff ff ff    	mov    -0x98(%ebp),%esi
45a6b7:	3b 95 7c ff ff ff    	cmp    -0x84(%ebp),%edx
45a6bd:	7f 2a                	jg     0x45a6e9
45a6bf:	8a 01                	mov    (%ecx),%al
45a6c1:	88 85 74 ff ff ff    	mov    %al,-0x8c(%ebp)
45a6c7:	8a 41 01             	mov    0x1(%ecx),%al
45a6ca:	88 85 75 ff ff ff    	mov    %al,-0x8b(%ebp)
45a6d0:	8a 41 02             	mov    0x2(%ecx),%al
45a6d3:	83 c1 03             	add    $0x3,%ecx
45a6d6:	88 85 76 ff ff ff    	mov    %al,-0x8a(%ebp)
45a6dc:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
45a6e2:	89 04 96             	mov    %eax,(%esi,%edx,4)
45a6e5:	03 d7                	add    %edi,%edx
45a6e7:	79 ce                	jns    0x45a6b7
45a6e9:	8b 75 ac             	mov    -0x54(%ebp),%esi
45a6ec:	33 c0                	xor    %eax,%eax
45a6ee:	8b bd 54 ff ff ff    	mov    -0xac(%ebp),%edi
45a6f4:	50                   	push   %eax
45a6f5:	ff b5 6c ff ff ff    	push   -0x94(%ebp)
45a6fb:	ff b5 68 ff ff ff    	push   -0x98(%ebp)
45a701:	56                   	push   %esi
45a702:	50                   	push   %eax
45a703:	57                   	push   %edi
45a704:	ff 75 a4             	push   -0x5c(%ebp)
45a707:	ff 15 58 71 4a 00    	call   *0x4a7158
45a70d:	85 c0                	test   %eax,%eax
45a70f:	74 52                	je     0x45a763
45a711:	57                   	push   %edi
45a712:	8b 7d 98             	mov    -0x68(%ebp),%edi
45a715:	57                   	push   %edi
45a716:	ff 15 68 71 4a 00    	call   *0x4a7168
45a71c:	68 20 00 cc 00       	push   $0xcc0020
45a721:	33 c0                	xor    %eax,%eax
45a723:	50                   	push   %eax
45a724:	50                   	push   %eax
45a725:	57                   	push   %edi
45a726:	56                   	push   %esi
45a727:	6a 01                	push   $0x1
45a729:	50                   	push   %eax
45a72a:	ff 75 8c             	push   -0x74(%ebp)
45a72d:	ff b5 44 ff ff ff    	push   -0xbc(%ebp)
45a733:	ff 15 7c 71 4a 00    	call   *0x4a717c
45a739:	ff b5 34 ff ff ff    	push   -0xcc(%ebp)
45a73f:	57                   	push   %edi
45a740:	ff 15 68 71 4a 00    	call   *0x4a7168
45a746:	8b 55 88             	mov    -0x78(%ebp),%edx
45a749:	8b 45 84             	mov    -0x7c(%ebp),%eax
45a74c:	42                   	inc    %edx
45a74d:	01 45 8c             	add    %eax,-0x74(%ebp)
45a750:	8b 4d a0             	mov    -0x60(%ebp),%ecx
45a753:	89 55 88             	mov    %edx,-0x78(%ebp)
45a756:	6a 00                	push   $0x0
45a758:	5f                   	pop    %edi
45a759:	3b d1                	cmp    %ecx,%edx
45a75b:	0f 8c dc fe ff ff    	jl     0x45a63d
45a761:	eb 08                	jmp    0x45a76b
45a763:	33 ff                	xor    %edi,%edi
45a765:	8b 55 88             	mov    -0x78(%ebp),%edx
45a768:	8b 4d a0             	mov    -0x60(%ebp),%ecx
45a76b:	8b 75 9c             	mov    -0x64(%ebp),%esi
45a76e:	33 c0                	xor    %eax,%eax
45a770:	3b d1                	cmp    %ecx,%edx
45a772:	0f 94 c0             	sete   %al
45a775:	89 45 84             	mov    %eax,-0x7c(%ebp)
45a778:	74 1a                	je     0x45a794
45a77a:	6a 01                	push   $0x1
45a77c:	b9 e0 55 4a 00       	mov    $0x4a55e0,%ecx
45a781:	e8 21 35 ff ff       	call   0x44dca7
45a786:	eb 0c                	jmp    0x45a794
45a788:	6a 01                	push   $0x1
45a78a:	b9 e0 55 4a 00       	mov    $0x4a55e0,%ecx
45a78f:	e8 e5 34 ff ff       	call   0x44dc79
45a794:	8b 85 70 ff ff ff    	mov    -0x90(%ebp),%eax
45a79a:	85 c0                	test   %eax,%eax
45a79c:	74 07                	je     0x45a7a5
45a79e:	50                   	push   %eax
45a79f:	ff 15 5c 72 4a 00    	call   *0x4a725c
45a7a5:	8b 85 6c ff ff ff    	mov    -0x94(%ebp),%eax
45a7ab:	85 c0                	test   %eax,%eax
45a7ad:	74 07                	je     0x45a7b6
45a7af:	50                   	push   %eax
45a7b0:	ff 15 5c 72 4a 00    	call   *0x4a725c
45a7b6:	8b 85 30 ff ff ff    	mov    -0xd0(%ebp),%eax
45a7bc:	85 c0                	test   %eax,%eax
45a7be:	74 0b                	je     0x45a7cb
45a7c0:	57                   	push   %edi
45a7c1:	50                   	push   %eax
45a7c2:	ff 75 a8             	push   -0x58(%ebp)
45a7c5:	ff 15 6c 71 4a 00    	call   *0x4a716c
45a7cb:	8b 85 2c ff ff ff    	mov    -0xd4(%ebp),%eax
45a7d1:	85 c0                	test   %eax,%eax
45a7d3:	74 19                	je     0x45a7ee
45a7d5:	57                   	push   %edi
45a7d6:	50                   	push   %eax
45a7d7:	ff 75 98             	push   -0x68(%ebp)
45a7da:	ff 15 6c 71 4a 00    	call   *0x4a716c
45a7e0:	eb 0c                	jmp    0x45a7ee
45a7e2:	6a 01                	push   $0x1
45a7e4:	b9 e0 55 4a 00       	mov    $0x4a55e0,%ecx
45a7e9:	e8 b9 34 ff ff       	call   0x44dca7
45a7ee:	8b 45 a8             	mov    -0x58(%ebp),%eax
45a7f1:	85 c0                	test   %eax,%eax
45a7f3:	74 07                	je     0x45a7fc
45a7f5:	50                   	push   %eax
45a7f6:	ff 15 80 71 4a 00    	call   *0x4a7180
45a7fc:	8b 45 98             	mov    -0x68(%ebp),%eax
45a7ff:	85 c0                	test   %eax,%eax
45a801:	74 07                	je     0x45a80a
45a803:	50                   	push   %eax
45a804:	ff 15 80 71 4a 00    	call   *0x4a7180
45a80a:	8b 45 94             	mov    -0x6c(%ebp),%eax
45a80d:	85 c0                	test   %eax,%eax
45a80f:	74 07                	je     0x45a818
45a811:	50                   	push   %eax
45a812:	ff 15 60 71 4a 00    	call   *0x4a7160
45a818:	8b 85 54 ff ff ff    	mov    -0xac(%ebp),%eax
45a81e:	85 c0                	test   %eax,%eax
45a820:	74 07                	je     0x45a829
45a822:	50                   	push   %eax
45a823:	ff 15 60 71 4a 00    	call   *0x4a7160
45a829:	8b ce                	mov    %esi,%ecx
45a82b:	ff 15 a4 75 4a 00    	call   *0x4a75a4
45a831:	83 7d 84 00          	cmpl   $0x0,-0x7c(%ebp)
45a835:	8b 45 90             	mov    -0x70(%ebp),%eax
45a838:	75 5d                	jne    0x45a897
45a83a:	85 c0                	test   %eax,%eax
45a83c:	74 0d                	je     0x45a84b
45a83e:	57                   	push   %edi
45a83f:	50                   	push   %eax
45a840:	b9 b4 48 4a 00       	mov    $0x4a48b4,%ecx
45a845:	ff 15 98 75 4a 00    	call   *0x4a7598
45a84b:	8b 45 b0             	mov    -0x50(%ebp),%eax
45a84e:	85 c0                	test   %eax,%eax
45a850:	74 0e                	je     0x45a860
45a852:	57                   	push   %edi
45a853:	50                   	push   %eax
45a854:	8d 8d 40 ff ff ff    	lea    -0xc0(%ebp),%ecx
45a85a:	ff 15 98 75 4a 00    	call   *0x4a7598
45a860:	8b 85 50 ff ff ff    	mov    -0xb0(%ebp),%eax
45a866:	85 c0                	test   %eax,%eax
45a868:	74 03                	je     0x45a86d
45a86a:	8b 78 04             	mov    0x4(%eax),%edi
45a86d:	57                   	push   %edi
45a86e:	ff b5 44 ff ff ff    	push   -0xbc(%ebp)
45a874:	ff 15 90 75 4a 00    	call   *0x4a7590
45a87a:	8d 8d 40 ff ff ff    	lea    -0xc0(%ebp),%ecx
45a880:	ff 15 9c 75 4a 00    	call   *0x4a759c
45a886:	8d 8d 60 ff ff ff    	lea    -0xa0(%ebp),%ecx
45a88c:	ff 15 28 75 4a 00    	call   *0x4a7528
45a892:	e9 20 04 00 00       	jmp    0x45acb7
45a897:	85 c0                	test   %eax,%eax
45a899:	74 0d                	je     0x45a8a8
45a89b:	57                   	push   %edi
45a89c:	50                   	push   %eax
45a89d:	b9 b4 48 4a 00       	mov    $0x4a48b4,%ecx
45a8a2:	ff 15 98 75 4a 00    	call   *0x4a7598
45a8a8:	83 3d 30 49 4a 00 00 	cmpl   $0x0,0x4a4930
45a8af:	0f 85 25 01 00 00    	jne    0x45a9da
45a8b5:	83 3d 44 65 4a 00 00 	cmpl   $0x0,0x4a6544
45a8bc:	0f 85 18 01 00 00    	jne    0x45a9da
45a8c2:	6a 01                	push   $0x1
45a8c4:	68 98 fd 40 00       	push   $0x40fd98
45a8c9:	e8 87 ee 00 00       	call   0x469755
45a8ce:	8b 45 a0             	mov    -0x60(%ebp),%eax
45a8d1:	8b 7d 9c             	mov    -0x64(%ebp),%edi
45a8d4:	8b 75 ac             	mov    -0x54(%ebp),%esi
45a8d7:	89 85 78 ff ff ff    	mov    %eax,-0x88(%ebp)
45a8dd:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
45a8e3:	50                   	push   %eax
45a8e4:	51                   	push   %ecx
45a8e5:	8b 4f 48             	mov    0x48(%edi),%ecx
45a8e8:	89 b5 7c ff ff ff    	mov    %esi,-0x84(%ebp)
45a8ee:	8b 49 04             	mov    0x4(%ecx),%ecx
45a8f1:	e8 11 50 fc ff       	call   0x41f907
45a8f6:	8b 47 48             	mov    0x48(%edi),%eax
45a8f9:	8b 4d a0             	mov    -0x60(%ebp),%ecx
45a8fc:	89 48 2c             	mov    %ecx,0x2c(%eax)
45a8ff:	8b 47 48             	mov    0x48(%edi),%eax
45a902:	89 70 30             	mov    %esi,0x30(%eax)
45a905:	8b 4f 48             	mov    0x48(%edi),%ecx
45a908:	e8 13 37 fd ff       	call   0x42e020
45a90d:	8b 47 48             	mov    0x48(%edi),%eax
45a910:	33 c9                	xor    %ecx,%ecx
45a912:	68 20 00 cc 00       	push   $0xcc0020
45a917:	51                   	push   %ecx
45a918:	51                   	push   %ecx
45a919:	ff b5 44 ff ff ff    	push   -0xbc(%ebp)
45a91f:	ff 70 30             	push   0x30(%eax)
45a922:	ff 70 2c             	push   0x2c(%eax)
45a925:	8b 45 80             	mov    -0x80(%ebp),%eax
45a928:	51                   	push   %ecx
45a929:	51                   	push   %ecx
45a92a:	ff 70 04             	push   0x4(%eax)
45a92d:	ff 15 7c 71 4a 00    	call   *0x4a717c
45a933:	8b 85 50 ff ff ff    	mov    -0xb0(%ebp),%eax
45a939:	33 f6                	xor    %esi,%esi
45a93b:	85 c0                	test   %eax,%eax
45a93d:	75 04                	jne    0x45a943
45a93f:	8b c6                	mov    %esi,%eax
45a941:	eb 03                	jmp    0x45a946
45a943:	8b 40 04             	mov    0x4(%eax),%eax
45a946:	50                   	push   %eax
45a947:	ff b5 44 ff ff ff    	push   -0xbc(%ebp)
45a94d:	ff 15 90 75 4a 00    	call   *0x4a7590
45a953:	8b 45 b0             	mov    -0x50(%ebp),%eax
45a956:	85 c0                	test   %eax,%eax
45a958:	74 0e                	je     0x45a968
45a95a:	56                   	push   %esi
45a95b:	50                   	push   %eax
45a95c:	8d 8d 40 ff ff ff    	lea    -0xc0(%ebp),%ecx
45a962:	ff 15 98 75 4a 00    	call   *0x4a7598
45a968:	8d 8d 60 ff ff ff    	lea    -0xa0(%ebp),%ecx
45a96e:	ff 15 28 75 4a 00    	call   *0x4a7528
45a974:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
45a977:	8b c1                	mov    %ecx,%eax
45a979:	8b 55 c8             	mov    -0x38(%ebp),%edx
45a97c:	2b c2                	sub    %edx,%eax
45a97e:	03 45 d0             	add    -0x30(%ebp),%eax
45a981:	89 55 e0             	mov    %edx,-0x20(%ebp)
45a984:	2b d1                	sub    %ecx,%edx
45a986:	03 55 cc             	add    -0x34(%ebp),%edx
45a989:	89 4d dc             	mov    %ecx,-0x24(%ebp)
45a98c:	8b 4f 48             	mov    0x48(%edi),%ecx
45a98f:	89 55 e8             	mov    %edx,-0x18(%ebp)
45a992:	8d 55 dc             	lea    -0x24(%ebp),%edx
45a995:	89 45 e4             	mov    %eax,-0x1c(%ebp)
45a998:	e8 3f 24 fd ff       	call   0x42cddc
45a99d:	8b 4f 48             	mov    0x48(%edi),%ecx
45a9a0:	8d 55 dc             	lea    -0x24(%ebp),%edx
45a9a3:	e8 01 25 fd ff       	call   0x42cea9
45a9a8:	8d 45 dc             	lea    -0x24(%ebp),%eax
45a9ab:	8b cf                	mov    %edi,%ecx
45a9ad:	50                   	push   %eax
45a9ae:	e8 30 b7 fd ff       	call   0x4360e3
45a9b3:	e8 7a ee 00 00       	call   0x469832
45a9b8:	8b 4f 48             	mov    0x48(%edi),%ecx
45a9bb:	e8 b7 23 fd ff       	call   0x42cd77
45a9c0:	6a 01                	push   $0x1
45a9c2:	56                   	push   %esi
45a9c3:	ff 77 20             	push   0x20(%edi)
45a9c6:	ff 15 d8 7d 4a 00    	call   *0x4a7dd8
45a9cc:	ff 77 20             	push   0x20(%edi)
45a9cf:	ff 15 a0 7d 4a 00    	call   *0x4a7da0
45a9d5:	e9 af 02 00 00       	jmp    0x45ac89
45a9da:	8b 45 b0             	mov    -0x50(%ebp),%eax
45a9dd:	85 c0                	test   %eax,%eax
45a9df:	74 0e                	je     0x45a9ef
45a9e1:	57                   	push   %edi
45a9e2:	50                   	push   %eax
45a9e3:	8d 8d 40 ff ff ff    	lea    -0xc0(%ebp),%ecx
45a9e9:	ff 15 98 75 4a 00    	call   *0x4a7598