40981d:	ff b4 24 84 00 00 00 	push   0x84(%esp)
409824:	e8 37 03 00 00       	call   0x409b60
409829:	83 c4 18             	add    $0x18,%esp
40982c:	89 84 24 a4 00 00 00 	mov    %eax,0xa4(%esp)
409833:	85 c0                	test   %eax,%eax
409835:	0f 8e 66 02 00 00    	jle    0x409aa1
40983b:	8b 8c 24 9c 00 00 00 	mov    0x9c(%esp),%ecx
409842:	8b b4 24 98 00 00 00 	mov    0x98(%esp),%esi
409849:	8b 51 04             	mov    0x4(%ecx),%edx
40984c:	c7 84 24 a8 00 00 00 	movl   $0x0,0xa8(%esp)
409853:	00 00 00 00
409857:	8b 39                	mov    (%ecx),%edi
409859:	3b 79 04             	cmp    0x4(%ecx),%edi
40985c:	0f 84 21 2f 07 00    	je     0x47c783
409862:	89 54 24 0c          	mov    %edx,0xc(%esp)
409866:	8b c8                	mov    %eax,%ecx
409868:	89 4c 24 38          	mov    %ecx,0x38(%esp)
40986c:	85 c9                	test   %ecx,%ecx
40986e:	0f 84 3b 02 00 00    	je     0x409aaf
409874:	83 f9 02             	cmp    $0x2,%ecx
409877:	0f 8d 1a 02 00 00    	jge    0x409a97
40987d:	33 ff                	xor    %edi,%edi
40987f:	3b f9                	cmp    %ecx,%edi
409881:	0f 83 49 ff ff ff    	jae    0x4097d0
409887:	8b 74 24 20          	mov    0x20(%esp),%esi
40988b:	8d 0c fd 00 00 00 00 	lea    0x0(,%edi,8),%ecx
409892:	89 4c 24 58          	mov    %ecx,0x58(%esp)
409896:	3b f8                	cmp    %eax,%edi
409898:	0f 8d 42 2f 07 00    	jge    0x47c7e0
40989e:	8b 44 24 70          	mov    0x70(%esp),%eax
4098a2:	89 44 24 40          	mov    %eax,0x40(%esp)
4098a6:	85 ff                	test   %edi,%edi
4098a8:	0f 88 80 02 00 00    	js     0x409b2e
4098ae:	8b 84 24 9c 00 00 00 	mov    0x9c(%esp),%eax
4098b5:	03 c1                	add    %ecx,%eax
4098b7:	8b 0d dc bd 4b 00    	mov    0x4bbddc,%ecx
4098bd:	8b 70 04             	mov    0x4(%eax),%esi
4098c0:	2b 30                	sub    (%eax),%esi
4098c2:	89 44 24 6c          	mov    %eax,0x6c(%esp)
4098c6:	8d 04 75 02 00 00 00 	lea    0x2(,%esi,2),%eax
4098cd:	50                   	push   %eax
4098ce:	81 f9 34 af 40 00    	cmp    $0x40af34,%ecx
4098d4:	0f 85 1c 2f 07 00    	jne    0x47c7f6
4098da:	e8 7d a0 01 00       	call   0x42395c
4098df:	8b c8                	mov    %eax,%ecx
4098e1:	89 4c 24 48          	mov    %ecx,0x48(%esp)
4098e5:	83 c4 04             	add    $0x4,%esp
4098e8:	85 c9                	test   %ecx,%ecx
4098ea:	0f 84 34 02 00 00    	je     0x409b24
4098f0:	8b 54 24 40          	mov    0x40(%esp),%edx
4098f4:	8d 04 36             	lea    (%esi,%esi,1),%eax
4098f7:	50                   	push   %eax
4098f8:	8b 44 24 70          	mov    0x70(%esp),%eax
4098fc:	8b 00                	mov    (%eax),%eax
4098fe:	8d 04 42             	lea    (%edx,%eax,2),%eax
409901:	50                   	push   %eax
409902:	51                   	push   %ecx
409903:	e8 78 55 01 00       	call   0x41ee80
409908:	8b 44 24 50          	mov    0x50(%esp),%eax
40990c:	33 c9                	xor    %ecx,%ecx
40990e:	83 c4 0c             	add    $0xc,%esp
409911:	66 89 0c 70          	mov    %cx,(%eax,%esi,2)
409915:	89 44 24 10          	mov    %eax,0x10(%esp)
409919:	85 f6                	test   %esi,%esi
40991b:	0f 84 eb 2e 07 00    	je     0x47c80c
409921:	83 fe ff             	cmp    $0xffffffff,%esi
409924:	0f 84 e2 2e 07 00    	je     0x47c80c
40992a:	85 c0                	test   %eax,%eax
40992c:	0f 84 da 2e 07 00    	je     0x47c80c
409932:	8b 03                	mov    (%ebx),%eax
409934:	83 f8 01             	cmp    $0x1,%eax
409937:	0f 8e b1 01 00 00    	jle    0x409aee
40993d:	48                   	dec    %eax
40993e:	6a 04                	push   $0x4
409940:	89 03                	mov    %eax,(%ebx)
409942:	e8 a3 5b 01 00       	call   0x41f4ea
409947:	8b d8                	mov    %eax,%ebx
409949:	83 c4 04             	add    $0x4,%esp
40994c:	85 db                	test   %ebx,%ebx
40994e:	0f 84 e4 01 00 00    	je     0x409b38
409954:	c7 03 01 00 00 00    	movl   $0x1,(%ebx)
40995a:	8d 46 01             	lea    0x1(%esi),%eax
40995d:	89 5c 24 34          	mov    %ebx,0x34(%esp)
409961:	85 c0                	test   %eax,%eax
409963:	0f 84 d6 01 00 00    	je     0x409b3f
409969:	83 c0 07             	add    $0x7,%eax
40996c:	83 e0 f8             	and    $0xfffffff8,%eax
40996f:	33 c9                	xor    %ecx,%ecx
409971:	89 44 24 30          	mov    %eax,0x30(%esp)
409975:	ba 02 00 00 00       	mov    $0x2,%edx
40997a:	f7 e2                	mul    %edx
40997c:	0f 90 c1             	seto   %cl
40997f:	f7 d9                	neg    %ecx
409981:	0b c8                	or     %eax,%ecx
409983:	51                   	push   %ecx
409984:	e8 61 5b 01 00       	call   0x41f4ea
409989:	83 c4 04             	add    $0x4,%esp
40998c:	89 44 24 28          	mov    %eax,0x28(%esp)
409990:	89 74 24 2c          	mov    %esi,0x2c(%esp)
409994:	03 f6                	add    %esi,%esi
409996:	56                   	push   %esi
409997:	ff 74 24 14          	push   0x14(%esp)
40999b:	50                   	push   %eax
40999c:	e8 df 54 01 00       	call   0x41ee80
4099a1:	8b 44 24 34          	mov    0x34(%esp),%eax
4099a5:	83 c4 0c             	add    $0xc,%esp
4099a8:	33 c9                	xor    %ecx,%ecx
4099aa:	66 89 0c 06          	mov    %cx,(%esi,%eax,1)
4099ae:	a1 0c b8 4b 00       	mov    0x4bb80c,%eax
4099b3:	ff 74 24 10          	push   0x10(%esp)
4099b7:	3d 3d af 40 00       	cmp    $0x40af3d,%eax
4099bc:	0f 85 87 01 00 00    	jne    0x409b49
4099c2:	e8 d6 82 01 00       	call   0x421c9d
4099c7:	8b 74 24 24          	mov    0x24(%esp),%esi
4099cb:	83 c4 04             	add    $0x4,%esp
4099ce:	8b 44 24 3c          	mov    0x3c(%esp),%eax
4099d2:	3b f0                	cmp    %eax,%esi
4099d4:	74 5a                	je     0x409a30
4099d6:	6a 10                	push   $0x10
4099d8:	e8 0d 5b 01 00       	call   0x41f4ea
4099dd:	83 c4 04             	add    $0x4,%esp
4099e0:	85 c0                	test   %eax,%eax
4099e2:	0f 84 68 01 00 00    	je     0x409b50
4099e8:	8b 4c 24 28          	mov    0x28(%esp),%ecx
4099ec:	89 08                	mov    %ecx,(%eax)
4099ee:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
4099f2:	89 48 04             	mov    %ecx,0x4(%eax)
4099f5:	8b 4c 24 30          	mov    0x30(%esp),%ecx
4099f9:	89 48 08             	mov    %ecx,0x8(%eax)
4099fc:	89 58 0c             	mov    %ebx,0xc(%eax)
4099ff:	ff 03                	incl   (%ebx)
409a01:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
409a05:	46                   	inc    %esi
409a06:	89 44 b1 fc          	mov    %eax,-0x4(%ecx,%esi,4)
409a0a:	8b 4c 24 58          	mov    0x58(%esp),%ecx
409a0e:	47                   	inc    %edi
409a0f:	83 c1 08             	add    $0x8,%ecx
409a12:	89 74 24 20          	mov    %esi,0x20(%esp)
409a16:	89 4c 24 58          	mov    %ecx,0x58(%esp)
409a1a:	3b 7c 24 38          	cmp    0x38(%esp),%edi
409a1e:	0f 83 93 fd ff ff    	jae    0x4097b7
409a24:	8b 84 24 a4 00 00 00 	mov    0xa4(%esp),%eax
409a2b:	e9 66 fe ff ff       	jmp    0x409896
409a30:	03 c0                	add    %eax,%eax
409a32:	89 44 24 3c          	mov    %eax,0x3c(%esp)
409a36:	83 f8 08             	cmp    $0x8,%eax
409a39:	0f 82 c6 00 00 00    	jb     0x409b05
409a3f:	33 c9                	xor    %ecx,%ecx
409a41:	89 44 24 24          	mov    %eax,0x24(%esp)
409a45:	ba 04 00 00 00       	mov    $0x4,%edx
409a4a:	f7 e2                	mul    %edx
409a4c:	0f 90 c1             	seto   %cl
409a4f:	f7 d9                	neg    %ecx
409a51:	0b c8                	or     %eax,%ecx
409a53:	51                   	push   %ecx
409a54:	e8 91 5a 01 00       	call   0x41f4ea
409a59:	8b 54 24 20          	mov    0x20(%esp),%edx
409a5d:	83 c4 04             	add    $0x4,%esp
409a60:	89 44 24 40          	mov    %eax,0x40(%esp)
409a64:	85 d2                	test   %edx,%edx
409a66:	74 26                	je     0x409a8e
409a68:	85 f6                	test   %esi,%esi
409a6a:	74 22                	je     0x409a8e
409a6c:	8d 0c b5 00 00 00 00 	lea    0x0(,%esi,4),%ecx
409a73:	51                   	push   %ecx
409a74:	52                   	push   %edx
409a75:	50                   	push   %eax
409a76:	e8 05 54 01 00       	call   0x41ee80
409a7b:	83 c4 0c             	add    $0xc,%esp
409a7e:	ff 74 24 1c          	push   0x1c(%esp)
409a82:	e8 d7 5a 01 00       	call   0x41f55e
409a87:	8b 44 24 44          	mov    0x44(%esp),%eax
409a8b:	83 c4 04             	add    $0x4,%esp
409a8e:	89 44 24 1c          	mov    %eax,0x1c(%esp)
409a92:	e9 3f ff ff ff       	jmp    0x4099d6
409a97:	bf 01 00 00 00       	mov    $0x1,%edi
409a9c:	e9 de fd ff ff       	jmp    0x40987f
409aa1:	83 bc 24 a8 00 00 00 	cmpl   $0x0,0xa8(%esp)
409aa8:	00
409aa9:	0f 85 f0 2c 07 00    	jne    0x47c79f
409aaf:	8b 44 24 20          	mov    0x20(%esp),%eax
409ab3:	85 c0                	test   %eax,%eax
409ab5:	0f 84 67 2d 07 00    	je     0x47c822
409abb:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409abe:	8d 44 24 18          	lea    0x18(%esp),%eax
409ac2:	50                   	push   %eax
409ac3:	e8 78 90 00 00       	call   0x412b40
409ac8:	8d 4c 24 18          	lea    0x18(%esp),%ecx
409acc:	e8 21 b9 ff ff       	call   0x4053f2
409ad1:	8d 4c 24 28          	lea    0x28(%esp),%ecx
409ad5:	e8 5d 30 00 00       	call   0x40cb37
409ada:	8d 4c 24 70          	lea    0x70(%esp),%ecx
409ade:	e8 37 f3 ff ff       	call   0x408e1a
409ae3:	5f                   	pop    %edi
409ae4:	5e                   	pop    %esi
409ae5:	33 c0                	xor    %eax,%eax
409ae7:	5b                   	pop    %ebx
409ae8:	8b e5                	mov    %ebp,%esp
409aea:	5d                   	pop    %ebp
409aeb:	c2 08 00             	ret    $0x8
409aee:	56                   	push   %esi
409aef:	8d 4c 24 2c          	lea    0x2c(%esp),%ecx
409af3:	e8 71 28 00 00       	call   0x40c369
409af8:	8b 5c 24 34          	mov    0x34(%esp),%ebx
409afc:	8b 44 24 28          	mov    0x28(%esp),%eax
409b00:	e9 8b fe ff ff       	jmp    0x409990
409b05:	b8 08 00 00 00       	mov    $0x8,%eax
409b0a:	89 44 24 3c          	mov    %eax,0x3c(%esp)
409b0e:	e9 2c ff ff ff       	jmp    0x409a3f
409b13:	33 f6                	xor    %esi,%esi
409b15:	e9 1f fc ff ff       	jmp    0x409739
409b1a:	b8 01 00 00 00       	mov    $0x1,%eax
409b1f:	e9 2c fc ff ff       	jmp    0x409750
409b24:	be fa ff ff ff       	mov    $0xfffffffa,%esi
409b29:	e9 d5 2c 07 00       	jmp    0x47c803
409b2e:	be f9 ff ff ff       	mov    $0xfffffff9,%esi
409b33:	e9 cb 2c 07 00       	jmp    0x47c803
409b38:	33 db                	xor    %ebx,%ebx
409b3a:	e9 1b fe ff ff       	jmp    0x40995a
409b3f:	b8 08 00 00 00       	mov    $0x8,%eax
409b44:	e9 26 fe ff ff       	jmp    0x40996f
409b49:	ff d0                	call   *%eax
409b4b:	e9 77 fe ff ff       	jmp    0x4099c7
409b50:	33 c0                	xor    %eax,%eax
409b52:	e9 aa fe ff ff       	jmp    0x409a01
409b57:	cc                   	int3
409b58:	cc                   	int3
409b59:	cc                   	int3
409b5a:	cc                   	int3
409b5b:	cc                   	int3
409b5c:	cc                   	int3
409b5d:	cc                   	int3
409b5e:	cc                   	int3
409b5f:	cc                   	int3
409b60:	55                   	push   %ebp
409b61:	8b ec                	mov    %esp,%ebp
409b63:	81 ec 14 01 00 00    	sub    $0x114,%esp
409b69:	53                   	push   %ebx
409b6a:	56                   	push   %esi
409b6b:	8b 75 10             	mov    0x10(%ebp),%esi
409b6e:	8b d9                	mov    %ecx,%ebx
409b70:	8b 4d 08             	mov    0x8(%ebp),%ecx
409b73:	8d 04 36             	lea    (%esi,%esi,1),%eax
409b76:	89 85 f0 fe ff ff    	mov    %eax,-0x110(%ebp)
409b7c:	03 c1                	add    %ecx,%eax
409b7e:	89 85 fc fe ff ff    	mov    %eax,-0x104(%ebp)
409b84:	89 45 fc             	mov    %eax,-0x4(%ebp)
409b87:	83 c0 fe             	add    $0xfffffffe,%eax
409b8a:	57                   	push   %edi
409b8b:	8b 7d 0c             	mov    0xc(%ebp),%edi
409b8e:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
409b95:	c7 45 dc 00 00 00 00 	movl   $0x0,-0x24(%ebp)
409b9c:	c7 85 f4 fe ff ff 00 	movl   $0x0,-0x10c(%ebp)
409ba3:	00 00 00
409ba6:	c7 45 cc 00 00 00 00 	movl   $0x0,-0x34(%ebp)
409bad:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
409bb4:	c7 85 04 ff ff ff 00 	movl   $0x0,-0xfc(%ebp)
409bbb:	00 00 00
409bbe:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
409bc5:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
409bcc:	c7 85 00 ff ff ff 00 	movl   $0x0,-0x100(%ebp)
409bd3:	00 00 00
409bd6:	89 85 f8 fe ff ff    	mov    %eax,-0x108(%ebp)
409bdc:	85 db                	test   %ebx,%ebx
409bde:	0f 84 da 1f 08 00    	je     0x48bbbe
409be4:	8b 55 14             	mov    0x14(%ebp),%edx
409be7:	f7 c2 6f 5a 0f e2    	test   $0xe20f5a6f,%edx
409bed:	0f 85 fb 1f 08 00    	jne    0x48bbee
409bf3:	85 db                	test   %ebx,%ebx
409bf5:	0f 84 05 20 08 00    	je     0x48bc00
409bfb:	85 c9                	test   %ecx,%ecx
409bfd:	0f 84 fd 1f 08 00    	je     0x48bc00
409c03:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
409c07:	8b 45 1c             	mov    0x1c(%ebp),%eax
409c0a:	0f 84 e8 1f 08 00    	je     0x48bbf8
409c10:	85 c0                	test   %eax,%eax
409c12:	0f 88 f2 1f 08 00    	js     0x48bc0a
409c18:	85 ff                	test   %edi,%edi
409c1a:	0f 88 f4 1f 08 00    	js     0x48bc14
409c20:	85 f6                	test   %esi,%esi
409c22:	0f 88 72 28 08 00    	js     0x48c49a
409c28:	3b f7                	cmp    %edi,%esi
409c2a:	0f 8f 6a 28 08 00    	jg     0x48c49a
409c30:	8b 03                	mov    (%ebx),%eax
409c32:	3d 45 52 43 50       	cmp    $0x50435245,%eax
409c37:	0f 85 e1 1f 08 00    	jne    0x48bc1e
409c3d:	f6 43 0c 02          	testb  $0x2,0xc(%ebx)
409c41:	0f 84 eb 1f 08 00    	je     0x48bc32
409c47:	8b 4b 08             	mov    0x8(%ebx),%ecx
409c4a:	f7 c1 00 08 00 00    	test   $0x800,%ecx
409c50:	0f 84 f7 05 00 00    	je     0x40a24d
409c56:	b8 01 00 00 00       	mov    $0x1,%eax
409c5b:	89 45 f4             	mov    %eax,-0xc(%ebp)
409c5e:	89 85 58 ff ff ff    	mov    %eax,-0xa8(%ebp)
409c64:	f7 c2 00 00 00 08    	test   $0x8000000,%edx
409c6a:	0f 85 e4 05 00 00    	jne    0x40a254
409c70:	f7 c2 00 80 00 00    	test   $0x8000,%edx
409c76:	0f 85 e2 05 00 00    	jne    0x40a25e
409c7c:	33 c0                	xor    %eax,%eax
409c7e:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
409c82:	89 45 94             	mov    %eax,-0x6c(%ebp)
409c85:	74 0c                	je     0x409c93
409c87:	f7 c2 00 20 00 00    	test   $0x2000,%edx
409c8d:	0f 84 a9 1f 08 00    	je     0x48bc3c
409c93:	f7 43 0c 00 20 00 00 	testl  $0x2000,0xc(%ebx)
409c9a:	0f b7 43 22          	movzwl 0x22(%ebx),%eax
409c9e:	0f b7 53 24          	movzwl 0x24(%ebx),%edx
409ca2:	8d 04 43             	lea    (%ebx,%eax,2),%eax
409ca5:	89 85 38 ff ff ff    	mov    %eax,-0xc8(%ebp)
409cab:	0f b7 43 26          	movzwl 0x26(%ebx),%eax
409caf:	89 85 28 ff ff ff    	mov    %eax,-0xd8(%ebp)
409cb5:	8b 43 30             	mov    0x30(%ebx),%eax
409cb8:	89 95 2c ff ff ff    	mov    %edx,-0xd4(%ebp)
409cbe:	c7 85 0c ff ff ff 80 	movl   $0x989680,-0xf4(%ebp)
409cc5:	96 98 00
409cc8:	c7 85 10 ff ff ff 80 	movl   $0x989680,-0xf0(%ebp)
409ccf:	96 98 00
409cd2:	c7 45 b4 00 00 00 00 	movl   $0x0,-0x4c(%ebp)
409cd9:	89 45 ec             	mov    %eax,-0x14(%ebp)
409cdc:	0f 85 d3 1f 08 00    	jne    0x48bcb5
409ce2:	f7 43 0c 00 40 00 00 	testl  $0x4000,0xc(%ebx)
409ce9:	0f 85 e4 1f 08 00    	jne    0x48bcd3
409cef:	85 c0                	test   %eax,%eax
409cf1:	75 08                	jne    0x409cfb
409cf3:	b8 e0 e7 4a 00       	mov    $0x4ae7e0,%eax
409cf8:	89 45 ec             	mov    %eax,-0x14(%ebp)
409cfb:	8b c1                	mov    %ecx,%eax
409cfd:	0b 45 14             	or     0x14(%ebp),%eax
409d00:	a8 10                	test   $0x10,%al
409d02:	0f 85 ec 1f 08 00    	jne    0x48bcf4
409d08:	c7 45 c8 00 00 00 00 	movl   $0x0,-0x38(%ebp)
409d0f:	f7 43 0c 00 01 00 00 	testl  $0x100,0xc(%ebx)
409d16:	0f 85 e4 1f 08 00    	jne    0x48bd00
409d1c:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
409d23:	f7 c1 00 00 04 00    	test   $0x40000,%ecx
409d29:	0f 85 dd 1f 08 00    	jne    0x48bd0c
409d2f:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
409d36:	0f b7 43 26          	movzwl 0x26(%ebx),%eax
409d3a:	0f af d0             	imul   %eax,%edx
409d3d:	0f b7 43 22          	movzwl 0x22(%ebx),%eax
409d41:	03 d0                	add    %eax,%edx
409d43:	89 75 a0             	mov    %esi,-0x60(%ebp)
409d46:	8d 04 53             	lea    (%ebx,%edx,2),%eax
409d49:	89 85 7c ff ff ff    	mov    %eax,-0x84(%ebp)
409d4f:	8b 45 08             	mov    0x8(%ebp),%eax
409d52:	89 45 80             	mov    %eax,-0x80(%ebp)
409d55:	8d 04 78             	lea    (%eax,%edi,2),%eax
409d58:	89 45 84             	mov    %eax,-0x7c(%ebp)
409d5b:	89 45 f8             	mov    %eax,-0x8(%ebp)
409d5e:	f6 c1 20             	test   $0x20,%cl