4157c8:	53                   	push   %ebx
4157c9:	56                   	push   %esi
4157ca:	57                   	push   %edi
4157cb:	8b f9                	mov    %ecx,%edi
4157cd:	8b f2                	mov    %edx,%esi
4157cf:	8b d8                	mov    %eax,%ebx
4157d1:	85 f6                	test   %esi,%esi
4157d3:	7c 05                	jl     0x4157da
4157d5:	3b 73 14             	cmp    0x14(%ebx),%esi
4157d8:	7c 0f                	jl     0x4157e9
4157da:	8b 15 70 0c 46 00    	mov    0x460c70,%edx
4157e0:	8b ce                	mov    %esi,%ecx
4157e2:	8b c3                	mov    %ebx,%eax
4157e4:	e8 23 f4 ff ff       	call   0x414c0c
4157e9:	85 ff                	test   %edi,%edi
4157eb:	7c 05                	jl     0x4157f2
4157ed:	3b 7b 14             	cmp    0x14(%ebx),%edi
4157f0:	7c 0f                	jl     0x415801
4157f2:	8b 15 70 0c 46 00    	mov    0x460c70,%edx
4157f8:	8b cf                	mov    %edi,%ecx
4157fa:	8b c3                	mov    %ebx,%eax
4157fc:	e8 0b f4 ff ff       	call   0x414c0c
415801:	8b c3                	mov    %ebx,%eax
415803:	8b 10                	mov    (%eax),%edx
415805:	ff 92 84 00 00 00    	call   *0x84(%edx)
41580b:	8b cf                	mov    %edi,%ecx
41580d:	8b d6                	mov    %esi,%edx
41580f:	8b c3                	mov    %ebx,%eax
415811:	e8 0e 00 00 00       	call   0x415824
415816:	8b c3                	mov    %ebx,%eax
415818:	8b 10                	mov    (%eax),%edx
41581a:	ff 92 80 00 00 00    	call   *0x80(%edx)
415820:	5f                   	pop    %edi
415821:	5e                   	pop    %esi
415822:	5b                   	pop    %ebx
415823:	c3                   	ret
415824:	53                   	push   %ebx
415825:	83 c4 f8             	add    $0xfffffff8,%esp
415828:	8b 58 10             	mov    0x10(%eax),%ebx
41582b:	8d 14 d3             	lea    (%ebx,%edx,8),%edx
41582e:	89 14 24             	mov    %edx,(%esp)
415831:	8b 40 10             	mov    0x10(%eax),%eax
415834:	8d 04 c8             	lea    (%eax,%ecx,8),%eax
415837:	89 44 24 04          	mov    %eax,0x4(%esp)
41583b:	8b 04 24             	mov    (%esp),%eax
41583e:	8b 00                	mov    (%eax),%eax
415840:	8b 54 24 04          	mov    0x4(%esp),%edx
415844:	8b 12                	mov    (%edx),%edx
415846:	8b 0c 24             	mov    (%esp),%ecx
415849:	89 11                	mov    %edx,(%ecx)
41584b:	8b 54 24 04          	mov    0x4(%esp),%edx
41584f:	89 02                	mov    %eax,(%edx)
415851:	8b 04 24             	mov    (%esp),%eax
415854:	8b 40 04             	mov    0x4(%eax),%eax
415857:	8b 54 24 04          	mov    0x4(%esp),%edx
41585b:	8b 52 04             	mov    0x4(%edx),%edx
41585e:	8b 0c 24             	mov    (%esp),%ecx
415861:	89 51 04             	mov    %edx,0x4(%ecx)
415864:	8b 54 24 04          	mov    0x4(%esp),%edx
415868:	89 42 04             	mov    %eax,0x4(%edx)
41586b:	59                   	pop    %ecx
41586c:	5a                   	pop    %edx
41586d:	5b                   	pop    %ebx
41586e:	c3                   	ret
41586f:	90                   	nop
415870:	53                   	push   %ebx
415871:	56                   	push   %esi
415872:	57                   	push   %edi
415873:	55                   	push   %ebp
415874:	83 c4 ec             	add    $0xffffffec,%esp
415877:	89 4c 24 04          	mov    %ecx,0x4(%esp)
41587b:	89 14 24             	mov    %edx,(%esp)
41587e:	8b f8                	mov    %eax,%edi
415880:	c6 44 24 08 00       	movb   $0x0,0x8(%esp)
415885:	33 f6                	xor    %esi,%esi
415887:	8b 47 14             	mov    0x14(%edi),%eax
41588a:	48                   	dec    %eax
41588b:	89 44 24 0c          	mov    %eax,0xc(%esp)
41588f:	3b 74 24 0c          	cmp    0xc(%esp),%esi
415893:	7f 49                	jg     0x4158de
415895:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
415899:	03 de                	add    %esi,%ebx
41589b:	d1 eb                	shr    $1,%ebx
41589d:	8b 47 10             	mov    0x10(%edi),%eax
4158a0:	8b 14 d8             	mov    (%eax,%ebx,8),%edx
4158a3:	8b 0c 24             	mov    (%esp),%ecx
4158a6:	8b c7                	mov    %edi,%eax
4158a8:	8b 28                	mov    (%eax),%ebp
4158aa:	ff 55 34             	call   *0x34(%ebp)
4158ad:	89 44 24 10          	mov    %eax,0x10(%esp)
4158b1:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
4158b6:	7d 05                	jge    0x4158bd
4158b8:	8d 73 01             	lea    0x1(%ebx),%esi
4158bb:	eb 1b                	jmp    0x4158d8
4158bd:	8b c3                	mov    %ebx,%eax
4158bf:	48                   	dec    %eax
4158c0:	89 44 24 0c          	mov    %eax,0xc(%esp)
4158c4:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
4158c9:	75 0d                	jne    0x4158d8
4158cb:	c6 44 24 08 01       	movb   $0x1,0x8(%esp)
4158d0:	80 7f 1d 01          	cmpb   $0x1,0x1d(%edi)
4158d4:	74 02                	je     0x4158d8
4158d6:	8b f3                	mov    %ebx,%esi
4158d8:	3b 74 24 0c          	cmp    0xc(%esp),%esi
4158dc:	7e b7                	jle    0x415895
4158de:	8b 44 24 04          	mov    0x4(%esp),%eax
4158e2:	89 30                	mov    %esi,(%eax)
4158e4:	8a 44 24 08          	mov    0x8(%esp),%al
4158e8:	83 c4 14             	add    $0x14,%esp
4158eb:	5d                   	pop    %ebp
4158ec:	5f                   	pop    %edi
4158ed:	5e                   	pop    %esi
4158ee:	5b                   	pop    %ebx
4158ef:	c3                   	ret
4158f0:	53                   	push   %ebx
4158f1:	56                   	push   %esi
4158f2:	57                   	push   %edi
4158f3:	8b f9                	mov    %ecx,%edi
4158f5:	8b f2                	mov    %edx,%esi
4158f7:	8b d8                	mov    %eax,%ebx
4158f9:	85 f6                	test   %esi,%esi
4158fb:	7c 05                	jl     0x415902
4158fd:	3b 73 14             	cmp    0x14(%ebx),%esi
415900:	7c 0f                	jl     0x415911
415902:	8b 15 70 0c 46 00    	mov    0x460c70,%edx
415908:	8b ce                	mov    %esi,%ecx
41590a:	8b c3                	mov    %ebx,%eax
41590c:	e8 fb f2 ff ff       	call   0x414c0c
415911:	8b c7                	mov    %edi,%eax
415913:	8b 53 10             	mov    0x10(%ebx),%edx
415916:	8b 14 f2             	mov    (%edx,%esi,8),%edx
415919:	e8 a6 ec fe ff       	call   0x4045c4
41591e:	5f                   	pop    %edi
41591f:	5e                   	pop    %esi
415920:	5b                   	pop    %ebx
415921:	c3                   	ret
415922:	8b c0                	mov    %eax,%eax
415924:	8b 40 18             	mov    0x18(%eax),%eax
415927:	c3                   	ret
415928:	8b 40 14             	mov    0x14(%eax),%eax
41592b:	c3                   	ret
41592c:	53                   	push   %ebx
41592d:	56                   	push   %esi
41592e:	8b f2                	mov    %edx,%esi
415930:	8b d8                	mov    %eax,%ebx
415932:	85 f6                	test   %esi,%esi
415934:	7c 05                	jl     0x41593b
415936:	3b 73 14             	cmp    0x14(%ebx),%esi
415939:	7c 0f                	jl     0x41594a
41593b:	8b 15 70 0c 46 00    	mov    0x460c70,%edx
415941:	8b ce                	mov    %esi,%ecx
415943:	8b c3                	mov    %ebx,%eax
415945:	e8 c2 f2 ff ff       	call   0x414c0c
41594a:	8b 43 10             	mov    0x10(%ebx),%eax
41594d:	8b 44 f0 04          	mov    0x4(%eax,%esi,8),%eax
415951:	5e                   	pop    %esi
415952:	5b                   	pop    %ebx
415953:	c3                   	ret
415954:	56                   	push   %esi
415955:	8b 50 18             	mov    0x18(%eax),%edx
415958:	83 fa 40             	cmp    $0x40,%edx
41595b:	7e 0e                	jle    0x41596b
41595d:	8b f2                	mov    %edx,%esi
41595f:	85 f6                	test   %esi,%esi
415961:	79 03                	jns    0x415966
415963:	83 c6 03             	add    $0x3,%esi
415966:	c1 fe 02             	sar    $0x2,%esi
415969:	eb 11                	jmp    0x41597c
41596b:	83 fa 08             	cmp    $0x8,%edx
41596e:	7e 07                	jle    0x415977
415970:	be 10 00 00 00       	mov    $0x10,%esi
415975:	eb 05                	jmp    0x41597c
415977:	be 04 00 00 00       	mov    $0x4,%esi
41597c:	03 f2                	add    %edx,%esi
41597e:	8b d6                	mov    %esi,%edx
415980:	8b 08                	mov    (%eax),%ecx
415982:	ff 51 28             	call   *0x28(%ecx)
415985:	5e                   	pop    %esi
415986:	c3                   	ret
415987:	90                   	nop
415988:	53                   	push   %ebx
415989:	56                   	push   %esi
41598a:	51                   	push   %ecx
41598b:	8b f2                	mov    %edx,%esi
41598d:	8b d8                	mov    %eax,%ebx
41598f:	80 7b 1c 00          	cmpb   $0x0,0x1c(%ebx)
415993:	75 0e                	jne    0x4159a3
415995:	8b d6                	mov    %esi,%edx
415997:	8b c3                	mov    %ebx,%eax
415999:	e8 3e f5 ff ff       	call   0x414edc
41599e:	89 04 24             	mov    %eax,(%esp)
4159a1:	eb 19                	jmp    0x4159bc
4159a3:	8b cc                	mov    %esp,%ecx
4159a5:	8b d6                	mov    %esi,%edx
4159a7:	8b c3                	mov    %ebx,%eax
4159a9:	8b 18                	mov    (%eax),%ebx
4159ab:	ff 93 8c 00 00 00    	call   *0x8c(%ebx)
4159b1:	84 c0                	test   %al,%al
4159b3:	75 07                	jne    0x4159bc
4159b5:	c7 04 24 ff ff ff ff 	movl   $0xffffffff,(%esp)
4159bc:	8b 04 24             	mov    (%esp),%eax
4159bf:	5a                   	pop    %edx
4159c0:	5e                   	pop    %esi
4159c1:	5b                   	pop    %ebx
4159c2:	c3                   	ret
4159c3:	90                   	nop
4159c4:	53                   	push   %ebx
4159c5:	56                   	push   %esi
4159c6:	8b f0                	mov    %eax,%esi
4159c8:	6a 00                	push   $0x0
4159ca:	8b c6                	mov    %esi,%eax
4159cc:	8b 18                	mov    (%eax),%ebx
4159ce:	ff 53 64             	call   *0x64(%ebx)
4159d1:	5e                   	pop    %esi
4159d2:	5b                   	pop    %ebx
4159d3:	c3                   	ret
4159d4:	55                   	push   %ebp
4159d5:	8b ec                	mov    %esp,%ebp
4159d7:	53                   	push   %ebx
4159d8:	56                   	push   %esi
4159d9:	57                   	push   %edi
4159da:	8b f9                	mov    %ecx,%edi
4159dc:	8b f2                	mov    %edx,%esi
4159de:	8b d8                	mov    %eax,%ebx
4159e0:	80 7b 1c 00          	cmpb   $0x0,0x1c(%ebx)
4159e4:	74 0f                	je     0x4159f5
4159e6:	8b 15 28 0b 46 00    	mov    0x460b28,%edx
4159ec:	33 c9                	xor    %ecx,%ecx
4159ee:	8b c3                	mov    %ebx,%eax
4159f0:	e8 17 f2 ff ff       	call   0x414c0c
4159f5:	85 f6                	test   %esi,%esi
4159f7:	7c 05                	jl     0x4159fe
4159f9:	3b 73 14             	cmp    0x14(%ebx),%esi
4159fc:	7e 0f                	jle    0x415a0d
4159fe:	8b 15 70 0c 46 00    	mov    0x460c70,%edx
415a04:	8b ce                	mov    %esi,%ecx
415a06:	8b c3                	mov    %ebx,%eax
415a08:	e8 ff f1 ff ff       	call   0x414c0c
415a0d:	8b 45 08             	mov    0x8(%ebp),%eax
415a10:	50                   	push   %eax
415a11:	8b cf                	mov    %edi,%ecx
415a13:	8b d6                	mov    %esi,%edx
415a15:	8b c3                	mov    %ebx,%eax
415a17:	8b 18                	mov    (%eax),%ebx
415a19:	ff 93 88 00 00 00    	call   *0x88(%ebx)
415a1f:	5f                   	pop    %edi
415a20:	5e                   	pop    %esi
415a21:	5b                   	pop    %ebx
415a22:	5d                   	pop    %ebp
415a23:	c2 04 00             	ret    $0x4
415a26:	8b c0                	mov    %eax,%eax
415a28:	55                   	push   %ebp
415a29:	8b ec                	mov    %esp,%ebp
415a2b:	53                   	push   %ebx
415a2c:	56                   	push   %esi
415a2d:	57                   	push   %edi
415a2e:	8b f9                	mov    %ecx,%edi
415a30:	8b f2                	mov    %edx,%esi
415a32:	8b d8                	mov    %eax,%ebx
415a34:	8b c3                	mov    %ebx,%eax
415a36:	8b 10                	mov    (%eax),%edx
415a38:	ff 92 84 00 00 00    	call   *0x84(%edx)
415a3e:	8b 43 14             	mov    0x14(%ebx),%eax
415a41:	3b 43 18             	cmp    0x18(%ebx),%eax
415a44:	75 07                	jne    0x415a4d
415a46:	8b c3                	mov    %ebx,%eax
415a48:	e8 07 ff ff ff       	call   0x415954
415a4d:	8b 43 14             	mov    0x14(%ebx),%eax
415a50:	3b f0                	cmp    %eax,%esi
415a52:	7d 1d                	jge    0x415a71
415a54:	8b 53 10             	mov    0x10(%ebx),%edx
415a57:	8d 54 f2 08          	lea    0x8(%edx,%esi,8),%edx
415a5b:	52                   	push   %edx
415a5c:	8b 53 10             	mov    0x10(%ebx),%edx
415a5f:	8d 14 f2             	lea    (%edx,%esi,8),%edx
415a62:	2b c6                	sub    %esi,%eax
415a64:	8b c8                	mov    %eax,%ecx
415a66:	c1 e1 03             	shl    $0x3,%ecx
415a69:	8b c2                	mov    %edx,%eax
415a6b:	5a                   	pop    %edx
415a6c:	e8 e7 d1 fe ff       	call   0x402c58
415a71:	8b 43 10             	mov    0x10(%ebx),%eax
415a74:	8d 04 f0             	lea    (%eax,%esi,8),%eax
415a77:	8b f0                	mov    %eax,%esi
415a79:	33 c0                	xor    %eax,%eax
415a7b:	89 06                	mov    %eax,(%esi)
415a7d:	8b 45 08             	mov    0x8(%ebp),%eax
415a80:	89 46 04             	mov    %eax,0x4(%esi)
415a83:	8b c6                	mov    %esi,%eax
415a85:	8b d7                	mov    %edi,%edx
415a87:	e8 38 eb fe ff       	call   0x4045c4
415a8c:	ff 43 14             	incl   0x14(%ebx)
415a8f:	8b c3                	mov    %ebx,%eax
415a91:	8b 10                	mov    (%eax),%edx
415a93:	ff 92 80 00 00 00    	call   *0x80(%edx)
415a99:	5f                   	pop    %edi
415a9a:	5e                   	pop    %esi
415a9b:	5b                   	pop    %ebx
415a9c:	5d                   	pop    %ebp
415a9d:	c2 04 00             	ret    $0x4
415aa0:	53                   	push   %ebx
415aa1:	56                   	push   %esi
415aa2:	57                   	push   %edi
415aa3:	8b f9                	mov    %ecx,%edi
415aa5:	8b f2                	mov    %edx,%esi
415aa7:	8b d8                	mov    %eax,%ebx
415aa9:	80 7b 1c 00          	cmpb   $0x0,0x1c(%ebx)
415aad:	74 0f                	je     0x415abe
415aaf:	8b 15 28 0b 46 00    	mov    0x460b28,%edx
415ab5:	33 c9                	xor    %ecx,%ecx
415ab7:	8b c3                	mov    %ebx,%eax
415ab9:	e8 4e f1 ff ff       	call   0x414c0c
415abe:	85 f6                	test   %esi,%esi
415ac0:	7c 05                	jl     0x415ac7
415ac2:	3b 73 14             	cmp    0x14(%ebx),%esi
415ac5:	7c 0f                	jl     0x415ad6
415ac7:	8b 15 70 0c 46 00    	mov    0x460c70,%edx
415acd:	8b ce                	mov    %esi,%ecx
415acf:	8b c3                	mov    %ebx,%eax
415ad1:	e8 36 f1 ff ff       	call   0x414c0c
415ad6:	8b c3                	mov    %ebx,%eax
415ad8:	8b 10                	mov    (%eax),%edx
415ada:	ff 92 84 00 00 00    	call   *0x84(%edx)
415ae0:	8b 43 10             	mov    0x10(%ebx),%eax
415ae3:	8d 04 f0             	lea    (%eax,%esi,8),%eax
415ae6:	8b d7                	mov    %edi,%edx
415ae8:	e8 d7 ea fe ff       	call   0x4045c4
415aed:	8b c3                	mov    %ebx,%eax
415aef:	8b 10                	mov    (%eax),%edx
415af1:	ff 92 80 00 00 00    	call   *0x80(%edx)
415af7:	5f                   	pop    %edi
415af8:	5e                   	pop    %esi
415af9:	5b                   	pop    %ebx
415afa:	c3                   	ret
415afb:	90                   	nop
415afc:	53                   	push   %ebx
415afd:	56                   	push   %esi
415afe:	57                   	push   %edi
415aff:	8b f9                	mov    %ecx,%edi
415b01:	8b f2                	mov    %edx,%esi
415b03:	8b d8                	mov    %eax,%ebx
415b05:	85 f6                	test   %esi,%esi
415b07:	7c 05                	jl     0x415b0e
415b09:	3b 73 14             	cmp    0x14(%ebx),%esi
415b0c:	7c 0f                	jl     0x415b1d
415b0e:	8b 15 70 0c 46 00    	mov    0x460c70,%edx
415b14:	8b ce                	mov    %esi,%ecx
415b16:	8b c3                	mov    %ebx,%eax
415b18:	e8 ef f0 ff ff       	call   0x414c0c
415b1d:	8b c3                	mov    %ebx,%eax