40e5c4:	0f b7 4f 0a          	movzwl 0xa(%edi),%ecx
40e5c8:	66 89 4e 0a          	mov    %cx,0xa(%esi)
40e5cc:	66 83 f8 3f          	cmp    $0x3f,%ax
40e5d0:	0f 8e 9c 94 06 00    	jle    0x477a72
40e5d6:	66 83 f8 10          	cmp    $0x10,%ax
40e5da:	0f 84 d6 94 06 00    	je     0x477ab6
40e5e0:	66 83 f8 20          	cmp    $0x20,%ax
40e5e4:	0f 84 96 02 00 00    	je     0x40e880
40e5ea:	8b 07                	mov    (%edi),%eax
40e5ec:	89 06                	mov    %eax,(%esi)
40e5ee:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40e5f1:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e5f4:	ff 75 0c             	push   0xc(%ebp)
40e5f7:	89 34 88             	mov    %esi,(%eax,%ecx,4)
40e5fa:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40e5fd:	ff 45 e8             	incl   -0x18(%ebp)
40e600:	8d 45 e0             	lea    -0x20(%ebp),%eax
40e603:	50                   	push   %eax
40e604:	e8 56 f9 ff ff       	call   0x40df5f
40e609:	33 f6                	xor    %esi,%esi
40e60b:	c7 45 e0 b4 dd 49 00 	movl   $0x49ddb4,-0x20(%ebp)
40e612:	39 75 e8             	cmp    %esi,-0x18(%ebp)
40e615:	76 2d                	jbe    0x40e644
40e617:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e61a:	8b 3c b0             	mov    (%eax,%esi,4),%edi
40e61d:	85 ff                	test   %edi,%edi
40e61f:	74 16                	je     0x40e637
40e621:	0f b7 47 08          	movzwl 0x8(%edi),%eax
40e625:	66 83 f8 3f          	cmp    $0x3f,%ax
40e629:	7e 34                	jle    0x40e65f
40e62b:	57                   	push   %edi
40e62c:	e8 2d 0f 01 00       	call   0x41f55e
40e631:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e634:	83 c4 04             	add    $0x4,%esp
40e637:	c7 04 b0 00 00 00 00 	movl   $0x0,(%eax,%esi,4)
40e63e:	46                   	inc    %esi
40e63f:	3b 75 e8             	cmp    -0x18(%ebp),%esi
40e642:	72 d3                	jb     0x40e617
40e644:	ff 75 e4             	push   -0x1c(%ebp)
40e647:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
40e64e:	e8 0b 0f 01 00       	call   0x41f55e
40e653:	83 c4 04             	add    $0x4,%esp
40e656:	5f                   	pop    %edi
40e657:	5e                   	pop    %esi
40e658:	5b                   	pop    %ebx
40e659:	8b e5                	mov    %ebp,%esp
40e65b:	5d                   	pop    %ebp
40e65c:	c2 08 00             	ret    $0x8
40e65f:	66 83 f8 30          	cmp    $0x30,%ax
40e663:	7c c6                	jl     0x40e62b
40e665:	8b 1f                	mov    (%edi),%ebx
40e667:	85 db                	test   %ebx,%ebx
40e669:	74 c0                	je     0x40e62b
40e66b:	8b 43 0c             	mov    0xc(%ebx),%eax
40e66e:	ff 08                	decl   (%eax)
40e670:	8b 43 0c             	mov    0xc(%ebx),%eax
40e673:	83 38 00             	cmpl   $0x0,(%eax)
40e676:	0f 84 49 94 06 00    	je     0x477ac5
40e67c:	53                   	push   %ebx
40e67d:	e8 dc 0e 01 00       	call   0x41f55e
40e682:	83 c4 04             	add    $0x4,%esp
40e685:	eb a4                	jmp    0x40e62b
40e687:	8b 7d 0c             	mov    0xc(%ebp),%edi
40e68a:	33 d2                	xor    %edx,%edx
40e68c:	8b 07                	mov    (%edi),%eax
40e68e:	32 ff                	xor    %bh,%bh
40e690:	8d 48 ff             	lea    -0x1(%eax),%ecx
40e693:	c6 45 0b 00          	movb   $0x0,0xb(%ebp)
40e697:	c7 45 c0 00 00 00 00 	movl   $0x0,-0x40(%ebp)
40e69e:	c7 45 c8 00 00 00 00 	movl   $0x0,-0x38(%ebp)
40e6a5:	c7 45 cc 01 00 00 00 	movl   $0x1,-0x34(%ebp)
40e6ac:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
40e6b3:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
40e6ba:	c7 45 dc 01 00 00 00 	movl   $0x1,-0x24(%ebp)
40e6c1:	89 55 f4             	mov    %edx,-0xc(%ebp)
40e6c4:	89 55 b0             	mov    %edx,-0x50(%ebp)
40e6c7:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
40e6ca:	84 db                	test   %bl,%bl
40e6cc:	0f 85 25 01 00 00    	jne    0x40e7f7
40e6d2:	33 c0                	xor    %eax,%eax
40e6d4:	89 45 0c             	mov    %eax,0xc(%ebp)
40e6d7:	8b 37                	mov    (%edi),%esi
40e6d9:	8d 56 01             	lea    0x1(%esi),%edx
40e6dc:	89 17                	mov    %edx,(%edi)
40e6de:	3b 35 10 21 4c 00    	cmp    0x4c2110,%esi
40e6e4:	7f 4b                	jg     0x40e731
40e6e6:	85 f6                	test   %esi,%esi
40e6e8:	7e 47                	jle    0x40e731
40e6ea:	c1 e6 04             	shl    $0x4,%esi
40e6ed:	03 35 4c 21 4c 00    	add    0x4c214c,%esi
40e6f3:	74 3c                	je     0x40e731
40e6f5:	84 ff                	test   %bh,%bh
40e6f7:	75 38                	jne    0x40e731
40e6f9:	8b 4e 04             	mov    0x4(%esi),%ecx
40e6fc:	8b 01                	mov    (%ecx),%eax
40e6fe:	66 83 78 08 00       	cmpw   $0x0,0x8(%eax)
40e703:	75 d2                	jne    0x40e6d7
40e705:	8b 00                	mov    (%eax),%eax
40e707:	83 f8 08             	cmp    $0x8,%eax
40e70a:	0f 85 b6 00 00 00    	jne    0x40e7c6
40e710:	8b 45 0c             	mov    0xc(%ebp),%eax
40e713:	85 c0                	test   %eax,%eax
40e715:	0f 85 75 01 00 00    	jne    0x40e890
40e71b:	8d 42 ff             	lea    -0x1(%edx),%eax
40e71e:	b7 01                	mov    $0x1,%bh
40e720:	89 45 b8             	mov    %eax,-0x48(%ebp)
40e723:	84 db                	test   %bl,%bl
40e725:	75 b0                	jne    0x40e6d7
40e727:	38 5d 0b             	cmp    %bl,0xb(%ebp)
40e72a:	75 ab                	jne    0x40e6d7
40e72c:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e72f:	eb a6                	jmp    0x40e6d7
40e731:	8b 45 f4             	mov    -0xc(%ebp),%eax
40e734:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40e737:	89 07                	mov    %eax,(%edi)
40e739:	80 bb 69 01 00 00 00 	cmpb   $0x0,0x169(%ebx)
40e740:	0f 85 71 94 06 00    	jne    0x477bb7
40e746:	6a 38                	push   $0x38
40e748:	e8 9d 0d 01 00       	call   0x41f4ea
40e74d:	8b f0                	mov    %eax,%esi
40e74f:	83 c4 04             	add    $0x4,%esp
40e752:	85 f6                	test   %esi,%esi
40e754:	0f 84 3c 01 00 00    	je     0x40e896
40e75a:	8b 45 b4             	mov    -0x4c(%ebp),%eax
40e75d:	8b 4d bc             	mov    -0x44(%ebp),%ecx
40e760:	89 46 04             	mov    %eax,0x4(%esi)
40e763:	8b 45 b8             	mov    -0x48(%ebp),%eax
40e766:	89 46 08             	mov    %eax,0x8(%esi)
40e769:	89 4e 0c             	mov    %ecx,0xc(%esi)
40e76c:	8d 4e 10             	lea    0x10(%esi),%ecx
40e76f:	8d 45 c0             	lea    -0x40(%ebp),%eax
40e772:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
40e778:	50                   	push   %eax
40e779:	c7 41 08 00 00 00 00 	movl   $0x0,0x8(%ecx)
40e780:	e8 9b 2f 00 00       	call   0x411720
40e785:	8d 4e 20             	lea    0x20(%esi),%ecx
40e788:	8d 45 d0             	lea    -0x30(%ebp),%eax
40e78b:	50                   	push   %eax
40e78c:	c7 41 08 00 00 00 00 	movl   $0x0,0x8(%ecx)
40e793:	e8 88 2f 00 00       	call   0x411720
40e798:	8b 83 64 01 00 00    	mov    0x164(%ebx),%eax
40e79e:	89 46 30             	mov    %eax,0x30(%esi)
40e7a1:	89 b3 64 01 00 00    	mov    %esi,0x164(%ebx)
40e7a7:	ff 83 60 01 00 00    	incl   0x160(%ebx)
40e7ad:	8d 4d d0             	lea    -0x30(%ebp),%ecx
40e7b0:	e8 6b 44 00 00       	call   0x412c20
40e7b5:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40e7b8:	e8 63 44 00 00       	call   0x412c20
40e7bd:	5f                   	pop    %edi
40e7be:	5e                   	pop    %esi
40e7bf:	5b                   	pop    %ebx
40e7c0:	8b e5                	mov    %ebp,%esp
40e7c2:	5d                   	pop    %ebp
40e7c3:	c2 08 00             	ret    $0x8
40e7c6:	83 e8 04             	sub    $0x4,%eax
40e7c9:	74 51                	je     0x40e81c
40e7cb:	83 e8 02             	sub    $0x2,%eax
40e7ce:	75 40                	jne    0x40e810
40e7d0:	39 45 0c             	cmp    %eax,0xc(%ebp)
40e7d3:	0f 85 fe fe ff ff    	jne    0x40e6d7
40e7d9:	80 7d 0b 01          	cmpb   $0x1,0xb(%ebp)
40e7dd:	0f 84 c3 93 06 00    	je     0x477ba6
40e7e3:	c6 45 0b 01          	movb   $0x1,0xb(%ebp)
40e7e7:	84 db                	test   %bl,%bl
40e7e9:	0f 85 e8 fe ff ff    	jne    0x40e6d7
40e7ef:	89 55 f4             	mov    %edx,-0xc(%ebp)
40e7f2:	e9 e0 fe ff ff       	jmp    0x40e6d7
40e7f7:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e7fa:	e9 d3 fe ff ff       	jmp    0x40e6d2
40e7ff:	83 c1 fb             	add    $0xfffffffb,%ecx
40e802:	83 f9 0a             	cmp    $0xa,%ecx
40e805:	0f 87 14 fc ff ff    	ja     0x40e41f
40e80b:	e9 58 91 06 00       	jmp    0x477968
40e810:	48                   	dec    %eax
40e811:	0f 85 c0 fe ff ff    	jne    0x40e6d7
40e817:	e9 c3 92 06 00       	jmp    0x477adf
40e81c:	8b 76 08             	mov    0x8(%esi),%esi
40e81f:	ba 01 00 00 00       	mov    $0x1,%edx
40e824:	3b f2                	cmp    %edx,%esi
40e826:	0f 86 ab fe ff ff    	jbe    0x40e6d7
40e82c:	83 c1 04             	add    $0x4,%ecx
40e82f:	90                   	nop
40e830:	8b 01                	mov    (%ecx),%eax
40e832:	66 83 78 08 00       	cmpw   $0x0,0x8(%eax)
40e837:	74 0d                	je     0x40e846
40e839:	42                   	inc    %edx
40e83a:	83 c1 04             	add    $0x4,%ecx
40e83d:	3b d6                	cmp    %esi,%edx
40e83f:	72 ef                	jb     0x40e830
40e841:	e9 91 fe ff ff       	jmp    0x40e6d7
40e846:	83 38 05             	cmpl   $0x5,(%eax)
40e849:	75 ee                	jne    0x40e839
40e84b:	8b 41 04             	mov    0x4(%ecx),%eax
40e84e:	66 83 78 08 7f       	cmpw   $0x7f,0x8(%eax)
40e853:	75 e4                	jne    0x40e839
40e855:	ff 45 0c             	incl   0xc(%ebp)
40e858:	e9 7a fe ff ff       	jmp    0x40e6d7
40e85d:	8b c2                	mov    %edx,%eax
40e85f:	0b 45 e4             	or     -0x1c(%ebp),%eax
40e862:	e9 03 fc ff ff       	jmp    0x40e46a
40e867:	33 d2                	xor    %edx,%edx
40e869:	89 16                	mov    %edx,(%esi)
40e86b:	e9 6c fc ff ff       	jmp    0x40e4dc
40e870:	dd 03                	fldl   (%ebx)
40e872:	dd 1e                	fstpl  (%esi)
40e874:	e9 63 fc ff ff       	jmp    0x40e4dc
40e879:	33 f6                	xor    %esi,%esi
40e87b:	e9 5c fc ff ff       	jmp    0x40e4dc
40e880:	dd 07                	fldl   (%edi)
40e882:	dd 1e                	fstpl  (%esi)
40e884:	e9 65 fd ff ff       	jmp    0x40e5ee
40e889:	33 f6                	xor    %esi,%esi
40e88b:	e9 5e fd ff ff       	jmp    0x40e5ee
40e890:	48                   	dec    %eax
40e891:	e9 3e fe ff ff       	jmp    0x40e6d4
40e896:	33 f6                	xor    %esi,%esi
40e898:	e9 fb fe ff ff       	jmp    0x40e798
40e89d:	8d 49 00             	lea    0x0(%ecx),%ecx
40e8a0:	68 e4 40 00 5d       	push   $0x5d0040e4
40e8a5:	e8 40 00 17 79       	call   0x7957e8ea
40e8aa:	47                   	inc    %edi
40e8ab:	00 2e                	add    %ch,(%esi)
40e8ad:	79 47                	jns    0x40e8f6
40e8af:	00 09                	add    %cl,(%ecx)
40e8b1:	e4 40                	in     $0x40,%al
40e8b3:	00 09                	add    %cl,(%ecx)
40e8b5:	e4 40                	in     $0x40,%al
40e8b7:	00 68 e4             	add    %ch,-0x1c(%eax)
40e8ba:	40                   	inc    %eax
40e8bb:	00 09                	add    %cl,(%ecx)
40e8bd:	e4 40                	in     $0x40,%al
40e8bf:	00 09                	add    %cl,(%ecx)
40e8c1:	e4 40                	in     $0x40,%al
40e8c3:	00 09                	add    %cl,(%ecx)
40e8c5:	e4 40                	in     $0x40,%al
40e8c7:	00 40 79             	add    %al,0x79(%eax)
40e8ca:	47                   	inc    %edi
40e8cb:	00 cc                	add    %cl,%ah
40e8cd:	cc                   	int3
40e8ce:	cc                   	int3
40e8cf:	cc                   	int3
40e8d0:	55                   	push   %ebp
40e8d1:	8b ec                	mov    %esp,%ebp
40e8d3:	83 e4 f8             	and    $0xfffffff8,%esp
40e8d6:	81 ec ec 00 00 00    	sub    $0xec,%esp
40e8dc:	53                   	push   %ebx
40e8dd:	8b d9                	mov    %ecx,%ebx
40e8df:	56                   	push   %esi
40e8e0:	8b 83 ec 00 00 00    	mov    0xec(%ebx),%eax
40e8e6:	57                   	push   %edi
40e8e7:	89 5c 24 4c          	mov    %ebx,0x4c(%esp)
40e8eb:	3d 3c 0f 00 00       	cmp    $0xf3c,%eax
40e8f0:	0f 8d 6c 68 06 00    	jge    0x475162
40e8f6:	40                   	inc    %eax
40e8f7:	89 83 ec 00 00 00    	mov    %eax,0xec(%ebx)
40e8fd:	83 f8 01             	cmp    $0x1,%eax
40e900:	0f 84 4c 04 00 00    	je     0x40ed52
40e906:	80 bb 00 01 00 00 00 	cmpb   $0x0,0x100(%ebx)
40e90d:	c6 83 48 01 00 00 00 	movb   $0x0,0x148(%ebx)
40e914:	0f 85 ad 02 00 00    	jne    0x40ebc7
40e91a:	8b 35 dc d6 48 00    	mov    0x48d6dc,%esi
40e920:	80 bb 48 01 00 00 00 	cmpb   $0x0,0x148(%ebx)
40e927:	ba 02 00 00 00       	mov    $0x2,%edx
40e92c:	0f 85 95 02 00 00    	jne    0x40ebc7
40e932:	80 3d b7 10 4c 00 00 	cmpb   $0x0,0x4c10b7
40e939:	0f 85 3e 68 06 00    	jne    0x47517d
40e93f:	80 3d 60 16 4c 00 00 	cmpb   $0x0,0x4c1660
40e946:	0f 85 43 68 06 00    	jne    0x47518f
40e94c:	6a 01                	push   $0x1
40e94e:	6a 00                	push   $0x0
40e950:	6a 00                	push   $0x0
40e952:	6a 00                	push   $0x0
40e954:	8d 44 24 60          	lea    0x60(%esp),%eax
40e958:	50                   	push   %eax
40e959:	ff d6                	call   *%esi
40e95b:	85 c0                	test   %eax,%eax
40e95d:	0f 85 8d 03 00 00    	jne    0x40ecf0
40e963:	80 3d c0 10 4c 00 01 	cmpb   $0x1,0x4c10c0
40e96a:	0f 84 47 68 06 00    	je     0x4751b7
40e970:	83 bb fc 00 00 00 01 	cmpl   $0x1,0xfc(%ebx)
40e977:	0f 84 53 70 06 00    	je     0x4759d0
40e97d:	ba 02 00 00 00       	mov    $0x2,%edx
40e982:	83 3d 04 11 4c 00 00 	cmpl   $0x0,0x4c1104
40e989:	0f 85 45 68 06 00    	jne    0x4751d4
40e98f:	80 3d c5 10 4c 00 01 	cmpb   $0x1,0x4c10c5
40e996:	0f 84 c5 68 06 00    	je     0x475261
40e99c:	83 bb 80 04 00 00 00 	cmpl   $0x0,0x480(%ebx)
40e9a3:	74 5f                	je     0x40ea04
40e9a5:	80 3d 80 21 4c 00 00 	cmpb   $0x0,0x4c2180
40e9ac:	75 56                	jne    0x40ea04
40e9ae:	8b b3 78 04 00 00    	mov    0x478(%ebx),%esi
40e9b4:	8d 83 78 04 00 00    	lea    0x478(%ebx),%eax
40e9ba:	c6 05 80 21 4c 00 01 	movb   $0x1,0x4c2180
40e9c1:	c7 44 24 1c 00 00 00 	movl   $0x0,0x1c(%esp)
40e9c8:	00
40e9c9:	89 44 24 10          	mov    %eax,0x10(%esp)
40e9cd:	8d 49 00             	lea    0x0(%ecx),%ecx
40e9d0:	85 f6                	test   %esi,%esi
40e9d2:	0f 85 17 02 00 00    	jne    0x40ebef
40e9d8:	8b 5c 24 10          	mov    0x10(%esp),%ebx
40e9dc:	8d 64 24 00          	lea    0x0(%esp),%esp
40e9e0:	8b 03                	mov    (%ebx),%eax
40e9e2:	89 44 24 10          	mov    %eax,0x10(%esp)
40e9e6:	85 c0                	test   %eax,%eax
40e9e8:	0f 85 4a 02 00 00    	jne    0x40ec38
40e9ee:	8b 5c 24 4c          	mov    0x4c(%esp),%ebx
40e9f2:	a2 80 21 4c 00       	mov    %al,0x4c2180
40e9f7:	39 44 24 1c          	cmp    %eax,0x1c(%esp)
40e9fb:	0f 8f b3 01 00 00    	jg     0x40ebb4
40ea01:	8d 50 02             	lea    0x2(%eax),%edx
40ea04:	80 3d 34 16 4c 00 00 	cmpb   $0x0,0x4c1634
40ea0b:	0f 84 a6 00 00 00    	je     0x40eab7
40ea11:	80 bb 84 04 00 00 01 	cmpb   $0x1,0x484(%ebx)
40ea18:	0f 84 99 00 00 00    	je     0x40eab7
40ea1e:	80 3d 60 16 4c 00 01 	cmpb   $0x1,0x4c1660
40ea25:	0f 84 8c 00 00 00    	je     0x40eab7
40ea2b:	33 c9                	xor    %ecx,%ecx
40ea2d:	b8 08 00 00 00       	mov    $0x8,%eax
40ea32:	f7 e2                	mul    %edx
40ea34:	0f 90 c1             	seto   %cl
40ea37:	c7 44 24 58 00 00 00 	movl   $0x0,0x58(%esp)
40ea3e:	00
40ea3f:	c7 44 24 5c 08 00 00 	movl   $0x8,0x5c(%esp)
40ea46:	00
40ea47:	f7 d9                	neg    %ecx
40ea49:	0b c8                	or     %eax,%ecx
40ea4b:	51                   	push   %ecx
40ea4c:	e8 99 0a 01 00       	call   0x41f4ea
40ea51:	83 c4 04             	add    $0x4,%esp
40ea54:	33 c9                	xor    %ecx,%ecx
40ea56:	6a 04                	push   $0x4
40ea58:	89 44 24 58          	mov    %eax,0x58(%esp)
40ea5c:	66 89 08             	mov    %cx,(%eax)
40ea5f:	e8 86 0a 01 00       	call   0x41f4ea
40ea64:	83 c4 04             	add    $0x4,%esp
40ea67:	85 c0                	test   %eax,%eax
40ea69:	0f 84 8c 03 00 00    	je     0x40edfb
40ea6f:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40ea75:	89 44 24 60          	mov    %eax,0x60(%esp)
40ea79:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40ea80:	83 3d 54 16 4c 00 00 	cmpl   $0x0,0x4c1654
40ea87:	0f 85 10 68 06 00    	jne    0x47529d
40ea8d:	80 3d 34 16 4c 00 00 	cmpb   $0x0,0x4c1634
40ea94:	0f 84 86 69 06 00    	je     0x475420
40ea9a:	8b 74 24 60          	mov    0x60(%esp),%esi
40ea9e:	ff 0e                	decl   (%esi)
40eaa0:	75 15                	jne    0x40eab7
40eaa2:	ff 74 24 54          	push   0x54(%esp)
40eaa6:	e8 b3 0a 01 00       	call   0x41f55e
40eaab:	83 c4 04             	add    $0x4,%esp