401c3f:	ff 31                	push   (%ecx)
401c41:	ff 15 fc 70 40 00    	call   *0x4070fc
401c47:	5f                   	pop    %edi
401c48:	5e                   	pop    %esi
401c49:	5d                   	pop    %ebp
401c4a:	c2 08 00             	ret    $0x8
401c4d:	8b ff                	mov    %edi,%edi
401c4f:	55                   	push   %ebp
401c50:	8b ec                	mov    %esp,%ebp
401c52:	81 ec 28 02 00 00    	sub    $0x228,%esp
401c58:	a1 54 60 40 00       	mov    0x406054,%eax
401c5d:	33 c5                	xor    %ebp,%eax
401c5f:	89 45 f8             	mov    %eax,-0x8(%ebp)
401c62:	53                   	push   %ebx
401c63:	8b 5d 08             	mov    0x8(%ebp),%ebx
401c66:	8d 85 e0 fd ff ff    	lea    -0x220(%ebp),%eax
401c6c:	56                   	push   %esi
401c6d:	57                   	push   %edi
401c6e:	50                   	push   %eax
401c6f:	8b f9                	mov    %ecx,%edi
401c71:	33 c9                	xor    %ecx,%ecx
401c73:	68 1f 00 02 00       	push   $0x2001f
401c78:	51                   	push   %ecx
401c79:	53                   	push   %ebx
401c7a:	ff 37                	push   (%edi)
401c7c:	89 8d e8 fd ff ff    	mov    %ecx,-0x218(%ebp)
401c82:	89 8d ec fd ff ff    	mov    %ecx,-0x214(%ebp)
401c88:	89 8d f0 fd ff ff    	mov    %ecx,-0x210(%ebp)
401c8e:	89 8d e0 fd ff ff    	mov    %ecx,-0x220(%ebp)
401c94:	ff 15 00 71 40 00    	call   *0x407100
401c9a:	8b f0                	mov    %eax,%esi
401c9c:	85 f6                	test   %esi,%esi
401c9e:	0f 85 b6 00 00 00    	jne    0x401d5a
401ca4:	39 b5 e8 fd ff ff    	cmp    %esi,-0x218(%ebp)
401caa:	74 0e                	je     0x401cba
401cac:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
401cb2:	ff 15 f8 70 40 00    	call   *0x4070f8
401cb8:	8b f0                	mov    %eax,%esi
401cba:	8b 85 e0 fd ff ff    	mov    -0x220(%ebp),%eax
401cc0:	89 85 e8 fd ff ff    	mov    %eax,-0x218(%ebp)
401cc6:	85 f6                	test   %esi,%esi
401cc8:	0f 85 8c 00 00 00    	jne    0x401d5a
401cce:	8d 8d d8 fd ff ff    	lea    -0x228(%ebp),%ecx
401cd4:	51                   	push   %ecx
401cd5:	56                   	push   %esi
401cd6:	56                   	push   %esi
401cd7:	56                   	push   %esi
401cd8:	8d 8d e4 fd ff ff    	lea    -0x21c(%ebp),%ecx
401cde:	51                   	push   %ecx
401cdf:	8d 8d f4 fd ff ff    	lea    -0x20c(%ebp),%ecx
401ce5:	51                   	push   %ecx
401ce6:	56                   	push   %esi
401ce7:	50                   	push   %eax
401ce8:	eb 37                	jmp    0x401d21
401cea:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
401cf0:	50                   	push   %eax
401cf1:	8d 8d e8 fd ff ff    	lea    -0x218(%ebp),%ecx
401cf7:	e8 51 ff ff ff       	call   0x401c4d
401cfc:	8b f0                	mov    %eax,%esi
401cfe:	85 f6                	test   %esi,%esi
401d00:	75 58                	jne    0x401d5a
401d02:	8d 85 d8 fd ff ff    	lea    -0x228(%ebp),%eax
401d08:	50                   	push   %eax
401d09:	56                   	push   %esi
401d0a:	56                   	push   %esi
401d0b:	56                   	push   %esi
401d0c:	8d 85 e4 fd ff ff    	lea    -0x21c(%ebp),%eax
401d12:	50                   	push   %eax
401d13:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
401d19:	50                   	push   %eax
401d1a:	56                   	push   %esi
401d1b:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
401d21:	c7 85 e4 fd ff ff 00 	movl   $0x100,-0x21c(%ebp)
401d28:	01 00 00
401d2b:	ff 15 e4 70 40 00    	call   *0x4070e4
401d31:	85 c0                	test   %eax,%eax
401d33:	74 b5                	je     0x401cea
401d35:	83 bd e8 fd ff ff 00 	cmpl   $0x0,-0x218(%ebp)
401d3c:	74 12                	je     0x401d50
401d3e:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
401d44:	ff 15 f8 70 40 00    	call   *0x4070f8
401d4a:	89 b5 e8 fd ff ff    	mov    %esi,-0x218(%ebp)
401d50:	53                   	push   %ebx
401d51:	8b cf                	mov    %edi,%ecx
401d53:	e8 d3 fd ff ff       	call   0x401b2b
401d58:	8b f0                	mov    %eax,%esi
401d5a:	83 bd e8 fd ff ff 00 	cmpl   $0x0,-0x218(%ebp)
401d61:	74 0c                	je     0x401d6f
401d63:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
401d69:	ff 15 f8 70 40 00    	call   *0x4070f8
401d6f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
401d72:	8b c6                	mov    %esi,%eax
401d74:	5f                   	pop    %edi
401d75:	5e                   	pop    %esi
401d76:	33 cd                	xor    %ebp,%ecx
401d78:	5b                   	pop    %ebx
401d79:	e8 22 32 00 00       	call   0x404fa0
401d7e:	c9                   	leave
401d7f:	c2 04 00             	ret    $0x4
401d82:	8b ff                	mov    %edi,%edi
401d84:	55                   	push   %ebp
401d85:	8b ec                	mov    %esp,%ebp
401d87:	51                   	push   %ecx
401d88:	51                   	push   %ecx
401d89:	53                   	push   %ebx
401d8a:	56                   	push   %esi
401d8b:	57                   	push   %edi
401d8c:	6a 08                	push   $0x8
401d8e:	8b f9                	mov    %ecx,%edi
401d90:	33 db                	xor    %ebx,%ebx
401d92:	e8 79 2e 00 00       	call   0x404c10
401d97:	8b f0                	mov    %eax,%esi
401d99:	59                   	pop    %ecx
401d9a:	85 f6                	test   %esi,%esi
401d9c:	0f 84 02 01 00 00    	je     0x401ea4
401da2:	39 5d 08             	cmp    %ebx,0x8(%ebp)
401da5:	75 04                	jne    0x401dab
401da7:	8b cb                	mov    %ebx,%ecx
401da9:	eb 15                	jmp    0x401dc0
401dab:	8b 4d 08             	mov    0x8(%ebp),%ecx
401dae:	8d 51 02             	lea    0x2(%ecx),%edx
401db1:	66 8b 01             	mov    (%ecx),%ax
401db4:	83 c1 02             	add    $0x2,%ecx
401db7:	66 3b c3             	cmp    %bx,%ax
401dba:	75 f5                	jne    0x401db1
401dbc:	2b ca                	sub    %edx,%ecx
401dbe:	d1 f9                	sar    $1,%ecx
401dc0:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
401dc7:	89 45 fc             	mov    %eax,-0x4(%ebp)
401dca:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
401dcd:	75 04                	jne    0x401dd3
401dcf:	8b cb                	mov    %ebx,%ecx
401dd1:	eb 15                	jmp    0x401de8
401dd3:	8b 4d 0c             	mov    0xc(%ebp),%ecx
401dd6:	8d 51 02             	lea    0x2(%ecx),%edx
401dd9:	66 8b 01             	mov    (%ecx),%ax
401ddc:	83 c1 02             	add    $0x2,%ecx
401ddf:	66 3b c3             	cmp    %bx,%ax
401de2:	75 f5                	jne    0x401dd9
401de4:	2b ca                	sub    %edx,%ecx
401de6:	d1 f9                	sar    $1,%ecx
401de8:	ff 75 fc             	push   -0x4(%ebp)
401deb:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
401df2:	89 45 f8             	mov    %eax,-0x8(%ebp)
401df5:	ff 15 00 70 40 00    	call   *0x407000
401dfb:	ff 75 f8             	push   -0x8(%ebp)
401dfe:	89 06                	mov    %eax,(%esi)
401e00:	ff 15 00 70 40 00    	call   *0x407000
401e06:	89 46 04             	mov    %eax,0x4(%esi)
401e09:	39 1e                	cmp    %ebx,(%esi)
401e0b:	74 7f                	je     0x401e8c
401e0d:	85 c0                	test   %eax,%eax
401e0f:	74 7b                	je     0x401e8c
401e11:	ff 75 fc             	push   -0x4(%ebp)
401e14:	ff 75 08             	push   0x8(%ebp)
401e17:	ff 36                	push   (%esi)
401e19:	e8 6e 38 00 00       	call   0x40568c
401e1e:	ff 75 f8             	push   -0x8(%ebp)
401e21:	ff 75 0c             	push   0xc(%ebp)
401e24:	ff 76 04             	push   0x4(%esi)
401e27:	e8 60 38 00 00       	call   0x40568c
401e2c:	8b 47 04             	mov    0x4(%edi),%eax
401e2f:	83 c4 18             	add    $0x18,%esp
401e32:	8b 4f 08             	mov    0x8(%edi),%ecx
401e35:	3b c1                	cmp    %ecx,%eax
401e37:	75 47                	jne    0x401e80
401e39:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
401e3c:	89 47 08             	mov    %eax,0x8(%edi)
401e3f:	c1 e0 02             	shl    $0x2,%eax
401e42:	50                   	push   %eax
401e43:	ff 37                	push   (%edi)
401e45:	ff 15 b4 71 40 00    	call   *0x4071b4
401e4b:	59                   	pop    %ecx
401e4c:	59                   	pop    %ecx
401e4d:	85 c0                	test   %eax,%eax
401e4f:	75 2a                	jne    0x401e7b
401e51:	ff 36                	push   (%esi)
401e53:	ff 15 0c 70 40 00    	call   *0x40700c
401e59:	ff 76 04             	push   0x4(%esi)
401e5c:	ff 15 0c 70 40 00    	call   *0x40700c
401e62:	56                   	push   %esi
401e63:	e8 d1 2d 00 00       	call   0x404c39
401e68:	8b 47 08             	mov    0x8(%edi),%eax
401e6b:	bb 0e 00 07 80       	mov    $0x8007000e,%ebx
401e70:	99                   	cltd
401e71:	2b c2                	sub    %edx,%eax
401e73:	d1 f8                	sar    $1,%eax
401e75:	59                   	pop    %ecx
401e76:	89 47 08             	mov    %eax,0x8(%edi)
401e79:	eb 0d                	jmp    0x401e88
401e7b:	89 07                	mov    %eax,(%edi)
401e7d:	8b 47 04             	mov    0x4(%edi),%eax
401e80:	8b 0f                	mov    (%edi),%ecx
401e82:	89 34 81             	mov    %esi,(%ecx,%eax,4)
401e85:	ff 47 04             	incl   0x4(%edi)
401e88:	8b c3                	mov    %ebx,%eax
401e8a:	eb 1d                	jmp    0x401ea9
401e8c:	ff 36                	push   (%esi)
401e8e:	ff 15 0c 70 40 00    	call   *0x40700c
401e94:	ff 76 04             	push   0x4(%esi)
401e97:	ff 15 0c 70 40 00    	call   *0x40700c
401e9d:	56                   	push   %esi
401e9e:	e8 96 2d 00 00       	call   0x404c39
401ea3:	59                   	pop    %ecx
401ea4:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
401ea9:	5f                   	pop    %edi
401eaa:	5e                   	pop    %esi
401eab:	5b                   	pop    %ebx
401eac:	c9                   	leave
401ead:	c2 08 00             	ret    $0x8
401eb0:	8b ff                	mov    %edi,%edi
401eb2:	55                   	push   %ebp
401eb3:	8b ec                	mov    %esp,%ebp
401eb5:	56                   	push   %esi
401eb6:	8b f1                	mov    %ecx,%esi
401eb8:	8b 16                	mov    (%esi),%edx
401eba:	8b 4e 04             	mov    0x4(%esi),%ecx
401ebd:	8d 42 01             	lea    0x1(%edx),%eax
401ec0:	3b c1                	cmp    %ecx,%eax
401ec2:	7e 1b                	jle    0x401edf
401ec4:	8b c1                	mov    %ecx,%eax
401ec6:	c1 e0 02             	shl    $0x2,%eax
401ec9:	50                   	push   %eax
401eca:	ff 76 08             	push   0x8(%esi)
401ecd:	ff 15 28 70 40 00    	call   *0x407028
401ed3:	85 c0                	test   %eax,%eax
401ed5:	74 1a                	je     0x401ef1
401ed7:	d1 66 04             	shll   $1,0x4(%esi)
401eda:	8b 16                	mov    (%esi),%edx
401edc:	89 46 08             	mov    %eax,0x8(%esi)
401edf:	8b 45 08             	mov    0x8(%ebp),%eax
401ee2:	8b 4e 08             	mov    0x8(%esi),%ecx
401ee5:	66 8b 00             	mov    (%eax),%ax
401ee8:	66 89 04 51          	mov    %ax,(%ecx,%edx,2)
401eec:	33 c0                	xor    %eax,%eax
401eee:	ff 06                	incl   (%esi)
401ef0:	40                   	inc    %eax
401ef1:	5e                   	pop    %esi
401ef2:	5d                   	pop    %ebp
401ef3:	c2 04 00             	ret    $0x4
401ef6:	8b ff                	mov    %edi,%edi
401ef8:	55                   	push   %ebp
401ef9:	8b ec                	mov    %esp,%ebp
401efb:	83 ec 1c             	sub    $0x1c,%esp
401efe:	a1 54 60 40 00       	mov    0x406054,%eax
401f03:	33 c5                	xor    %ebp,%eax
401f05:	89 45 fc             	mov    %eax,-0x4(%ebp)
401f08:	53                   	push   %ebx
401f09:	56                   	push   %esi
401f0a:	57                   	push   %edi
401f0b:	33 db                	xor    %ebx,%ebx
401f0d:	89 4d e8             	mov    %ecx,-0x18(%ebp)
401f10:	6a 02                	push   $0x2
401f12:	53                   	push   %ebx
401f13:	ff 75 08             	push   0x8(%ebp)
401f16:	8b f3                	mov    %ebx,%esi
401f18:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
401f1b:	89 75 ec             	mov    %esi,-0x14(%ebp)
401f1e:	ff 15 80 70 40 00    	call   *0x407080
401f24:	89 45 f0             	mov    %eax,-0x10(%ebp)
401f27:	85 c0                	test   %eax,%eax
401f29:	75 1e                	jne    0x401f49
401f2b:	ff 15 40 70 40 00    	call   *0x407040
401f31:	8b f0                	mov    %eax,%esi
401f33:	85 f6                	test   %esi,%esi
401f35:	0f 8e 5d 01 00 00    	jle    0x402098
401f3b:	0f b7 f6             	movzwl %si,%esi
401f3e:	81 ce 00 00 07 80    	or     $0x80070000,%esi
401f44:	e9 4f 01 00 00       	jmp    0x402098
401f49:	53                   	push   %ebx
401f4a:	6a 64                	push   $0x64
401f4c:	ff 75 10             	push   0x10(%ebp)
401f4f:	50                   	push   %eax
401f50:	ff 15 88 70 40 00    	call   *0x407088
401f56:	8b f8                	mov    %eax,%edi
401f58:	85 ff                	test   %edi,%edi
401f5a:	75 1e                	jne    0x401f7a
401f5c:	ff 15 40 70 40 00    	call   *0x407040
401f62:	8b f0                	mov    %eax,%esi
401f64:	85 f6                	test   %esi,%esi
401f66:	0f 8e 23 01 00 00    	jle    0x40208f
401f6c:	0f b7 f6             	movzwl %si,%esi
401f6f:	81 ce 00 00 07 80    	or     $0x80070000,%esi
401f75:	e9 15 01 00 00       	jmp    0x40208f
401f7a:	57                   	push   %edi
401f7b:	ff 75 f0             	push   -0x10(%ebp)
401f7e:	ff 15 84 70 40 00    	call   *0x407084
401f84:	89 45 f4             	mov    %eax,-0xc(%ebp)
401f87:	85 c0                	test   %eax,%eax
401f89:	74 d1                	je     0x401f5c
401f8b:	57                   	push   %edi
401f8c:	ff 75 f0             	push   -0x10(%ebp)
401f8f:	ff 15 7c 70 40 00    	call   *0x40707c
401f95:	8b c8                	mov    %eax,%ecx
401f97:	8b 45 f4             	mov    -0xc(%ebp),%eax
401f9a:	89 4d f8             	mov    %ecx,-0x8(%ebp)
401f9d:	8b f8                	mov    %eax,%edi
401f9f:	38 1c 01             	cmp    %bl,(%ecx,%eax,1)
401fa2:	74 67                	je     0x40200b
401fa4:	8d 79 01             	lea    0x1(%ecx),%edi
401fa7:	81 ff 00 04 00 00    	cmp    $0x400,%edi
401fad:	77 16                	ja     0x401fc5
401faf:	8b cf                	mov    %edi,%ecx
401fb1:	e8 b5 fa ff ff       	call   0x401a6b
401fb6:	84 c0                	test   %al,%al
401fb8:	74 0b                	je     0x401fc5
401fba:	8b c7                	mov    %edi,%eax
401fbc:	e8 9f 36 00 00       	call   0x405660
401fc1:	8b fc                	mov    %esp,%edi
401fc3:	eb 21                	jmp    0x401fe6
401fc5:	8d 47 08             	lea    0x8(%edi),%eax
401fc8:	3b c7                	cmp    %edi,%eax
401fca:	73 04                	jae    0x401fd0
401fcc:	8b fb                	mov    %ebx,%edi
401fce:	eb 16                	jmp    0x401fe6
401fd0:	50                   	push   %eax
401fd1:	ff 15 84 71 40 00    	call   *0x407184
401fd7:	59                   	pop    %ecx
401fd8:	85 c0                	test   %eax,%eax
401fda:	74 f0                	je     0x401fcc
401fdc:	8b f0                	mov    %eax,%esi
401fde:	89 18                	mov    %ebx,(%eax)
401fe0:	89 75 ec             	mov    %esi,-0x14(%ebp)
401fe3:	8d 78 08             	lea    0x8(%eax),%edi
401fe6:	85 ff                	test   %edi,%edi
401fe8:	75 0a                	jne    0x401ff4
401fea:	be 0e 00 07 80       	mov    $0x8007000e,%esi
401fef:	e9 9b 00 00 00       	jmp    0x40208f
401ff4:	8b 45 f8             	mov    -0x8(%ebp),%eax
401ff7:	40                   	inc    %eax
401ff8:	50                   	push   %eax
401ff9:	ff 75 f4             	push   -0xc(%ebp)
401ffc:	57                   	push   %edi
401ffd:	e8 8a 36 00 00       	call   0x40568c
402002:	8b 45 f8             	mov    -0x8(%ebp),%eax
402005:	83 c4 0c             	add    $0xc,%esp
402008:	88 1c 07             	mov    %bl,(%edi,%eax,1)
40200b:	85 ff                	test   %edi,%edi
40200d:	74 72                	je     0x402081
40200f:	8b cf                	mov    %edi,%ecx
402011:	8d 51 01             	lea    0x1(%ecx),%edx
402014:	8a 01                	mov    (%ecx),%al
402016:	41                   	inc    %ecx
402017:	84 c0                	test   %al,%al
402019:	75 f9                	jne    0x402014
40201b:	2b ca                	sub    %edx,%ecx
40201d:	8d 41 01             	lea    0x1(%ecx),%eax
402020:	89 45 f4             	mov    %eax,-0xc(%ebp)
402023:	03 c0                	add    %eax,%eax
402025:	89 45 f8             	mov    %eax,-0x8(%ebp)