40b8fb:	78 29                	js     0x40b926
40b8fd:	3b f3                	cmp    %ebx,%esi
40b8ff:	76 25                	jbe    0x40b926
40b901:	eb 59                	jmp    0x40b95c
40b903:	8b 85 8c fb ff ff    	mov    -0x474(%ebp),%eax
40b909:	0b c1                	or     %ecx,%eax
40b90b:	74 4b                	je     0x40b958
40b90d:	85 db                	test   %ebx,%ebx
40b90f:	74 15                	je     0x40b926
40b911:	85 f6                	test   %esi,%esi
40b913:	79 04                	jns    0x40b919
40b915:	88 0f                	mov    %cl,(%edi)
40b917:	eb 0d                	jmp    0x40b926
40b919:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40b91f:	3b c3                	cmp    %ebx,%eax
40b921:	74 4b                	je     0x40b96e
40b923:	88 0c 07             	mov    %cl,(%edi,%eax,1)
40b926:	8d 8d e4 fb ff ff    	lea    -0x41c(%ebp),%ecx
40b92c:	e8 e0 03 00 00       	call   0x40bd11
40b931:	80 bd 88 fb ff ff 00 	cmpb   $0x0,-0x478(%ebp)
40b938:	74 0d                	je     0x40b947
40b93a:	8b 8d 7c fb ff ff    	mov    -0x484(%ebp),%ecx
40b940:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40b947:	5f                   	pop    %edi
40b948:	8b c6                	mov    %esi,%eax
40b94a:	5e                   	pop    %esi
40b94b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b94e:	33 cd                	xor    %ebp,%ecx
40b950:	5b                   	pop    %ebx
40b951:	e8 b6 ba ff ff       	call   0x40740c
40b956:	c9                   	leave
40b957:	c3                   	ret
40b958:	85 db                	test   %ebx,%ebx
40b95a:	75 05                	jne    0x40b961
40b95c:	83 ce ff             	or     $0xffffffff,%esi
40b95f:	eb c5                	jmp    0x40b926
40b961:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40b967:	3b c3                	cmp    %ebx,%eax
40b969:	75 b8                	jne    0x40b923
40b96b:	6a fe                	push   $0xfffffffe
40b96d:	5e                   	pop    %esi
40b96e:	88 4c 1f ff          	mov    %cl,-0x1(%edi,%ebx,1)
40b972:	eb b2                	jmp    0x40b926
40b974:	8b ff                	mov    %edi,%edi
40b976:	55                   	push   %ebp
40b977:	8b ec                	mov    %esp,%ebp
40b979:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40b97d:	75 15                	jne    0x40b994
40b97f:	e8 77 34 00 00       	call   0x40edfb
40b984:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40b98a:	e8 f2 16 00 00       	call   0x40d081
40b98f:	83 c8 ff             	or     $0xffffffff,%eax
40b992:	5d                   	pop    %ebp
40b993:	c3                   	ret
40b994:	56                   	push   %esi
40b995:	8b 75 10             	mov    0x10(%ebp),%esi
40b998:	85 f6                	test   %esi,%esi
40b99a:	74 3a                	je     0x40b9d6
40b99c:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
40b9a0:	76 34                	jbe    0x40b9d6
40b9a2:	ff 75 20             	push   0x20(%ebp)
40b9a5:	ff 75 1c             	push   0x1c(%ebp)
40b9a8:	ff 75 18             	push   0x18(%ebp)
40b9ab:	ff 75 14             	push   0x14(%ebp)
40b9ae:	56                   	push   %esi
40b9af:	ff 75 0c             	push   0xc(%ebp)
40b9b2:	ff 75 08             	push   0x8(%ebp)
40b9b5:	e8 3c fe ff ff       	call   0x40b7f6
40b9ba:	83 c4 1c             	add    $0x1c,%esp
40b9bd:	85 c0                	test   %eax,%eax
40b9bf:	79 03                	jns    0x40b9c4
40b9c1:	c6 06 00             	movb   $0x0,(%esi)
40b9c4:	83 f8 fe             	cmp    $0xfffffffe,%eax
40b9c7:	75 20                	jne    0x40b9e9
40b9c9:	e8 2d 34 00 00       	call   0x40edfb
40b9ce:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
40b9d4:	eb 0b                	jmp    0x40b9e1
40b9d6:	e8 20 34 00 00       	call   0x40edfb
40b9db:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40b9e1:	e8 9b 16 00 00       	call   0x40d081
40b9e6:	83 c8 ff             	or     $0xffffffff,%eax
40b9e9:	5e                   	pop    %esi
40b9ea:	5d                   	pop    %ebp
40b9eb:	c3                   	ret
40b9ec:	83 b9 04 04 00 00 00 	cmpl   $0x0,0x404(%ecx)
40b9f3:	75 06                	jne    0x40b9fb
40b9f5:	b8 00 02 00 00       	mov    $0x200,%eax
40b9fa:	c3                   	ret
40b9fb:	8b 81 00 04 00 00    	mov    0x400(%ecx),%eax
40ba01:	d1 e8                	shr    $1,%eax
40ba03:	c3                   	ret
40ba04:	8b ff                	mov    %edi,%edi
40ba06:	55                   	push   %ebp
40ba07:	8b ec                	mov    %esp,%ebp
40ba09:	51                   	push   %ecx
40ba0a:	56                   	push   %esi
40ba0b:	8b 75 08             	mov    0x8(%ebp),%esi
40ba0e:	57                   	push   %edi
40ba0f:	8b f9                	mov    %ecx,%edi
40ba11:	81 fe ff ff ff 7f    	cmp    $0x7fffffff,%esi
40ba17:	76 0f                	jbe    0x40ba28
40ba19:	e8 dd 33 00 00       	call   0x40edfb
40ba1e:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40ba24:	32 c0                	xor    %al,%al
40ba26:	eb 53                	jmp    0x40ba7b
40ba28:	53                   	push   %ebx
40ba29:	33 db                	xor    %ebx,%ebx
40ba2b:	03 f6                	add    %esi,%esi
40ba2d:	39 9f 04 04 00 00    	cmp    %ebx,0x404(%edi)
40ba33:	75 08                	jne    0x40ba3d
40ba35:	81 fe 00 04 00 00    	cmp    $0x400,%esi
40ba3b:	76 08                	jbe    0x40ba45
40ba3d:	3b b7 00 04 00 00    	cmp    0x400(%edi),%esi
40ba43:	77 04                	ja     0x40ba49
40ba45:	b0 01                	mov    $0x1,%al
40ba47:	eb 31                	jmp    0x40ba7a
40ba49:	56                   	push   %esi
40ba4a:	e8 17 81 00 00       	call   0x413b66
40ba4f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ba52:	59                   	pop    %ecx
40ba53:	85 c0                	test   %eax,%eax
40ba55:	74 1a                	je     0x40ba71
40ba57:	8d 45 fc             	lea    -0x4(%ebp),%eax
40ba5a:	50                   	push   %eax
40ba5b:	8d 8f 04 04 00 00    	lea    0x404(%edi),%ecx
40ba61:	e8 c5 02 00 00       	call   0x40bd2b
40ba66:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ba69:	b3 01                	mov    $0x1,%bl
40ba6b:	89 b7 00 04 00 00    	mov    %esi,0x400(%edi)
40ba71:	50                   	push   %eax
40ba72:	e8 94 76 00 00       	call   0x41310b
40ba77:	59                   	pop    %ecx
40ba78:	8a c3                	mov    %bl,%al
40ba7a:	5b                   	pop    %ebx
40ba7b:	5f                   	pop    %edi
40ba7c:	5e                   	pop    %esi
40ba7d:	c9                   	leave
40ba7e:	c2 04 00             	ret    $0x4
40ba81:	8b ff                	mov    %edi,%edi
40ba83:	55                   	push   %ebp
40ba84:	8b ec                	mov    %esp,%ebp
40ba86:	8b 45 14             	mov    0x14(%ebp),%eax
40ba89:	48                   	dec    %eax
40ba8a:	83 e8 01             	sub    $0x1,%eax
40ba8d:	74 1f                	je     0x40baae
40ba8f:	83 e8 01             	sub    $0x1,%eax
40ba92:	74 16                	je     0x40baaa
40ba94:	83 e8 09             	sub    $0x9,%eax
40ba97:	74 11                	je     0x40baaa
40ba99:	83 7d 14 0d          	cmpl   $0xd,0x14(%ebp)
40ba9d:	74 0f                	je     0x40baae
40ba9f:	8a 45 10             	mov    0x10(%ebp),%al
40baa2:	3c 63                	cmp    $0x63,%al
40baa4:	74 08                	je     0x40baae
40baa6:	3c 73                	cmp    $0x73,%al
40baa8:	74 04                	je     0x40baae
40baaa:	b0 01                	mov    $0x1,%al
40baac:	5d                   	pop    %ebp
40baad:	c3                   	ret
40baae:	32 c0                	xor    %al,%al
40bab0:	5d                   	pop    %ebp
40bab1:	c3                   	ret
40bab2:	8b ff                	mov    %edi,%edi
40bab4:	56                   	push   %esi
40bab5:	8b f1                	mov    %ecx,%esi
40bab7:	57                   	push   %edi
40bab8:	8b be 04 04 00 00    	mov    0x404(%esi),%edi
40babe:	e8 29 ff ff ff       	call   0x40b9ec
40bac3:	85 ff                	test   %edi,%edi
40bac5:	75 04                	jne    0x40bacb
40bac7:	03 c6                	add    %esi,%eax
40bac9:	eb 02                	jmp    0x40bacd
40bacb:	03 c7                	add    %edi,%eax
40bacd:	5f                   	pop    %edi
40bace:	5e                   	pop    %esi
40bacf:	c3                   	ret
40bad0:	8b ff                	mov    %edi,%edi
40bad2:	55                   	push   %ebp
40bad3:	8b ec                	mov    %esp,%ebp
40bad5:	53                   	push   %ebx
40bad6:	56                   	push   %esi
40bad7:	8b f1                	mov    %ecx,%esi
40bad9:	57                   	push   %edi
40bada:	8d 4e 40             	lea    0x40(%esi),%ecx
40badd:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
40bae3:	85 ff                	test   %edi,%edi
40bae5:	75 02                	jne    0x40bae9
40bae7:	8b f9                	mov    %ecx,%edi
40bae9:	e8 fe fe ff ff       	call   0x40b9ec
40baee:	8b 5d 08             	mov    0x8(%ebp),%ebx
40baf1:	48                   	dec    %eax
40baf2:	03 f8                	add    %eax,%edi
40baf4:	89 7e 34             	mov    %edi,0x34(%esi)
40baf7:	8b cf                	mov    %edi,%ecx
40baf9:	8b 56 28             	mov    0x28(%esi),%edx
40bafc:	85 d2                	test   %edx,%edx
40bafe:	7f 04                	jg     0x40bb04
40bb00:	85 db                	test   %ebx,%ebx
40bb02:	74 30                	je     0x40bb34
40bb04:	8d 4a ff             	lea    -0x1(%edx),%ecx
40bb07:	8b c3                	mov    %ebx,%eax
40bb09:	33 d2                	xor    %edx,%edx
40bb0b:	89 4e 28             	mov    %ecx,0x28(%esi)
40bb0e:	f7 75 0c             	divl   0xc(%ebp)
40bb11:	80 c2 30             	add    $0x30,%dl
40bb14:	8b d8                	mov    %eax,%ebx
40bb16:	80 fa 39             	cmp    $0x39,%dl
40bb19:	7e 0c                	jle    0x40bb27
40bb1b:	8a 45 10             	mov    0x10(%ebp),%al
40bb1e:	34 01                	xor    $0x1,%al
40bb20:	c0 e0 05             	shl    $0x5,%al
40bb23:	04 07                	add    $0x7,%al
40bb25:	02 d0                	add    %al,%dl
40bb27:	8b 46 34             	mov    0x34(%esi),%eax
40bb2a:	88 10                	mov    %dl,(%eax)
40bb2c:	ff 4e 34             	decl   0x34(%esi)
40bb2f:	8b 4e 34             	mov    0x34(%esi),%ecx
40bb32:	eb c5                	jmp    0x40baf9
40bb34:	2b f9                	sub    %ecx,%edi
40bb36:	89 7e 38             	mov    %edi,0x38(%esi)
40bb39:	ff 46 34             	incl   0x34(%esi)
40bb3c:	5f                   	pop    %edi
40bb3d:	5e                   	pop    %esi
40bb3e:	5b                   	pop    %ebx
40bb3f:	5d                   	pop    %ebp
40bb40:	c2 0c 00             	ret    $0xc
40bb43:	8b ff                	mov    %edi,%edi
40bb45:	55                   	push   %ebp
40bb46:	8b ec                	mov    %esp,%ebp
40bb48:	83 ec 0c             	sub    $0xc,%esp
40bb4b:	53                   	push   %ebx
40bb4c:	56                   	push   %esi
40bb4d:	8b f1                	mov    %ecx,%esi
40bb4f:	57                   	push   %edi
40bb50:	8d 4e 40             	lea    0x40(%esi),%ecx
40bb53:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
40bb59:	85 ff                	test   %edi,%edi
40bb5b:	75 02                	jne    0x40bb5f
40bb5d:	8b f9                	mov    %ecx,%edi
40bb5f:	e8 88 fe ff ff       	call   0x40b9ec
40bb64:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40bb67:	48                   	dec    %eax
40bb68:	03 f8                	add    %eax,%edi
40bb6a:	89 7d fc             	mov    %edi,-0x4(%ebp)
40bb6d:	8b cf                	mov    %edi,%ecx
40bb6f:	89 7e 34             	mov    %edi,0x34(%esi)
40bb72:	8b 7d 08             	mov    0x8(%ebp),%edi
40bb75:	8b 56 28             	mov    0x28(%esi),%edx
40bb78:	85 d2                	test   %edx,%edx
40bb7a:	7f 06                	jg     0x40bb82
40bb7c:	8b c7                	mov    %edi,%eax
40bb7e:	0b c3                	or     %ebx,%eax
40bb80:	74 3d                	je     0x40bbbf
40bb82:	53                   	push   %ebx
40bb83:	6a 00                	push   $0x0
40bb85:	ff 75 10             	push   0x10(%ebp)
40bb88:	8d 42 ff             	lea    -0x1(%edx),%eax
40bb8b:	53                   	push   %ebx
40bb8c:	57                   	push   %edi
40bb8d:	89 46 28             	mov    %eax,0x28(%esi)
40bb90:	e8 5b 69 01 00       	call   0x4224f0
40bb95:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40bb98:	5b                   	pop    %ebx
40bb99:	90                   	nop
40bb9a:	80 c1 30             	add    $0x30,%cl
40bb9d:	8b f8                	mov    %eax,%edi
40bb9f:	8b da                	mov    %edx,%ebx
40bba1:	80 f9 39             	cmp    $0x39,%cl
40bba4:	7e 0c                	jle    0x40bbb2
40bba6:	8a 45 14             	mov    0x14(%ebp),%al
40bba9:	34 01                	xor    $0x1,%al
40bbab:	c0 e0 05             	shl    $0x5,%al
40bbae:	04 07                	add    $0x7,%al
40bbb0:	02 c8                	add    %al,%cl
40bbb2:	8b 46 34             	mov    0x34(%esi),%eax
40bbb5:	88 08                	mov    %cl,(%eax)
40bbb7:	ff 4e 34             	decl   0x34(%esi)
40bbba:	8b 4e 34             	mov    0x34(%esi),%ecx
40bbbd:	eb b6                	jmp    0x40bb75
40bbbf:	8b 7d fc             	mov    -0x4(%ebp),%edi
40bbc2:	2b f9                	sub    %ecx,%edi
40bbc4:	89 7e 38             	mov    %edi,0x38(%esi)
40bbc7:	ff 46 34             	incl   0x34(%esi)
40bbca:	5f                   	pop    %edi
40bbcb:	5e                   	pop    %esi
40bbcc:	5b                   	pop    %ebx
40bbcd:	c9                   	leave
40bbce:	c2 10 00             	ret    $0x10
40bbd1:	8b ff                	mov    %edi,%edi
40bbd3:	55                   	push   %ebp
40bbd4:	8b ec                	mov    %esp,%ebp
40bbd6:	56                   	push   %esi
40bbd7:	33 f6                	xor    %esi,%esi
40bbd9:	39 75 10             	cmp    %esi,0x10(%ebp)
40bbdc:	7e 1c                	jle    0x40bbfa
40bbde:	57                   	push   %edi
40bbdf:	8b 7d 14             	mov    0x14(%ebp),%edi
40bbe2:	8b 4d 08             	mov    0x8(%ebp),%ecx
40bbe5:	57                   	push   %edi
40bbe6:	ff 75 0c             	push   0xc(%ebp)
40bbe9:	e8 26 0e 00 00       	call   0x40ca14
40bbee:	83 3f ff             	cmpl   $0xffffffff,(%edi)
40bbf1:	74 06                	je     0x40bbf9
40bbf3:	46                   	inc    %esi
40bbf4:	3b 75 10             	cmp    0x10(%ebp),%esi
40bbf7:	7c e9                	jl     0x40bbe2
40bbf9:	5f                   	pop    %edi
40bbfa:	5e                   	pop    %esi
40bbfb:	5d                   	pop    %ebp
40bbfc:	c3                   	ret
40bbfd:	8b ff                	mov    %edi,%edi
40bbff:	55                   	push   %ebp
40bc00:	8b ec                	mov    %esp,%ebp
40bc02:	51                   	push   %ecx
40bc03:	33 c0                	xor    %eax,%eax
40bc05:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40bc08:	89 01                	mov    %eax,(%ecx)
40bc0a:	89 41 04             	mov    %eax,0x4(%ecx)
40bc0d:	89 41 08             	mov    %eax,0x8(%ecx)
40bc10:	89 41 0c             	mov    %eax,0xc(%ecx)
40bc13:	89 41 10             	mov    %eax,0x10(%ecx)
40bc16:	89 41 14             	mov    %eax,0x14(%ecx)
40bc19:	89 41 18             	mov    %eax,0x18(%ecx)
40bc1c:	89 41 1c             	mov    %eax,0x1c(%ecx)
40bc1f:	89 41 20             	mov    %eax,0x20(%ecx)
40bc22:	89 41 24             	mov    %eax,0x24(%ecx)
40bc25:	89 41 28             	mov    %eax,0x28(%ecx)
40bc28:	66 89 41 30          	mov    %ax,0x30(%ecx)
40bc2c:	89 41 38             	mov    %eax,0x38(%ecx)
40bc2f:	88 41 3c             	mov    %al,0x3c(%ecx)
40bc32:	89 81 40 04 00 00    	mov    %eax,0x440(%ecx)
40bc38:	89 81 44 04 00 00    	mov    %eax,0x444(%ecx)
40bc3e:	8b c1                	mov    %ecx,%eax
40bc40:	c9                   	leave
40bc41:	c3                   	ret
40bc42:	8b ff                	mov    %edi,%edi
40bc44:	55                   	push   %ebp
40bc45:	8b ec                	mov    %esp,%ebp
40bc47:	56                   	push   %esi
40bc48:	8b f1                	mov    %ecx,%esi
40bc4a:	e8 ae ff ff ff       	call   0x40bbfd
40bc4f:	8b 45 08             	mov    0x8(%ebp),%eax
40bc52:	8b 00                	mov    (%eax),%eax
40bc54:	89 86 48 04 00 00    	mov    %eax,0x448(%esi)
40bc5a:	8b 45 0c             	mov    0xc(%ebp),%eax
40bc5d:	89 06                	mov    %eax,(%esi)
40bc5f:	8b 45 10             	mov    0x10(%ebp),%eax
40bc62:	89 46 04             	mov    %eax,0x4(%esi)
40bc65:	8b 45 18             	mov    0x18(%ebp),%eax
40bc68:	89 46 08             	mov    %eax,0x8(%esi)