53f6b7:	33 d2                	xor    %edx,%edx
53f6b9:	8a 50 01             	mov    0x1(%eax),%dl
53f6bc:	c1 e2 04             	shl    $0x4,%edx
53f6bf:	89 54 24 04          	mov    %edx,0x4(%esp)
53f6c3:	0f b6 40 02          	movzbl 0x2(%eax),%eax
53f6c7:	c1 e0 04             	shl    $0x4,%eax
53f6ca:	89 44 24 08          	mov    %eax,0x8(%esp)
53f6ce:	8b 44 24 08          	mov    0x8(%esp),%eax
53f6d2:	50                   	push   %eax
53f6d3:	8b c6                	mov    %esi,%eax
53f6d5:	8b 4c 24 08          	mov    0x8(%esp),%ecx
53f6d9:	8b 54 24 04          	mov    0x4(%esp),%edx
53f6dd:	e8 fe fb ff ff       	call   0x53f2e0
53f6e2:	8b f8                	mov    %eax,%edi
53f6e4:	8b 04 24             	mov    (%esp),%eax
53f6e7:	50                   	push   %eax
53f6e8:	8b 44 24 08          	mov    0x8(%esp),%eax
53f6ec:	50                   	push   %eax
53f6ed:	8b 44 24 10          	mov    0x10(%esp),%eax
53f6f1:	50                   	push   %eax
53f6f2:	8b c6                	mov    %esi,%eax
53f6f4:	8b cf                	mov    %edi,%ecx
53f6f6:	8b 54 24 1c          	mov    0x1c(%esp),%edx
53f6fa:	e8 d5 fc ff ff       	call   0x53f3d4
53f6ff:	85 db                	test   %ebx,%ebx
53f701:	74 19                	je     0x53f71c
53f703:	8b 04 24             	mov    (%esp),%eax
53f706:	50                   	push   %eax
53f707:	8b 44 24 08          	mov    0x8(%esp),%eax
53f70b:	50                   	push   %eax
53f70c:	8b 44 24 10          	mov    0x10(%esp),%eax
53f710:	50                   	push   %eax
53f711:	8b c6                	mov    %esi,%eax
53f713:	8b cf                	mov    %edi,%ecx
53f715:	8b d3                	mov    %ebx,%edx
53f717:	e8 10 fd ff ff       	call   0x53f42c
53f71c:	8b 44 24 14          	mov    0x14(%esp),%eax
53f720:	01 44 24 20          	add    %eax,0x20(%esp)
53f724:	8b 44 24 20          	mov    0x20(%esp),%eax
53f728:	3b 44 24 28          	cmp    0x28(%esp),%eax
53f72c:	7c 08                	jl     0x53f736
53f72e:	8b 44 24 28          	mov    0x28(%esp),%eax
53f732:	29 44 24 20          	sub    %eax,0x20(%esp)
53f736:	45                   	inc    %ebp
53f737:	8b c5                	mov    %ebp,%eax
53f739:	99                   	cltd
53f73a:	f7 7c 24 18          	idivl  0x18(%esp)
53f73e:	85 d2                	test   %edx,%edx
53f740:	75 61                	jne    0x53f7a3
53f742:	8b 44 24 10          	mov    0x10(%esp),%eax
53f746:	99                   	cltd
53f747:	f7 7e 10             	idivl  0x10(%esi)
53f74a:	29 44 24 10          	sub    %eax,0x10(%esp)
53f74e:	8b 44 24 0c          	mov    0xc(%esp),%eax
53f752:	b9 1e 00 00 00       	mov    $0x1e,%ecx
53f757:	99                   	cltd
53f758:	f7 f9                	idiv   %ecx
53f75a:	29 44 24 0c          	sub    %eax,0xc(%esp)
53f75e:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
53f762:	c1 eb 06             	shr    $0x6,%ebx
53f765:	83 fb 01             	cmp    $0x1,%ebx
53f768:	7f 02                	jg     0x53f76c
53f76a:	33 db                	xor    %ebx,%ebx
53f76c:	8b cb                	mov    %ebx,%ecx
53f76e:	49                   	dec    %ecx
53f76f:	85 c9                	test   %ecx,%ecx
53f771:	7c 30                	jl     0x53f7a3
53f773:	41                   	inc    %ecx
53f774:	33 ff                	xor    %edi,%edi
53f776:	8b c3                	mov    %ebx,%eax
53f778:	f7 eb                	imul   %ebx
53f77a:	8b d7                	mov    %edi,%edx
53f77c:	0f af d7             	imul   %edi,%edx
53f77f:	2b c2                	sub    %edx,%eax
53f781:	c1 e0 08             	shl    $0x8,%eax
53f784:	8b d3                	mov    %ebx,%edx
53f786:	0f af d3             	imul   %ebx,%edx
53f789:	51                   	push   %ecx
53f78a:	8b ca                	mov    %edx,%ecx
53f78c:	99                   	cltd
53f78d:	f7 f9                	idiv   %ecx
53f78f:	59                   	pop    %ecx
53f790:	f7 6c 24 10          	imull  0x10(%esp)
53f794:	50                   	push   %eax
53f795:	8b 86 2c 04 00 00    	mov    0x42c(%esi),%eax
53f79b:	5a                   	pop    %edx
53f79c:	89 14 b8             	mov    %edx,(%eax,%edi,4)
53f79f:	47                   	inc    %edi
53f7a0:	49                   	dec    %ecx
53f7a1:	75 d3                	jne    0x53f776
53f7a3:	3b 6c 24 1c          	cmp    0x1c(%esp),%ebp
53f7a7:	0f 8c b4 fe ff ff    	jl     0x53f661
53f7ad:	83 c4 2c             	add    $0x2c,%esp
53f7b0:	5d                   	pop    %ebp
53f7b1:	5f                   	pop    %edi
53f7b2:	5e                   	pop    %esi
53f7b3:	5b                   	pop    %ebx
53f7b4:	c3                   	ret
53f7b5:	8d 40 00             	lea    0x0(%eax),%eax
53f7b8:	55                   	push   %ebp
53f7b9:	8b ec                	mov    %esp,%ebp
53f7bb:	83 c4 f8             	add    $0xfffffff8,%esp
53f7be:	53                   	push   %ebx
53f7bf:	56                   	push   %esi
53f7c0:	57                   	push   %edi
53f7c1:	89 4d f8             	mov    %ecx,-0x8(%ebp)
53f7c4:	89 55 fc             	mov    %edx,-0x4(%ebp)
53f7c7:	8b f8                	mov    %eax,%edi
53f7c9:	b8 38 04 00 00       	mov    $0x438,%eax
53f7ce:	e8 d9 2f ec ff       	call   0x4027ac
53f7d3:	8b d8                	mov    %eax,%ebx
53f7d5:	8b 45 0c             	mov    0xc(%ebp),%eax
53f7d8:	50                   	push   %eax
53f7d9:	8b f3                	mov    %ebx,%esi
53f7db:	8b c6                	mov    %esi,%eax
53f7dd:	8b 4d 08             	mov    0x8(%ebp),%ecx
53f7e0:	8b d7                	mov    %edi,%edx
53f7e2:	e8 cd f6 ff ff       	call   0x53eeb4
53f7e7:	8b c6                	mov    %esi,%eax
53f7e9:	e8 66 fd ff ff       	call   0x53f554
53f7ee:	8b c6                	mov    %esi,%eax
53f7f0:	e8 17 f8 ff ff       	call   0x53f00c
53f7f5:	8b 55 fc             	mov    -0x4(%ebp),%edx
53f7f8:	8b c6                	mov    %esi,%eax
53f7fa:	8b 4d f8             	mov    -0x8(%ebp),%ecx
53f7fd:	e8 42 f8 ff ff       	call   0x53f044
53f802:	8b c6                	mov    %esi,%eax
53f804:	e8 73 f8 ff ff       	call   0x53f07c
53f809:	8b c3                	mov    %ebx,%eax
53f80b:	5f                   	pop    %edi
53f80c:	5e                   	pop    %esi
53f80d:	5b                   	pop    %ebx
53f80e:	59                   	pop    %ecx
53f80f:	59                   	pop    %ecx
53f810:	5d                   	pop    %ebp
53f811:	c2 08 00             	ret    $0x8
53f814:	55                   	push   %ebp
53f815:	8b ec                	mov    %esp,%ebp
53f817:	33 d2                	xor    %edx,%edx
53f819:	8a 55 0a             	mov    0xa(%ebp),%dl
53f81c:	52                   	push   %edx
53f81d:	33 c9                	xor    %ecx,%ecx
53f81f:	8a 4d 09             	mov    0x9(%ebp),%cl
53f822:	33 d2                	xor    %edx,%edx
53f824:	8a 55 08             	mov    0x8(%ebp),%dl
53f827:	e8 a8 f9 ff ff       	call   0x53f1d4
53f82c:	5d                   	pop    %ebp
53f82d:	c2 04 00             	ret    $0x4
53f830:	53                   	push   %ebx
53f831:	56                   	push   %esi
53f832:	8b d8                	mov    %eax,%ebx
53f834:	8b f3                	mov    %ebx,%esi
53f836:	8b c6                	mov    %esi,%eax
53f838:	e8 9f f7 ff ff       	call   0x53efdc
53f83d:	ba 38 04 00 00       	mov    $0x438,%edx
53f842:	8b c6                	mov    %esi,%eax
53f844:	e8 83 2f ec ff       	call   0x4027cc
53f849:	5e                   	pop    %esi
53f84a:	5b                   	pop    %ebx
53f84b:	c3                   	ret
53f84c:	55                   	push   %ebp
53f84d:	8b ec                	mov    %esp,%ebp
53f84f:	53                   	push   %ebx
53f850:	56                   	push   %esi
53f851:	8b ca                	mov    %edx,%ecx
53f853:	49                   	dec    %ecx
53f854:	85 c9                	test   %ecx,%ecx
53f856:	7c 24                	jl     0x53f87c
53f858:	41                   	inc    %ecx
53f859:	33 f6                	xor    %esi,%esi
53f85b:	8d 14 76             	lea    (%esi,%esi,2),%edx
53f85e:	8d 14 10             	lea    (%eax,%edx,1),%edx
53f861:	8a 5a 02             	mov    0x2(%edx),%bl
53f864:	3a 5d 0a             	cmp    0xa(%ebp),%bl
53f867:	75 0f                	jne    0x53f878
53f869:	8a 5a 01             	mov    0x1(%edx),%bl
53f86c:	3a 5d 09             	cmp    0x9(%ebp),%bl
53f86f:	75 07                	jne    0x53f878
53f871:	8a 12                	mov    (%edx),%dl
53f873:	3a 55 08             	cmp    0x8(%ebp),%dl
53f876:	74 07                	je     0x53f87f
53f878:	46                   	inc    %esi
53f879:	49                   	dec    %ecx
53f87a:	75 df                	jne    0x53f85b
53f87c:	83 ce ff             	or     $0xffffffff,%esi
53f87f:	8b c6                	mov    %esi,%eax
53f881:	5e                   	pop    %esi
53f882:	5b                   	pop    %ebx
53f883:	5d                   	pop    %ebp
53f884:	c2 04 00             	ret    $0x4
53f887:	90                   	nop
53f888:	55                   	push   %ebp
53f889:	8b ec                	mov    %esp,%ebp
53f88b:	83 c4 e8             	add    $0xffffffe8,%esp
53f88e:	53                   	push   %ebx
53f88f:	56                   	push   %esi
53f890:	57                   	push   %edi
53f891:	89 4d f4             	mov    %ecx,-0xc(%ebp)
53f894:	89 55 f8             	mov    %edx,-0x8(%ebp)
53f897:	89 45 fc             	mov    %eax,-0x4(%ebp)
53f89a:	33 c0                	xor    %eax,%eax
53f89c:	89 45 f0             	mov    %eax,-0x10(%ebp)
53f89f:	8b 45 fc             	mov    -0x4(%ebp),%eax
53f8a2:	8b 10                	mov    (%eax),%edx
53f8a4:	ff 52 10             	call   *0x10(%edx)
53f8a7:	3c 05                	cmp    $0x5,%al
53f8a9:	0f 85 a0 00 00 00    	jne    0x53f94f
53f8af:	8b 45 f8             	mov    -0x8(%ebp),%eax
53f8b2:	8d 04 40             	lea    (%eax,%eax,2),%eax
53f8b5:	e8 f2 2e ec ff       	call   0x4027ac
53f8ba:	89 45 f0             	mov    %eax,-0x10(%ebp)
53f8bd:	33 f6                	xor    %esi,%esi
53f8bf:	8b 45 fc             	mov    -0x4(%ebp),%eax
53f8c2:	8b 10                	mov    (%eax),%edx
53f8c4:	ff 52 08             	call   *0x8(%edx)
53f8c7:	48                   	dec    %eax
53f8c8:	85 c0                	test   %eax,%eax
53f8ca:	7c 75                	jl     0x53f941
53f8cc:	40                   	inc    %eax
53f8cd:	89 45 e8             	mov    %eax,-0x18(%ebp)
53f8d0:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
53f8d7:	8b 55 ec             	mov    -0x14(%ebp),%edx
53f8da:	8b 45 fc             	mov    -0x4(%ebp),%eax
53f8dd:	8b 08                	mov    (%eax),%ecx
53f8df:	ff 11                	call   *(%ecx)
53f8e1:	8b d8                	mov    %eax,%ebx
53f8e3:	8b 45 fc             	mov    -0x4(%ebp),%eax
53f8e6:	8b 10                	mov    (%eax),%edx
53f8e8:	ff 52 0c             	call   *0xc(%edx)
53f8eb:	8b f8                	mov    %eax,%edi
53f8ed:	4f                   	dec    %edi
53f8ee:	85 ff                	test   %edi,%edi
53f8f0:	7c 47                	jl     0x53f939
53f8f2:	47                   	inc    %edi
53f8f3:	8a 43 02             	mov    0x2(%ebx),%al
53f8f6:	c1 e0 10             	shl    $0x10,%eax
53f8f9:	66 8b 03             	mov    (%ebx),%ax
53f8fc:	50                   	push   %eax
53f8fd:	8b d6                	mov    %esi,%edx
53f8ff:	8b 45 f0             	mov    -0x10(%ebp),%eax
53f902:	e8 45 ff ff ff       	call   0x53f84c
53f907:	40                   	inc    %eax
53f908:	75 29                	jne    0x53f933
53f90a:	3b 75 f8             	cmp    -0x8(%ebp),%esi
53f90d:	75 0f                	jne    0x53f91e
53f90f:	8b 45 f0             	mov    -0x10(%ebp),%eax
53f912:	e8 b5 2e ec ff       	call   0x4027cc
53f917:	33 c0                	xor    %eax,%eax
53f919:	89 45 f0             	mov    %eax,-0x10(%ebp)
53f91c:	eb 31                	jmp    0x53f94f
53f91e:	8d 04 76             	lea    (%esi,%esi,2),%eax
53f921:	8b 55 f0             	mov    -0x10(%ebp),%edx
53f924:	66 8b 0b             	mov    (%ebx),%cx
53f927:	66 89 0c 02          	mov    %cx,(%edx,%eax,1)
53f92b:	8a 4b 02             	mov    0x2(%ebx),%cl
53f92e:	88 4c 02 02          	mov    %cl,0x2(%edx,%eax,1)
53f932:	46                   	inc    %esi
53f933:	83 c3 03             	add    $0x3,%ebx
53f936:	4f                   	dec    %edi
53f937:	75 ba                	jne    0x53f8f3
53f939:	ff 45 ec             	incl   -0x14(%ebp)
53f93c:	ff 4d e8             	decl   -0x18(%ebp)
53f93f:	75 96                	jne    0x53f8d7
53f941:	8d 0c 76             	lea    (%esi,%esi,2),%ecx
53f944:	8b 45 f4             	mov    -0xc(%ebp),%eax
53f947:	8b 55 f0             	mov    -0x10(%ebp),%edx
53f94a:	e8 71 85 ec ff       	call   0x407ec0
53f94f:	8b 45 f0             	mov    -0x10(%ebp),%eax
53f952:	5f                   	pop    %edi
53f953:	5e                   	pop    %esi
53f954:	5b                   	pop    %ebx
53f955:	8b e5                	mov    %ebp,%esp
53f957:	5d                   	pop    %ebp
53f958:	c2 04 00             	ret    $0x4
53f95b:	90                   	nop
53f95c:	e8 6b 2e ec ff       	call   0x4027cc
53f961:	c3                   	ret
53f962:	8b c0                	mov    %eax,%eax
53f964:	55                   	push   %ebp
53f965:	8b ec                	mov    %esp,%ebp
53f967:	83 c4 e8             	add    $0xffffffe8,%esp
53f96a:	53                   	push   %ebx
53f96b:	56                   	push   %esi
53f96c:	57                   	push   %edi
53f96d:	84 d2                	test   %dl,%dl
53f96f:	74 08                	je     0x53f979
53f971:	83 c4 f0             	add    $0xfffffff0,%esp
53f974:	e8 63 44 ec ff       	call   0x403ddc
53f979:	89 4d f8             	mov    %ecx,-0x8(%ebp)
53f97c:	88 55 ff             	mov    %dl,-0x1(%ebp)
53f97f:	8b f0                	mov    %eax,%esi
53f981:	8b 5d 10             	mov    0x10(%ebp),%ebx
53f984:	8b 7d 18             	mov    0x18(%ebp),%edi
53f987:	33 d2                	xor    %edx,%edx
53f989:	8b c6                	mov    %esi,%eax
53f98b:	e8 b8 40 ec ff       	call   0x403a48
53f990:	8b 45 f8             	mov    -0x8(%ebp),%eax
53f993:	89 46 18             	mov    %eax,0x18(%esi)
53f996:	89 5e 14             	mov    %ebx,0x14(%esi)
53f999:	8b 45 f8             	mov    -0x8(%ebp),%eax
53f99c:	e8 6b 15 0c 00       	call   0x600f0c
53f9a1:	88 46 0c             	mov    %al,0xc(%esi)
53f9a4:	33 c0                	xor    %eax,%eax
53f9a6:	89 46 08             	mov    %eax,0x8(%esi)
53f9a9:	33 c0                	xor    %eax,%eax
53f9ab:	89 46 10             	mov    %eax,0x10(%esi)
53f9ae:	80 7e 0c 00          	cmpb   $0x0,0xc(%esi)
53f9b2:	0f 85 92 00 00 00    	jne    0x53fa4a
53f9b8:	8b 45 f8             	mov    -0x8(%ebp),%eax
53f9bb:	8b 10                	mov    (%eax),%edx
53f9bd:	ff 52 10             	call   *0x10(%edx)
53f9c0:	3c 05                	cmp    $0x5,%al
53f9c2:	0f 85 82 00 00 00    	jne    0x53fa4a
53f9c8:	8b 45 14             	mov    0x14(%ebp),%eax
53f9cb:	50                   	push   %eax
53f9cc:	8b cf                	mov    %edi,%ecx
53f9ce:	8b d3                	mov    %ebx,%edx
53f9d0:	8b 45 f8             	mov    -0x8(%ebp),%eax
53f9d3:	e8 b0 fe ff ff       	call   0x53f888
53f9d8:	89 46 10             	mov    %eax,0x10(%esi)
53f9db:	83 7e 10 00          	cmpl   $0x0,0x10(%esi)
53f9df:	0f 85 42 01 00 00    	jne    0x53fb27
53f9e5:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
53f9e9:	75 1a                	jne    0x53fa05
53f9eb:	81 fb 80 00 00 00    	cmp    $0x80,%ebx
53f9f1:	7c 09                	jl     0x53f9fc
53f9f3:	c7 46 04 01 00 00 00 	movl   $0x1,0x4(%esi)
53f9fa:	eb 0f                	jmp    0x53fa0b
53f9fc:	c7 46 04 01 00 00 00 	movl   $0x1,0x4(%esi)
53fa03:	eb 06                	jmp    0x53fa0b
53fa05:	8b 45 08             	mov    0x8(%ebp),%eax
53fa08:	89 46 04             	mov    %eax,0x4(%esi)
53fa0b:	8b 46 04             	mov    0x4(%esi),%eax
53fa0e:	83 e8 01             	sub    $0x1,%eax
53fa11:	72 07                	jb     0x53fa1a
53fa13:	74 1f                	je     0x53fa34
53fa15:	e9 0d 01 00 00       	jmp    0x53fb27
53fa1a:	53                   	push   %ebx
53fa1b:	8b 45 0c             	mov    0xc(%ebp),%eax
53fa1e:	50                   	push   %eax
53fa1f:	8b d7                	mov    %edi,%edx
53fa21:	8b 4d 14             	mov    0x14(%ebp),%ecx
53fa24:	8b 45 f8             	mov    -0x8(%ebp),%eax
53fa27:	e8 8c fd ff ff       	call   0x53f7b8
53fa2c:	89 46 08             	mov    %eax,0x8(%esi)
53fa2f:	e9 f3 00 00 00       	jmp    0x53fb27
53fa34:	53                   	push   %ebx
53fa35:	8b d7                	mov    %edi,%edx
53fa37:	8b 4d 14             	mov    0x14(%ebp),%ecx
53fa3a:	8b 45 f8             	mov    -0x8(%ebp),%eax