54f752:	e8 69 87 eb ff       	call   0x407ec0
54f757:	33 ff                	xor    %edi,%edi
54f759:	8d 04 7f             	lea    (%edi,%edi,2),%eax
54f75c:	8b 55 cc             	mov    -0x34(%ebp),%edx
54f75f:	03 d0                	add    %eax,%edx
54f761:	8d 04 7f             	lea    (%edi,%edi,2),%eax
54f764:	8b 4d cc             	mov    -0x34(%ebp),%ecx
54f767:	8d 44 01 02          	lea    0x2(%ecx,%eax,1),%eax
54f76b:	e8 0c 9d 05 00       	call   0x5a947c
54f770:	47                   	inc    %edi
54f771:	81 ff 00 01 00 00    	cmp    $0x100,%edi
54f777:	75 e0                	jne    0x54f759
54f779:	8b 45 d0             	mov    -0x30(%ebp),%eax
54f77c:	80 78 0c 00          	cmpb   $0x0,0xc(%eax)
54f780:	75 15                	jne    0x54f797
54f782:	68 00 01 00 00       	push   $0x100
54f787:	8b 4d cc             	mov    -0x34(%ebp),%ecx
54f78a:	8b 55 f0             	mov    -0x10(%ebp),%edx
54f78d:	8b 45 f4             	mov    -0xc(%ebp),%eax
54f790:	e8 13 13 00 00       	call   0x550aa8
54f795:	eb 11                	jmp    0x54f7a8
54f797:	33 c0                	xor    %eax,%eax
54f799:	89 45 e4             	mov    %eax,-0x1c(%ebp)
54f79c:	eb 0a                	jmp    0x54f7a8
54f79e:	33 c0                	xor    %eax,%eax
54f7a0:	89 45 d0             	mov    %eax,-0x30(%ebp)
54f7a3:	33 c0                	xor    %eax,%eax
54f7a5:	89 45 cc             	mov    %eax,-0x34(%ebp)
54f7a8:	8b 45 f8             	mov    -0x8(%ebp),%eax
54f7ab:	8b 10                	mov    (%eax),%edx
54f7ad:	ff 52 08             	call   *0x8(%edx)
54f7b0:	50                   	push   %eax
54f7b1:	8b 45 e8             	mov    -0x18(%ebp),%eax
54f7b4:	50                   	push   %eax
54f7b5:	8b 45 e4             	mov    -0x1c(%ebp),%eax
54f7b8:	50                   	push   %eax
54f7b9:	8b 45 e0             	mov    -0x20(%ebp),%eax
54f7bc:	50                   	push   %eax
54f7bd:	6a 00                	push   $0x0
54f7bf:	6a 00                	push   $0x0
54f7c1:	8b 45 f8             	mov    -0x8(%ebp),%eax
54f7c4:	8b 10                	mov    (%eax),%edx
54f7c6:	ff 52 0c             	call   *0xc(%edx)
54f7c9:	8b c8                	mov    %eax,%ecx
54f7cb:	8b 55 f0             	mov    -0x10(%ebp),%edx
54f7ce:	8b 45 f4             	mov    -0xc(%ebp),%eax
54f7d1:	e8 96 0e 00 00       	call   0x55066c
54f7d6:	8b 03                	mov    (%ebx),%eax
54f7d8:	6b 40 20 64          	imul   $0x64,0x20(%eax),%eax
54f7dc:	89 85 fc fb ff ff    	mov    %eax,-0x404(%ebp)
54f7e2:	db 85 fc fb ff ff    	fildl  -0x404(%ebp)
54f7e8:	db 2d 44 00 55 00    	fldt   0x550044
54f7ee:	de f9                	fdivrp %st,%st(1)
54f7f0:	e8 cb 34 eb ff       	call   0x402cc0
54f7f5:	50                   	push   %eax
54f7f6:	6a 01                	push   $0x1
54f7f8:	8b 03                	mov    (%ebx),%eax
54f7fa:	6b 40 1c 64          	imul   $0x64,0x1c(%eax),%eax
54f7fe:	89 85 f8 fb ff ff    	mov    %eax,-0x408(%ebp)
54f804:	db 85 f8 fb ff ff    	fildl  -0x408(%ebp)
54f80a:	db 2d 44 00 55 00    	fldt   0x550044
54f810:	de f9                	fdivrp %st,%st(1)
54f812:	e8 a9 34 eb ff       	call   0x402cc0
54f817:	8b c8                	mov    %eax,%ecx
54f819:	8b 55 f0             	mov    -0x10(%ebp),%edx
54f81c:	8b 45 f4             	mov    -0xc(%ebp),%eax
54f81f:	e8 5c 12 00 00       	call   0x550a80
54f824:	8b 03                	mov    (%ebx),%eax
54f826:	8a 80 1f 01 00 00    	mov    0x11f(%eax),%al
54f82c:	2c 01                	sub    $0x1,%al
54f82e:	72 08                	jb     0x54f838
54f830:	74 17                	je     0x54f849
54f832:	fe c8                	dec    %al
54f834:	74 24                	je     0x54f85a
54f836:	eb 31                	jmp    0x54f869
54f838:	b9 08 00 00 00       	mov    $0x8,%ecx
54f83d:	33 d2                	xor    %edx,%edx
54f83f:	8b 45 f4             	mov    -0xc(%ebp),%eax
54f842:	e8 b1 32 00 00       	call   0x552af8
54f847:	eb 20                	jmp    0x54f869
54f849:	b9 10 00 00 00       	mov    $0x10,%ecx
54f84e:	33 d2                	xor    %edx,%edx
54f850:	8b 45 f4             	mov    -0xc(%ebp),%eax
54f853:	e8 a0 32 00 00       	call   0x552af8
54f858:	eb 0f                	jmp    0x54f869
54f85a:	b9 80 00 00 00       	mov    $0x80,%ecx
54f85f:	33 d2                	xor    %edx,%edx
54f861:	8b 45 f4             	mov    -0xc(%ebp),%eax
54f864:	e8 8f 32 00 00       	call   0x552af8
54f869:	8d 45 c3             	lea    -0x3d(%ebp),%eax
54f86c:	ba 09 00 00 00       	mov    $0x9,%edx
54f871:	e8 5e 86 eb ff       	call   0x407ed4
54f876:	83 7d d0 00          	cmpl   $0x0,-0x30(%ebp)
54f87a:	74 20                	je     0x54f89c
54f87c:	8b 03                	mov    (%ebx),%eax
54f87e:	8a 90 1e 01 00 00    	mov    0x11e(%eax),%dl
54f884:	c1 e2 10             	shl    $0x10,%edx
54f887:	66 8b 90 1c 01 00 00 	mov    0x11c(%eax),%dx
54f88e:	52                   	push   %edx
54f88f:	8b 45 d0             	mov    -0x30(%ebp),%eax
54f892:	e8 09 03 ff ff       	call   0x53fba0
54f897:	88 45 c3             	mov    %al,-0x3d(%ebp)
54f89a:	eb 3c                	jmp    0x54f8d8
54f89c:	8b 03                	mov    (%ebx),%eax
54f89e:	0f b6 80 1e 01 00 00 	movzbl 0x11e(%eax),%eax
54f8a5:	8b d0                	mov    %eax,%edx
54f8a7:	c1 e0 08             	shl    $0x8,%eax
54f8aa:	03 c2                	add    %edx,%eax
54f8ac:	66 89 45 c4          	mov    %ax,-0x3c(%ebp)
54f8b0:	8b 03                	mov    (%ebx),%eax
54f8b2:	0f b6 80 1d 01 00 00 	movzbl 0x11d(%eax),%eax
54f8b9:	8b d0                	mov    %eax,%edx
54f8bb:	c1 e0 08             	shl    $0x8,%eax
54f8be:	03 c2                	add    %edx,%eax
54f8c0:	66 89 45 c6          	mov    %ax,-0x3a(%ebp)
54f8c4:	8b 03                	mov    (%ebx),%eax
54f8c6:	0f b6 80 1c 01 00 00 	movzbl 0x11c(%eax),%eax
54f8cd:	8b d0                	mov    %eax,%edx
54f8cf:	c1 e0 08             	shl    $0x8,%eax
54f8d2:	03 c2                	add    %edx,%eax
54f8d4:	66 89 45 c8          	mov    %ax,-0x38(%ebp)
54f8d8:	8d 4d c3             	lea    -0x3d(%ebp),%ecx
54f8db:	8b 55 f0             	mov    -0x10(%ebp),%edx
54f8de:	8b 45 f4             	mov    -0xc(%ebp),%eax
54f8e1:	e8 6e 07 00 00       	call   0x550054
54f8e6:	8b 03                	mov    (%ebx),%eax
54f8e8:	8b 90 20 01 00 00    	mov    0x120(%eax),%edx
54f8ee:	8b 45 f4             	mov    -0xc(%ebp),%eax
54f8f1:	e8 1e 36 00 00       	call   0x552f14
54f8f6:	8b 45 f4             	mov    -0xc(%ebp),%eax
54f8f9:	e8 e2 1c 00 00       	call   0x5515e0
54f8fe:	8b 03                	mov    (%ebx),%eax
54f900:	8b 80 28 01 00 00    	mov    0x128(%eax),%eax
54f906:	8b 10                	mov    (%eax),%edx
54f908:	ff 52 14             	call   *0x14(%edx)
54f90b:	50                   	push   %eax
54f90c:	8b 03                	mov    (%ebx),%eax
54f90e:	8b 80 24 01 00 00    	mov    0x124(%eax),%eax
54f914:	8b 10                	mov    (%eax),%edx
54f916:	ff 52 14             	call   *0x14(%edx)
54f919:	5a                   	pop    %edx
54f91a:	e8 fd 9a 05 00       	call   0x5a941c
54f91f:	89 85 40 ff ff ff    	mov    %eax,-0xc0(%ebp)
54f925:	8b 85 40 ff ff ff    	mov    -0xc0(%ebp),%eax
54f92b:	c1 e0 04             	shl    $0x4,%eax
54f92e:	e8 79 2e eb ff       	call   0x4027ac
54f933:	89 85 48 ff ff ff    	mov    %eax,-0xb8(%ebp)
54f939:	8b 85 48 ff ff ff    	mov    -0xb8(%ebp),%eax
54f93f:	89 85 44 ff ff ff    	mov    %eax,-0xbc(%ebp)
54f945:	8b 85 40 ff ff ff    	mov    -0xc0(%ebp),%eax
54f94b:	48                   	dec    %eax
54f94c:	85 c0                	test   %eax,%eax
54f94e:	0f 8c bd 00 00 00    	jl     0x54fa11
54f954:	40                   	inc    %eax
54f955:	89 85 38 ff ff ff    	mov    %eax,-0xc8(%ebp)
54f95b:	c7 85 64 ff ff ff 00 	movl   $0x0,-0x9c(%ebp)
54f962:	00 00 00
54f965:	8b 85 44 ff ff ff    	mov    -0xbc(%ebp),%eax
54f96b:	c7 00 ff ff ff ff    	movl   $0xffffffff,(%eax)
54f971:	8d 8d f4 fb ff ff    	lea    -0x40c(%ebp),%ecx
54f977:	8b 03                	mov    (%ebx),%eax
54f979:	8b 80 24 01 00 00    	mov    0x124(%eax),%eax
54f97f:	8b 95 64 ff ff ff    	mov    -0x9c(%ebp),%edx
54f985:	8b 38                	mov    (%eax),%edi
54f987:	ff 57 0c             	call   *0xc(%edi)
54f98a:	8b 85 f4 fb ff ff    	mov    -0x40c(%ebp),%eax
54f990:	e8 83 53 eb ff       	call   0x404d18
54f995:	8b 95 44 ff ff ff    	mov    -0xbc(%ebp),%edx
54f99b:	89 42 04             	mov    %eax,0x4(%edx)
54f99e:	8d 8d f0 fb ff ff    	lea    -0x410(%ebp),%ecx
54f9a4:	8b 03                	mov    (%ebx),%eax
54f9a6:	8b 80 28 01 00 00    	mov    0x128(%eax),%eax
54f9ac:	8b 95 64 ff ff ff    	mov    -0x9c(%ebp),%edx
54f9b2:	8b 38                	mov    (%eax),%edi
54f9b4:	ff 57 0c             	call   *0xc(%edi)
54f9b7:	8b 85 f0 fb ff ff    	mov    -0x410(%ebp),%eax
54f9bd:	e8 56 53 eb ff       	call   0x404d18
54f9c2:	8b 95 44 ff ff ff    	mov    -0xbc(%ebp),%edx
54f9c8:	89 42 08             	mov    %eax,0x8(%edx)
54f9cb:	8d 8d ec fb ff ff    	lea    -0x414(%ebp),%ecx
54f9d1:	8b 03                	mov    (%ebx),%eax
54f9d3:	8b 80 28 01 00 00    	mov    0x128(%eax),%eax
54f9d9:	8b 95 64 ff ff ff    	mov    -0x9c(%ebp),%edx
54f9df:	8b 38                	mov    (%eax),%edi
54f9e1:	ff 57 0c             	call   *0xc(%edi)
54f9e4:	8b 85 ec fb ff ff    	mov    -0x414(%ebp),%eax
54f9ea:	e8 31 51 eb ff       	call   0x404b20
54f9ef:	8b 95 44 ff ff ff    	mov    -0xbc(%ebp),%edx
54f9f5:	89 42 0c             	mov    %eax,0xc(%edx)
54f9f8:	83 85 44 ff ff ff 10 	addl   $0x10,-0xbc(%ebp)
54f9ff:	ff 85 64 ff ff ff    	incl   -0x9c(%ebp)
54fa05:	ff 8d 38 ff ff ff    	decl   -0xc8(%ebp)
54fa0b:	0f 85 54 ff ff ff    	jne    0x54f965
54fa11:	8b 85 40 ff ff ff    	mov    -0xc0(%ebp),%eax
54fa17:	50                   	push   %eax
54fa18:	8b 8d 48 ff ff ff    	mov    -0xb8(%ebp),%ecx
54fa1e:	8b 55 f0             	mov    -0x10(%ebp),%edx
54fa21:	8b 45 f4             	mov    -0xc(%ebp),%eax
54fa24:	e8 5f 13 00 00       	call   0x550d88
54fa29:	8b 55 f0             	mov    -0x10(%ebp),%edx
54fa2c:	8b 45 f4             	mov    -0xc(%ebp),%eax
54fa2f:	e8 c4 25 00 00       	call   0x551ff8
54fa34:	8b 45 f4             	mov    -0xc(%ebp),%eax
54fa37:	e8 00 1c 00 00       	call   0x55163c
54fa3c:	89 45 bc             	mov    %eax,-0x44(%ebp)
54fa3f:	8b 45 dc             	mov    -0x24(%ebp),%eax
54fa42:	8b 10                	mov    (%eax),%edx
54fa44:	ff 52 08             	call   *0x8(%edx)
54fa47:	89 45 b0             	mov    %eax,-0x50(%ebp)
54fa4a:	8b 45 dc             	mov    -0x24(%ebp),%eax
54fa4d:	8b 10                	mov    (%eax),%edx
54fa4f:	ff 52 0c             	call   *0xc(%edx)
54fa52:	89 45 ac             	mov    %eax,-0x54(%ebp)
54fa55:	8b 45 b0             	mov    -0x50(%ebp),%eax
54fa58:	f7 6d bc             	imull  -0x44(%ebp)
54fa5b:	89 85 fc fb ff ff    	mov    %eax,-0x404(%ebp)
54fa61:	db 85 fc fb ff ff    	fildl  -0x404(%ebp)
54fa67:	d8 3d 50 00 55 00    	fdivrs 0x550050
54fa6d:	dd 5e 18             	fstpl  0x18(%esi)
54fa70:	9b                   	fwait
54fa71:	33 c0                	xor    %eax,%eax
54fa73:	89 46 0c             	mov    %eax,0xc(%esi)
54fa76:	33 c0                	xor    %eax,%eax
54fa78:	89 45 8c             	mov    %eax,-0x74(%ebp)
54fa7b:	83 7d e4 03          	cmpl   $0x3,-0x1c(%ebp)
54fa7f:	74 06                	je     0x54fa87
54fa81:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
54fa85:	75 2e                	jne    0x54fab5
54fa87:	8b 45 dc             	mov    -0x24(%ebp),%eax
54fa8a:	8b 10                	mov    (%eax),%edx
54fa8c:	ff 52 0c             	call   *0xc(%edx)
54fa8f:	8b d8                	mov    %eax,%ebx
54fa91:	8b 55 e8             	mov    -0x18(%ebp),%edx
54fa94:	85 d2                	test   %edx,%edx
54fa96:	79 03                	jns    0x54fa9b
54fa98:	83 c2 07             	add    $0x7,%edx
54fa9b:	c1 fa 03             	sar    $0x3,%edx
54fa9e:	b8 01 00 00 00       	mov    $0x1,%eax
54faa3:	e8 6c 99 05 00       	call   0x5a9414
54faa8:	0f af d8             	imul   %eax,%ebx
54faab:	8b c3                	mov    %ebx,%eax
54faad:	e8 fa 2c eb ff       	call   0x4027ac
54fab2:	89 45 a8             	mov    %eax,-0x58(%ebp)
54fab5:	f6 45 e4 04          	testb  $0x4,-0x1c(%ebp)
54fab9:	74 13                	je     0x54face
54fabb:	8b 45 dc             	mov    -0x24(%ebp),%eax
54fabe:	8b 10                	mov    (%eax),%edx
54fac0:	ff 52 0c             	call   *0xc(%edx)
54fac3:	c1 e0 02             	shl    $0x2,%eax
54fac6:	e8 e1 2c eb ff       	call   0x4027ac
54facb:	89 45 8c             	mov    %eax,-0x74(%ebp)
54face:	8b 45 bc             	mov    -0x44(%ebp),%eax
54fad1:	48                   	dec    %eax
54fad2:	85 c0                	test   %eax,%eax
54fad4:	0f 8c aa 04 00 00    	jl     0x54ff84
54fada:	40                   	inc    %eax
54fadb:	89 85 38 ff ff ff    	mov    %eax,-0xc8(%ebp)
54fae1:	c7 45 b8 00 00 00 00 	movl   $0x0,-0x48(%ebp)
54fae8:	8b 45 b0             	mov    -0x50(%ebp),%eax
54faeb:	48                   	dec    %eax
54faec:	85 c0                	test   %eax,%eax
54faee:	0f 8c 79 04 00 00    	jl     0x54ff6d
54faf4:	40                   	inc    %eax
54faf5:	89 85 34 ff ff ff    	mov    %eax,-0xcc(%ebp)
54fafb:	c7 45 b4 00 00 00 00 	movl   $0x0,-0x4c(%ebp)
54fb02:	f6 45 e4 01          	testb  $0x1,-0x1c(%ebp)
54fb06:	0f 84 27 02 00 00    	je     0x54fd33
54fb0c:	8b 45 a8             	mov    -0x58(%ebp),%eax
54fb0f:	89 45 a0             	mov    %eax,-0x60(%ebp)
54fb12:	8b 55 b4             	mov    -0x4c(%ebp),%edx
54fb15:	8b 45 dc             	mov    -0x24(%ebp),%eax
54fb18:	8b 08                	mov    (%eax),%ecx
54fb1a:	ff 11                	call   *(%ecx)
54fb1c:	8b f8                	mov    %eax,%edi
54fb1e:	89 7d 84             	mov    %edi,-0x7c(%ebp)
54fb21:	8b 45 dc             	mov    -0x24(%ebp),%eax
54fb24:	8b 10                	mov    (%eax),%edx
54fb26:	ff 52 0c             	call   *0xc(%edx)
54fb29:	48                   	dec    %eax
54fb2a:	89 45 98             	mov    %eax,-0x68(%ebp)
54fb2d:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
54fb31:	0f 84 92 01 00 00    	je     0x54fcc9
54fb37:	8b 45 08             	mov    0x8(%ebp),%eax
54fb3a:	80 78 68 00          	cmpb   $0x0,0x68(%eax)
54fb3e:	0f 85 85 01 00 00    	jne    0x54fcc9
54fb44:	8b 45 dc             	mov    -0x24(%ebp),%eax
54fb47:	8b 10                	mov    (%eax),%edx
54fb49:	ff 52 10             	call   *0x10(%edx)
54fb4c:	2c 02                	sub    $0x2,%al
54fb4e:	74 5b                	je     0x54fbab
54fb50:	2c 03                	sub    $0x3,%al
54fb52:	0f 85 c6 01 00 00    	jne    0x54fd1e
54fb58:	8b 55 b4             	mov    -0x4c(%ebp),%edx
54fb5b:	8b 45 08             	mov    0x8(%ebp),%eax
54fb5e:	e8 b1 4b 0a 00       	call   0x5f4714
54fb63:	89 45 80             	mov    %eax,-0x80(%ebp)
54fb66:	8b 5d 98             	mov    -0x68(%ebp),%ebx
54fb69:	85 db                	test   %ebx,%ebx
54fb6b:	0f 8c ad 01 00 00    	jl     0x54fd1e
54fb71:	43                   	inc    %ebx
54fb72:	8b 45 80             	mov    -0x80(%ebp),%eax
54fb75:	80 38 ff             	cmpb   $0xff,(%eax)
54fb78:	73 08                	jae    0x54fb82
54fb7a:	8b 45 a0             	mov    -0x60(%ebp),%eax
54fb7d:	c6 00 00             	movb   $0x0,(%eax)
54fb80:	eb 18                	jmp    0x54fb9a
54fb82:	8a 47 02             	mov    0x2(%edi),%al
54fb85:	c1 e0 10             	shl    $0x10,%eax
54fb88:	66 8b 07             	mov    (%edi),%ax
54fb8b:	50                   	push   %eax
54fb8c:	8b 45 d0             	mov    -0x30(%ebp),%eax
54fb8f:	e8 0c 00 ff ff       	call   0x53fba0
54fb94:	40                   	inc    %eax
54fb95:	8b 55 a0             	mov    -0x60(%ebp),%edx
54fb98:	88 02                	mov    %al,(%edx)
54fb9a:	ff 45 a0             	incl   -0x60(%ebp)
54fb9d:	83 c7 03             	add    $0x3,%edi
54fba0:	ff 45 80             	incl   -0x80(%ebp)
54fba3:	4b                   	dec    %ebx
54fba4:	75 cc                	jne    0x54fb72
54fba6:	e9 73 01 00 00       	jmp    0x54fd1e
54fbab:	33 c0                	xor    %eax,%eax
54fbad:	89 85 58 ff ff ff    	mov    %eax,-0xa8(%ebp)
54fbb3:	c7 85 5c ff ff ff 00 	movl   $0x40f86a00,-0xa4(%ebp)
54fbba:	6a f8 40
54fbbd:	8d 8d 4d ff ff ff    	lea    -0xb3(%ebp),%ecx
54fbc3:	33 d2                	xor    %edx,%edx
54fbc5:	8b 45 dc             	mov    -0x24(%ebp),%eax
54fbc8:	8b 18                	mov    (%eax),%ebx
54fbca:	ff 53 18             	call   *0x18(%ebx)
54fbcd:	33 c0                	xor    %eax,%eax
54fbcf:	89 85 60 ff ff ff    	mov    %eax,-0xa0(%ebp)
54fbd5:	8b 45 dc             	mov    -0x24(%ebp),%eax
54fbd8:	8b 10                	mov    (%eax),%edx
54fbda:	ff 52 20             	call   *0x20(%edx)
54fbdd:	8b d8                	mov    %eax,%ebx
54fbdf:	4b                   	dec    %ebx
54fbe0:	85 db                	test   %ebx,%ebx
54fbe2:	0f 8e b5 00 00 00    	jle    0x54fc9d
54fbe8:	c7 85 64 ff ff ff 01 	movl   $0x1,-0x9c(%ebp)
54fbef:	00 00 00
54fbf2:	8d 8d 31 ff ff ff    	lea    -0xcf(%ebp),%ecx
54fbf8:	8b 95 64 ff ff ff    	mov    -0x9c(%ebp),%edx
54fbfe:	8b 45 dc             	mov    -0x24(%ebp),%eax
54fc01:	8b 38                	mov    (%eax),%edi
54fc03:	ff 57 18             	call   *0x18(%edi)
54fc06:	33 c0                	xor    %eax,%eax
54fc08:	8a 85 33 ff ff ff    	mov    -0xcd(%ebp),%al
54fc0e:	33 d2                	xor    %edx,%edx
54fc10:	8a 95 4f ff ff ff    	mov    -0xb1(%ebp),%dl