401c0d:	56                   	push   %esi
401c0e:	8b f1                	mov    %ecx,%esi
401c10:	33 db                	xor    %ebx,%ebx
401c12:	57                   	push   %edi
401c13:	89 75 fc             	mov    %esi,-0x4(%ebp)
401c16:	8b d6                	mov    %esi,%edx
401c18:	89 5d f8             	mov    %ebx,-0x8(%ebp)
401c1b:	8b fb                	mov    %ebx,%edi
401c1d:	66 39 1e             	cmp    %bx,(%esi)
401c20:	74 27                	je     0x401c49
401c22:	33 f6                	xor    %esi,%esi
401c24:	8b ca                	mov    %edx,%ecx
401c26:	8d 59 02             	lea    0x2(%ecx),%ebx
401c29:	66 8b 01             	mov    (%ecx),%ax
401c2c:	83 c1 02             	add    $0x2,%ecx
401c2f:	66 3b c6             	cmp    %si,%ax
401c32:	75 f5                	jne    0x401c29
401c34:	2b cb                	sub    %ebx,%ecx
401c36:	d1 f9                	sar    $1,%ecx
401c38:	8d 14 4a             	lea    (%edx,%ecx,2),%edx
401c3b:	83 c2 02             	add    $0x2,%edx
401c3e:	47                   	inc    %edi
401c3f:	66 39 32             	cmp    %si,(%edx)
401c42:	75 e0                	jne    0x401c24
401c44:	8b 75 fc             	mov    -0x4(%ebp),%esi
401c47:	33 db                	xor    %ebx,%ebx
401c49:	33 c9                	xor    %ecx,%ecx
401c4b:	8d 47 02             	lea    0x2(%edi),%eax
401c4e:	6a 04                	push   $0x4
401c50:	5a                   	pop    %edx
401c51:	f7 e2                	mul    %edx
401c53:	0f 90 c1             	seto   %cl
401c56:	f7 d9                	neg    %ecx
401c58:	0b c8                	or     %eax,%ecx
401c5a:	51                   	push   %ecx
401c5b:	e8 5e 49 00 00       	call   0x4065be
401c60:	8b d0                	mov    %eax,%edx
401c62:	59                   	pop    %ecx
401c63:	85 d2                	test   %edx,%edx
401c65:	74 38                	je     0x401c9f
401c67:	89 32                	mov    %esi,(%edx)
401c69:	85 ff                	test   %edi,%edi
401c6b:	74 2b                	je     0x401c98
401c6d:	8b fb                	mov    %ebx,%edi
401c6f:	eb 22                	jmp    0x401c93
401c71:	8b ce                	mov    %esi,%ecx
401c73:	89 74 ba 04          	mov    %esi,0x4(%edx,%edi,4)
401c77:	8d 59 02             	lea    0x2(%ecx),%ebx
401c7a:	66 8b 01             	mov    (%ecx),%ax
401c7d:	83 c1 02             	add    $0x2,%ecx
401c80:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
401c84:	75 f4                	jne    0x401c7a
401c86:	2b cb                	sub    %ebx,%ecx
401c88:	d1 f9                	sar    $1,%ecx
401c8a:	8d 34 4e             	lea    (%esi,%ecx,2),%esi
401c8d:	83 c6 02             	add    $0x2,%esi
401c90:	47                   	inc    %edi
401c91:	33 db                	xor    %ebx,%ebx
401c93:	66 39 1e             	cmp    %bx,(%esi)
401c96:	75 d9                	jne    0x401c71
401c98:	89 5c ba 04          	mov    %ebx,0x4(%edx,%edi,4)
401c9c:	8d 42 04             	lea    0x4(%edx),%eax
401c9f:	5f                   	pop    %edi
401ca0:	5e                   	pop    %esi
401ca1:	5b                   	pop    %ebx
401ca2:	c9                   	leave
401ca3:	c3                   	ret
401ca4:	cc                   	int3
401ca5:	cc                   	int3
401ca6:	cc                   	int3
401ca7:	cc                   	int3
401ca8:	cc                   	int3
401ca9:	cc                   	int3
401caa:	8b ff                	mov    %edi,%edi
401cac:	55                   	push   %ebp
401cad:	8b ec                	mov    %esp,%ebp
401caf:	83 ec 10             	sub    $0x10,%esp
401cb2:	53                   	push   %ebx
401cb3:	33 c0                	xor    %eax,%eax
401cb5:	8b d9                	mov    %ecx,%ebx
401cb7:	89 45 fc             	mov    %eax,-0x4(%ebp)
401cba:	56                   	push   %esi
401cbb:	57                   	push   %edi
401cbc:	8b f8                	mov    %eax,%edi
401cbe:	85 db                	test   %ebx,%ebx
401cc0:	74 24                	je     0x401ce6
401cc2:	8b 13                	mov    (%ebx),%edx
401cc4:	8b c8                	mov    %eax,%ecx
401cc6:	eb 1a                	jmp    0x401ce2
401cc8:	8d 72 02             	lea    0x2(%edx),%esi
401ccb:	66 8b 02             	mov    (%edx),%ax
401cce:	83 c2 02             	add    $0x2,%edx
401cd1:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
401cd5:	75 f4                	jne    0x401ccb
401cd7:	2b d6                	sub    %esi,%edx
401cd9:	d1 fa                	sar    $1,%edx
401cdb:	42                   	inc    %edx
401cdc:	03 fa                	add    %edx,%edi
401cde:	41                   	inc    %ecx
401cdf:	8b 14 8b             	mov    (%ebx,%ecx,4),%edx
401ce2:	85 d2                	test   %edx,%edx
401ce4:	75 e2                	jne    0x401cc8
401ce6:	47                   	inc    %edi
401ce7:	33 c9                	xor    %ecx,%ecx
401ce9:	6a 02                	push   $0x2
401ceb:	5a                   	pop    %edx
401cec:	8b c7                	mov    %edi,%eax
401cee:	f7 e2                	mul    %edx
401cf0:	0f 90 c1             	seto   %cl
401cf3:	f7 d9                	neg    %ecx
401cf5:	0b c8                	or     %eax,%ecx
401cf7:	51                   	push   %ecx
401cf8:	e8 c1 48 00 00       	call   0x4065be
401cfd:	8b f0                	mov    %eax,%esi
401cff:	59                   	pop    %ecx
401d00:	85 f6                	test   %esi,%esi
401d02:	74 75                	je     0x401d79
401d04:	33 c9                	xor    %ecx,%ecx
401d06:	8b c1                	mov    %ecx,%eax
401d08:	89 45 f8             	mov    %eax,-0x8(%ebp)
401d0b:	85 db                	test   %ebx,%ebx
401d0d:	74 45                	je     0x401d54
401d0f:	8b 13                	mov    (%ebx),%edx
401d11:	eb 3a                	jmp    0x401d4d
401d13:	52                   	push   %edx
401d14:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
401d17:	8b d7                	mov    %edi,%edx
401d19:	2b d0                	sub    %eax,%edx
401d1b:	89 4d f0             	mov    %ecx,-0x10(%ebp)
401d1e:	e8 2f fc ff ff       	call   0x401952
401d23:	85 c0                	test   %eax,%eax
401d25:	78 4b                	js     0x401d72
401d27:	8b 4d f0             	mov    -0x10(%ebp),%ecx
401d2a:	8d 51 02             	lea    0x2(%ecx),%edx
401d2d:	66 8b 01             	mov    (%ecx),%ax
401d30:	83 c1 02             	add    $0x2,%ecx
401d33:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
401d37:	75 f4                	jne    0x401d2d
401d39:	8b 45 f8             	mov    -0x8(%ebp),%eax
401d3c:	2b ca                	sub    %edx,%ecx
401d3e:	d1 f9                	sar    $1,%ecx
401d40:	40                   	inc    %eax
401d41:	03 c1                	add    %ecx,%eax
401d43:	8b 4d f4             	mov    -0xc(%ebp),%ecx
401d46:	41                   	inc    %ecx
401d47:	89 45 f8             	mov    %eax,-0x8(%ebp)
401d4a:	8b 14 8b             	mov    (%ebx,%ecx,4),%edx
401d4d:	89 4d f4             	mov    %ecx,-0xc(%ebp)
401d50:	85 d2                	test   %edx,%edx
401d52:	75 bf                	jne    0x401d13
401d54:	3b c7                	cmp    %edi,%eax
401d56:	7d 08                	jge    0x401d60
401d58:	33 c9                	xor    %ecx,%ecx
401d5a:	66 89 0c 46          	mov    %cx,(%esi,%eax,2)
401d5e:	eb 07                	jmp    0x401d67
401d60:	33 c0                	xor    %eax,%eax
401d62:	66 89 44 7e fe       	mov    %ax,-0x2(%esi,%edi,2)
401d67:	8b ce                	mov    %esi,%ecx
401d69:	e8 97 fe ff ff       	call   0x401c05
401d6e:	85 c0                	test   %eax,%eax
401d70:	75 09                	jne    0x401d7b
401d72:	56                   	push   %esi
401d73:	e8 75 48 00 00       	call   0x4065ed
401d78:	59                   	pop    %ecx
401d79:	33 c0                	xor    %eax,%eax
401d7b:	5f                   	pop    %edi
401d7c:	5e                   	pop    %esi
401d7d:	5b                   	pop    %ebx
401d7e:	c9                   	leave
401d7f:	c3                   	ret
401d80:	cc                   	int3
401d81:	cc                   	int3
401d82:	cc                   	int3
401d83:	cc                   	int3
401d84:	cc                   	int3
401d85:	cc                   	int3
401d86:	8b ff                	mov    %edi,%edi
401d88:	56                   	push   %esi
401d89:	8b f1                	mov    %ecx,%esi
401d8b:	85 f6                	test   %esi,%esi
401d8d:	74 17                	je     0x401da6
401d8f:	83 ee 04             	sub    $0x4,%esi
401d92:	83 3e 00             	cmpl   $0x0,(%esi)
401d95:	74 08                	je     0x401d9f
401d97:	ff 36                	push   (%esi)
401d99:	e8 4f 48 00 00       	call   0x4065ed
401d9e:	59                   	pop    %ecx
401d9f:	56                   	push   %esi
401da0:	e8 48 48 00 00       	call   0x4065ed
401da5:	59                   	pop    %ecx
401da6:	5e                   	pop    %esi
401da7:	c3                   	ret
401da8:	cc                   	int3
401da9:	cc                   	int3
401daa:	cc                   	int3
401dab:	cc                   	int3
401dac:	cc                   	int3
401dad:	cc                   	int3
401dae:	8b ff                	mov    %edi,%edi
401db0:	55                   	push   %ebp
401db1:	8b ec                	mov    %esp,%ebp
401db3:	83 ec 0c             	sub    $0xc,%esp
401db6:	53                   	push   %ebx
401db7:	56                   	push   %esi
401db8:	57                   	push   %edi
401db9:	68 04 20 00 00       	push   $0x2004
401dbe:	8b fa                	mov    %edx,%edi
401dc0:	8b d9                	mov    %ecx,%ebx
401dc2:	e8 f7 47 00 00       	call   0x4065be
401dc7:	8b f0                	mov    %eax,%esi
401dc9:	59                   	pop    %ecx
401dca:	85 f6                	test   %esi,%esi
401dcc:	0f 84 82 00 00 00    	je     0x401e54
401dd2:	8d 45 fc             	lea    -0x4(%ebp),%eax
401dd5:	50                   	push   %eax
401dd6:	68 00 20 00 00       	push   $0x2000
401ddb:	eb 47                	jmp    0x401e24
401ddd:	ff 15 38 80 40 00    	call   *0x408038
401de3:	83 f8 7a             	cmp    $0x7a,%eax
401de6:	75 65                	jne    0x401e4d
401de8:	83 7d f4 07          	cmpl   $0x7,-0xc(%ebp)
401dec:	75 5f                	jne    0x401e4d
401dee:	8b 45 fc             	mov    -0x4(%ebp),%eax
401df1:	56                   	push   %esi
401df2:	89 45 f8             	mov    %eax,-0x8(%ebp)
401df5:	e8 f3 47 00 00       	call   0x4065ed
401dfa:	8b 45 f8             	mov    -0x8(%ebp),%eax
401dfd:	33 c9                	xor    %ecx,%ecx
401dff:	6a 02                	push   $0x2
401e01:	d1 e8                	shr    $1,%eax
401e03:	5a                   	pop    %edx
401e04:	03 c2                	add    %edx,%eax
401e06:	f7 e2                	mul    %edx
401e08:	0f 90 c1             	seto   %cl
401e0b:	f7 d9                	neg    %ecx
401e0d:	0b c8                	or     %eax,%ecx
401e0f:	51                   	push   %ecx
401e10:	e8 a9 47 00 00       	call   0x4065be
401e15:	8b f0                	mov    %eax,%esi
401e17:	59                   	pop    %ecx
401e18:	59                   	pop    %ecx
401e19:	85 f6                	test   %esi,%esi
401e1b:	74 37                	je     0x401e54
401e1d:	8d 45 fc             	lea    -0x4(%ebp),%eax
401e20:	50                   	push   %eax
401e21:	ff 75 f8             	push   -0x8(%ebp)
401e24:	56                   	push   %esi
401e25:	8d 45 f4             	lea    -0xc(%ebp),%eax
401e28:	50                   	push   %eax
401e29:	ff 75 08             	push   0x8(%ebp)
401e2c:	57                   	push   %edi
401e2d:	53                   	push   %ebx
401e2e:	ff 15 18 81 40 00    	call   *0x408118
401e34:	85 c0                	test   %eax,%eax
401e36:	74 a5                	je     0x401ddd
401e38:	8b 45 fc             	mov    -0x4(%ebp),%eax
401e3b:	33 c9                	xor    %ecx,%ecx
401e3d:	d1 e8                	shr    $1,%eax
401e3f:	89 0c 46             	mov    %ecx,(%esi,%eax,2)
401e42:	8b ce                	mov    %esi,%ecx
401e44:	e8 bc fd ff ff       	call   0x401c05
401e49:	85 c0                	test   %eax,%eax
401e4b:	75 09                	jne    0x401e56
401e4d:	56                   	push   %esi
401e4e:	e8 9a 47 00 00       	call   0x4065ed
401e53:	59                   	pop    %ecx
401e54:	33 c0                	xor    %eax,%eax
401e56:	5f                   	pop    %edi
401e57:	5e                   	pop    %esi
401e58:	5b                   	pop    %ebx
401e59:	c9                   	leave
401e5a:	c2 04 00             	ret    $0x4
401e5d:	cc                   	int3
401e5e:	cc                   	int3
401e5f:	cc                   	int3
401e60:	cc                   	int3
401e61:	cc                   	int3
401e62:	cc                   	int3
401e63:	8b ff                	mov    %edi,%edi
401e65:	55                   	push   %ebp
401e66:	8b ec                	mov    %esp,%ebp
401e68:	83 ec 0c             	sub    $0xc,%esp
401e6b:	53                   	push   %ebx
401e6c:	56                   	push   %esi
401e6d:	57                   	push   %edi
401e6e:	8b f1                	mov    %ecx,%esi
401e70:	8b da                	mov    %edx,%ebx
401e72:	68 04 20 00 00       	push   $0x2004
401e77:	89 75 f4             	mov    %esi,-0xc(%ebp)
401e7a:	e8 3f 47 00 00       	call   0x4065be
401e7f:	8b f8                	mov    %eax,%edi
401e81:	59                   	pop    %ecx
401e82:	85 ff                	test   %edi,%edi
401e84:	0f 84 88 00 00 00    	je     0x401f12
401e8a:	8d 45 fc             	lea    -0x4(%ebp),%eax
401e8d:	c7 45 fc 00 20 00 00 	movl   $0x2000,-0x4(%ebp)
401e94:	50                   	push   %eax
401e95:	57                   	push   %edi
401e96:	8d 45 f8             	lea    -0x8(%ebp),%eax
401e99:	50                   	push   %eax
401e9a:	6a 00                	push   $0x0
401e9c:	53                   	push   %ebx
401e9d:	56                   	push   %esi
401e9e:	eb 4c                	jmp    0x401eec
401ea0:	ff 15 38 80 40 00    	call   *0x408038
401ea6:	3d ea 00 00 00       	cmp    $0xea,%eax
401eab:	75 5e                	jne    0x401f0b
401ead:	83 7d f8 07          	cmpl   $0x7,-0x8(%ebp)
401eb1:	75 58                	jne    0x401f0b
401eb3:	8b 75 fc             	mov    -0x4(%ebp),%esi
401eb6:	57                   	push   %edi
401eb7:	e8 31 47 00 00       	call   0x4065ed
401ebc:	6a 02                	push   $0x2
401ebe:	5a                   	pop    %edx
401ebf:	d1 ee                	shr    $1,%esi
401ec1:	33 c9                	xor    %ecx,%ecx
401ec3:	8d 04 32             	lea    (%edx,%esi,1),%eax
401ec6:	f7 e2                	mul    %edx
401ec8:	0f 90 c1             	seto   %cl
401ecb:	f7 d9                	neg    %ecx
401ecd:	0b c8                	or     %eax,%ecx
401ecf:	51                   	push   %ecx
401ed0:	e8 e9 46 00 00       	call   0x4065be
401ed5:	8b f8                	mov    %eax,%edi
401ed7:	59                   	pop    %ecx
401ed8:	59                   	pop    %ecx
401ed9:	85 ff                	test   %edi,%edi
401edb:	74 35                	je     0x401f12
401edd:	8d 45 fc             	lea    -0x4(%ebp),%eax
401ee0:	50                   	push   %eax
401ee1:	57                   	push   %edi
401ee2:	8d 45 f8             	lea    -0x8(%ebp),%eax
401ee5:	50                   	push   %eax
401ee6:	6a 00                	push   $0x0
401ee8:	53                   	push   %ebx
401ee9:	ff 75 f4             	push   -0xc(%ebp)
401eec:	ff 15 00 80 40 00    	call   *0x408000
401ef2:	85 c0                	test   %eax,%eax
401ef4:	75 aa                	jne    0x401ea0
401ef6:	8b 45 fc             	mov    -0x4(%ebp),%eax
401ef9:	33 c9                	xor    %ecx,%ecx
401efb:	d1 e8                	shr    $1,%eax
401efd:	89 0c 47             	mov    %ecx,(%edi,%eax,2)
401f00:	8b cf                	mov    %edi,%ecx
401f02:	e8 fe fc ff ff       	call   0x401c05
401f07:	85 c0                	test   %eax,%eax
401f09:	75 09                	jne    0x401f14
401f0b:	57                   	push   %edi
401f0c:	e8 dc 46 00 00       	call   0x4065ed
401f11:	59                   	pop    %ecx