408c77:	74 25                	je     0x408c9e
408c79:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
408c7d:	74 1f                	je     0x408c9e
408c7f:	6a ff                	push   $0xffffffff
408c81:	ff 75 fc             	push   -0x4(%ebp)
408c84:	68 04 01 00 00       	push   $0x104
408c89:	ff 77 10             	push   0x10(%edi)
408c8c:	ff 15 e8 b2 41 00    	call   *0x41b2e8
408c92:	ff 75 fc             	push   -0x4(%ebp)
408c95:	ff 15 24 b3 41 00    	call   *0x41b324
408c9b:	83 c4 14             	add    $0x14,%esp
408c9e:	8b 47 10             	mov    0x10(%edi),%eax
408ca1:	0f b7 00             	movzwl (%eax),%eax
408ca4:	eb 02                	jmp    0x408ca8
408ca6:	33 c0                	xor    %eax,%eax
408ca8:	5f                   	pop    %edi
408ca9:	c9                   	leave
408caa:	c2 04 00             	ret    $0x4
408cad:	cc                   	int3
408cae:	cc                   	int3
408caf:	cc                   	int3
408cb0:	8b ff                	mov    %edi,%edi
408cb2:	56                   	push   %esi
408cb3:	8b f1                	mov    %ecx,%esi
408cb5:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
408cb9:	74 25                	je     0x408ce0
408cbb:	83 7e 10 00          	cmpl   $0x0,0x10(%esi)
408cbf:	74 1f                	je     0x408ce0
408cc1:	ff 76 10             	push   0x10(%esi)
408cc4:	ff 76 04             	push   0x4(%esi)
408cc7:	ff 15 50 b2 41 00    	call   *0x41b250
408ccd:	6a 00                	push   $0x0
408ccf:	6a 01                	push   $0x1
408cd1:	8b ce                	mov    %esi,%ecx
408cd3:	e8 94 3f 00 00       	call   0x40cc6c
408cd8:	8b 4e 04             	mov    0x4(%esi),%ecx
408cdb:	e8 c4 6f 00 00       	call   0x40fca4
408ce0:	5e                   	pop    %esi
408ce1:	c2 04 00             	ret    $0x4
408ce4:	cc                   	int3
408ce5:	cc                   	int3
408ce6:	cc                   	int3
408ce7:	cc                   	int3
408ce8:	cc                   	int3
408ce9:	cc                   	int3
408cea:	cc                   	int3
408ceb:	cc                   	int3
408cec:	cc                   	int3
408ced:	cc                   	int3
408cee:	cc                   	int3
408cef:	cc                   	int3
408cf0:	8b ff                	mov    %edi,%edi
408cf2:	55                   	push   %ebp
408cf3:	8b ec                	mov    %esp,%ebp
408cf5:	51                   	push   %ecx
408cf6:	51                   	push   %ecx
408cf7:	8b 45 08             	mov    0x8(%ebp),%eax
408cfa:	8b d0                	mov    %eax,%edx
408cfc:	53                   	push   %ebx
408cfd:	56                   	push   %esi
408cfe:	57                   	push   %edi
408cff:	0f b7 c0             	movzwl %ax,%eax
408d02:	33 ff                	xor    %edi,%edi
408d04:	c1 ea 10             	shr    $0x10,%edx
408d07:	8b f1                	mov    %ecx,%esi
408d09:	85 c0                	test   %eax,%eax
408d0b:	0f 84 02 01 00 00    	je     0x408e13
408d11:	83 f8 02             	cmp    $0x2,%eax
408d14:	0f 86 e6 00 00 00    	jbe    0x408e00
408d1a:	3d 04 04 00 00       	cmp    $0x404,%eax
408d1f:	0f 85 ee 00 00 00    	jne    0x408e13
408d25:	83 c0 fc             	add    $0xfffffffc,%eax
408d28:	66 3b c2             	cmp    %dx,%ax
408d2b:	0f 85 e5 00 00 00    	jne    0x408e16
408d31:	68 08 02 00 00       	push   $0x208
408d36:	e8 51 a8 00 00       	call   0x41358c
408d3b:	8b d8                	mov    %eax,%ebx
408d3d:	59                   	pop    %ecx
408d3e:	85 db                	test   %ebx,%ebx
408d40:	0f 84 d0 00 00 00    	je     0x408e16
408d46:	68 04 01 00 00       	push   $0x104
408d4b:	53                   	push   %ebx
408d4c:	68 04 04 00 00       	push   $0x404
408d51:	ff 76 04             	push   0x4(%esi)
408d54:	ff 15 0c b2 41 00    	call   *0x41b20c
408d5a:	8d 45 fc             	lea    -0x4(%ebp),%eax
408d5d:	89 7d fc             	mov    %edi,-0x4(%ebp)
408d60:	50                   	push   %eax
408d61:	ba 04 01 00 00       	mov    $0x104,%edx
408d66:	8b cb                	mov    %ebx,%ecx
408d68:	e8 06 01 00 00       	call   0x408e73
408d6d:	85 c0                	test   %eax,%eax
408d6f:	0f 88 81 00 00 00    	js     0x408df6
408d75:	8b cf                	mov    %edi,%ecx
408d77:	39 4d fc             	cmp    %ecx,-0x4(%ebp)
408d7a:	7e 2a                	jle    0x408da6
408d7c:	8b c3                	mov    %ebx,%eax
408d7e:	0f b7 10             	movzwl (%eax),%edx
408d81:	c7 45 f8 20 00 00 00 	movl   $0x20,-0x8(%ebp)
408d88:	66 39 55 f8          	cmp    %dx,-0x8(%ebp)
408d8c:	74 0d                	je     0x408d9b
408d8e:	c7 45 f8 00 30 00 00 	movl   $0x3000,-0x8(%ebp)
408d95:	66 39 55 f8          	cmp    %dx,-0x8(%ebp)
408d99:	75 2a                	jne    0x408dc5
408d9b:	41                   	inc    %ecx
408d9c:	83 c0 02             	add    $0x2,%eax
408d9f:	3b 4d fc             	cmp    -0x4(%ebp),%ecx
408da2:	7c da                	jl     0x408d7e
408da4:	8b cf                	mov    %edi,%ecx
408da6:	8b 46 0c             	mov    0xc(%esi),%eax
408da9:	85 c0                	test   %eax,%eax
408dab:	74 49                	je     0x408df6
408dad:	85 c9                	test   %ecx,%ecx
408daf:	74 18                	je     0x408dc9
408db1:	6a ff                	push   $0xffffffff
408db3:	51                   	push   %ecx
408db4:	68 04 01 00 00       	push   $0x104
408db9:	50                   	push   %eax
408dba:	ff 15 e8 b2 41 00    	call   *0x41b2e8
408dc0:	83 c4 10             	add    $0x10,%esp
408dc3:	eb 09                	jmp    0x408dce
408dc5:	8b c8                	mov    %eax,%ecx
408dc7:	eb dd                	jmp    0x408da6
408dc9:	33 c9                	xor    %ecx,%ecx
408dcb:	66 89 08             	mov    %cx,(%eax)
408dce:	8b 4e 0c             	mov    0xc(%esi),%ecx
408dd1:	8d 45 fc             	lea    -0x4(%ebp),%eax
408dd4:	50                   	push   %eax
408dd5:	ba 04 01 00 00       	mov    $0x104,%edx
408dda:	e8 94 00 00 00       	call   0x408e73
408ddf:	85 c0                	test   %eax,%eax
408de1:	78 13                	js     0x408df6
408de3:	33 c0                	xor    %eax,%eax
408de5:	8b ce                	mov    %esi,%ecx
408de7:	3b 45 fc             	cmp    -0x4(%ebp),%eax
408dea:	1b c0                	sbb    %eax,%eax
408dec:	f7 d8                	neg    %eax
408dee:	50                   	push   %eax
408def:	6a 01                	push   $0x1
408df1:	e8 76 3e 00 00       	call   0x40cc6c
408df6:	53                   	push   %ebx
408df7:	ff 15 24 b3 41 00    	call   *0x41b324
408dfd:	59                   	pop    %ecx
408dfe:	eb 16                	jmp    0x408e16
408e00:	33 c9                	xor    %ecx,%ecx
408e02:	66 3b ca             	cmp    %dx,%cx
408e05:	75 0f                	jne    0x408e16
408e07:	50                   	push   %eax
408e08:	ff 76 04             	push   0x4(%esi)
408e0b:	ff 15 b8 b2 41 00    	call   *0x41b2b8
408e11:	eb 03                	jmp    0x408e16
408e13:	33 ff                	xor    %edi,%edi
408e15:	47                   	inc    %edi
408e16:	8b c7                	mov    %edi,%eax
408e18:	5f                   	pop    %edi
408e19:	5e                   	pop    %esi
408e1a:	5b                   	pop    %ebx
408e1b:	c9                   	leave
408e1c:	c2 08 00             	ret    $0x8
408e1f:	8b ff                	mov    %edi,%edi
408e21:	55                   	push   %ebp
408e22:	8b ec                	mov    %esp,%ebp
408e24:	51                   	push   %ecx
408e25:	56                   	push   %esi
408e26:	8b 75 08             	mov    0x8(%ebp),%esi
408e29:	57                   	push   %edi
408e2a:	8b f9                	mov    %ecx,%edi
408e2c:	85 f6                	test   %esi,%esi
408e2e:	74 3d                	je     0x408e6d
408e30:	8b 4f 0c             	mov    0xc(%edi),%ecx
408e33:	85 c9                	test   %ecx,%ecx
408e35:	74 36                	je     0x408e6d
408e37:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
408e3b:	8d 45 fc             	lea    -0x4(%ebp),%eax
408e3e:	53                   	push   %ebx
408e3f:	bb 04 01 00 00       	mov    $0x104,%ebx
408e44:	50                   	push   %eax
408e45:	8b d3                	mov    %ebx,%edx
408e47:	e8 27 00 00 00       	call   0x408e73
408e4c:	85 c0                	test   %eax,%eax
408e4e:	78 1c                	js     0x408e6c
408e50:	39 5d fc             	cmp    %ebx,-0x4(%ebp)
408e53:	73 12                	jae    0x408e67
408e55:	6a ff                	push   $0xffffffff
408e57:	ff 77 0c             	push   0xc(%edi)
408e5a:	53                   	push   %ebx
408e5b:	56                   	push   %esi
408e5c:	ff 15 e8 b2 41 00    	call   *0x41b2e8
408e62:	83 c4 10             	add    $0x10,%esp
408e65:	eb 05                	jmp    0x408e6c
408e67:	33 c0                	xor    %eax,%eax
408e69:	66 89 06             	mov    %ax,(%esi)
408e6c:	5b                   	pop    %ebx
408e6d:	5f                   	pop    %edi
408e6e:	5e                   	pop    %esi
408e6f:	c9                   	leave
408e70:	c2 08 00             	ret    $0x8
408e73:	8b ff                	mov    %edi,%edi
408e75:	55                   	push   %ebp
408e76:	8b ec                	mov    %esp,%ebp
408e78:	56                   	push   %esi
408e79:	8b f2                	mov    %edx,%esi
408e7b:	85 c9                	test   %ecx,%ecx
408e7d:	74 1b                	je     0x408e9a
408e7f:	56                   	push   %esi
408e80:	51                   	push   %ecx
408e81:	ff 15 6c b3 41 00    	call   *0x41b36c
408e87:	59                   	pop    %ecx
408e88:	59                   	pop    %ecx
408e89:	3b c6                	cmp    %esi,%eax
408e8b:	74 0d                	je     0x408e9a
408e8d:	8b 4d 08             	mov    0x8(%ebp),%ecx
408e90:	85 c9                	test   %ecx,%ecx
408e92:	74 02                	je     0x408e96
408e94:	89 01                	mov    %eax,(%ecx)
408e96:	33 c0                	xor    %eax,%eax
408e98:	eb 0f                	jmp    0x408ea9
408e9a:	8b 45 08             	mov    0x8(%ebp),%eax
408e9d:	85 c0                	test   %eax,%eax
408e9f:	74 03                	je     0x408ea4
408ea1:	83 20 00             	andl   $0x0,(%eax)
408ea4:	b8 57 00 07 80       	mov    $0x80070057,%eax
408ea9:	5e                   	pop    %esi
408eaa:	5d                   	pop    %ebp
408eab:	c2 04 00             	ret    $0x4
408eae:	8b ff                	mov    %edi,%edi
408eb0:	56                   	push   %esi
408eb1:	33 f6                	xor    %esi,%esi
408eb3:	8b d6                	mov    %esi,%edx
408eb5:	8b c6                	mov    %esi,%eax
408eb7:	66 39 34 85 30 51 41 	cmp    %si,0x415130(,%eax,4)
408ebe:	00
408ebf:	74 05                	je     0x408ec6
408ec1:	3b d1                	cmp    %ecx,%edx
408ec3:	74 07                	je     0x408ecc
408ec5:	42                   	inc    %edx
408ec6:	40                   	inc    %eax
408ec7:	83 f8 29             	cmp    $0x29,%eax
408eca:	72 eb                	jb     0x408eb7
408ecc:	5e                   	pop    %esi
408ecd:	c3                   	ret
408ece:	cc                   	int3
408ecf:	cc                   	int3
408ed0:	8b ff                	mov    %edi,%edi
408ed2:	55                   	push   %ebp
408ed3:	8b ec                	mov    %esp,%ebp
408ed5:	83 ec 48             	sub    $0x48,%esp
408ed8:	57                   	push   %edi
408ed9:	8b 7d 14             	mov    0x14(%ebp),%edi
408edc:	85 ff                	test   %edi,%edi
408ede:	0f 84 1d 01 00 00    	je     0x409001
408ee4:	53                   	push   %ebx
408ee5:	68 ed 03 00 00       	push   $0x3ed
408eea:	ff 75 08             	push   0x8(%ebp)
408eed:	ff 15 d4 b1 41 00    	call   *0x41b1d4
408ef3:	50                   	push   %eax
408ef4:	ff 15 d0 b1 41 00    	call   *0x41b1d0
408efa:	6a 3c                	push   $0x3c
408efc:	89 45 f4             	mov    %eax,-0xc(%ebp)
408eff:	33 db                	xor    %ebx,%ebx
408f01:	8d 45 b8             	lea    -0x48(%ebp),%eax
408f04:	53                   	push   %ebx
408f05:	50                   	push   %eax
408f06:	e8 56 b2 00 00       	call   0x414161
408f0b:	83 c4 0c             	add    $0xc,%esp
408f0e:	c7 45 b8 01 00 00 00 	movl   $0x1,-0x48(%ebp)
408f15:	8b c3                	mov    %ebx,%eax
408f17:	89 45 f8             	mov    %eax,-0x8(%ebp)
408f1a:	85 ff                	test   %edi,%edi
408f1c:	0f 8e a6 00 00 00    	jle    0x408fc8
408f22:	56                   	push   %esi
408f23:	8b 4d 10             	mov    0x10(%ebp),%ecx
408f26:	0f b7 34 41          	movzwl (%ecx,%eax,2),%esi
408f2a:	66 85 f6             	test   %si,%si
408f2d:	0f 84 94 00 00 00    	je     0x408fc7
408f33:	b8 00 30 00 00       	mov    $0x3000,%eax
408f38:	66 3b c6             	cmp    %si,%ax
408f3b:	0f 84 86 00 00 00    	je     0x408fc7
408f41:	b8 00 ff 00 00       	mov    $0xff00,%eax
408f46:	66 3b f0             	cmp    %ax,%si
408f49:	77 7c                	ja     0x408fc7
408f4b:	8a cb                	mov    %bl,%cl
408f4d:	e8 2b 69 00 00       	call   0x40f87d
408f52:	66 3b f0             	cmp    %ax,%si
408f55:	74 06                	je     0x408f5d
408f57:	43                   	inc    %ebx
408f58:	83 fb 29             	cmp    $0x29,%ebx
408f5b:	72 ee                	jb     0x408f4b
408f5d:	83 fb 29             	cmp    $0x29,%ebx
408f60:	73 63                	jae    0x408fc5
408f62:	33 d2                	xor    %edx,%edx
408f64:	89 55 fc             	mov    %edx,-0x4(%ebp)
408f67:	8b ca                	mov    %edx,%ecx
408f69:	8b c2                	mov    %edx,%eax
408f6b:	85 db                	test   %ebx,%ebx
408f6d:	7e 13                	jle    0x408f82
408f6f:	66 39 14 85 30 51 41 	cmp    %dx,0x415130(,%eax,4)
408f76:	00
408f77:	74 01                	je     0x408f7a
408f79:	41                   	inc    %ecx
408f7a:	40                   	inc    %eax
408f7b:	3b c3                	cmp    %ebx,%eax
408f7d:	7c f0                	jl     0x408f6f
408f7f:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408f82:	8a cb                	mov    %bl,%cl
408f84:	8d 34 9d 30 51 41 00 	lea    0x415130(,%ebx,4),%esi
408f8b:	e8 ed 68 00 00       	call   0x40f87d
408f90:	66 89 06             	mov    %ax,(%esi)
408f93:	33 db                	xor    %ebx,%ebx
408f95:	8b 45 fc             	mov    -0x4(%ebp),%eax
408f98:	89 45 bc             	mov    %eax,-0x44(%ebp)
408f9b:	8d 45 b8             	lea    -0x48(%ebp),%eax
408f9e:	50                   	push   %eax
408f9f:	53                   	push   %ebx
408fa0:	68 4d 10 00 00       	push   $0x104d
408fa5:	ff 75 f4             	push   -0xc(%ebp)
408fa8:	89 5d c0             	mov    %ebx,-0x40(%ebp)
408fab:	89 75 cc             	mov    %esi,-0x34(%ebp)
408fae:	ff 15 d8 b1 41 00    	call   *0x41b1d8
408fb4:	8b 45 f8             	mov    -0x8(%ebp),%eax
408fb7:	40                   	inc    %eax
408fb8:	89 45 f8             	mov    %eax,-0x8(%ebp)
408fbb:	3b c7                	cmp    %edi,%eax
408fbd:	0f 8c 60 ff ff ff    	jl     0x408f23
408fc3:	eb 02                	jmp    0x408fc7
408fc5:	33 db                	xor    %ebx,%ebx
408fc7:	5e                   	pop    %esi
408fc8:	6a 01                	push   $0x1
408fca:	68 ed 03 00 00       	push   $0x3ed
408fcf:	ff 75 08             	push   0x8(%ebp)
408fd2:	ff 15 d4 b1 41 00    	call   *0x41b1d4
408fd8:	50                   	push   %eax
408fd9:	ff 15 d0 b1 41 00    	call   *0x41b1d0
408fdf:	50                   	push   %eax
408fe0:	ff 15 dc b1 41 00    	call   *0x41b1dc
408fe6:	53                   	push   %ebx
408fe7:	6a 01                	push   $0x1
408fe9:	ff 75 08             	push   0x8(%ebp)
408fec:	ff 15 d4 b1 41 00    	call   *0x41b1d4
408ff2:	50                   	push   %eax
408ff3:	ff 15 d0 b1 41 00    	call   *0x41b1d0
408ff9:	50                   	push   %eax
408ffa:	ff 15 dc b1 41 00    	call   *0x41b1dc
409000:	5b                   	pop    %ebx
409001:	33 c0                	xor    %eax,%eax
409003:	5f                   	pop    %edi
409004:	c9                   	leave
409005:	c2 10 00             	ret    $0x10
409008:	cc                   	int3
409009:	cc                   	int3