405cf4:	8b ff                	mov    %edi,%edi
405cf6:	55                   	push   %ebp
405cf7:	8b ec                	mov    %esp,%ebp
405cf9:	56                   	push   %esi
405cfa:	8b 35 54 97 41 00    	mov    0x419754,%esi
405d00:	85 f6                	test   %esi,%esi
405d02:	74 10                	je     0x405d14
405d04:	ff 75 08             	push   0x8(%ebp)
405d07:	6a 00                	push   $0x0
405d09:	51                   	push   %ecx
405d0a:	8b ce                	mov    %esi,%ecx
405d0c:	ff 15 90 b3 41 00    	call   *0x41b390
405d12:	ff d6                	call   *%esi
405d14:	6a 07                	push   $0x7
405d16:	59                   	pop    %ecx
405d17:	cd 29                	int    $0x29
405d19:	5e                   	pop    %esi
405d1a:	5d                   	pop    %ebp
405d1b:	c2 04 00             	ret    $0x4
405d1e:	8b ff                	mov    %edi,%edi
405d20:	55                   	push   %ebp
405d21:	8b ec                	mov    %esp,%ebp
405d23:	81 ec 10 01 00 00    	sub    $0x110,%esp
405d29:	a1 18 51 41 00       	mov    0x415118,%eax
405d2e:	33 c5                	xor    %ebp,%eax
405d30:	89 45 fc             	mov    %eax,-0x4(%ebp)
405d33:	8b 4d 10             	mov    0x10(%ebp),%ecx
405d36:	53                   	push   %ebx
405d37:	8b 5d 0c             	mov    0xc(%ebp),%ebx
405d3a:	56                   	push   %esi
405d3b:	8b 75 08             	mov    0x8(%ebp),%esi
405d3e:	57                   	push   %edi
405d3f:	33 ff                	xor    %edi,%edi
405d41:	89 8d f0 fe ff ff    	mov    %ecx,-0x110(%ebp)
405d47:	89 bd f4 fe ff ff    	mov    %edi,-0x10c(%ebp)
405d4d:	85 f6                	test   %esi,%esi
405d4f:	74 28                	je     0x405d79
405d51:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
405d57:	50                   	push   %eax
405d58:	56                   	push   %esi
405d59:	6a 06                	push   $0x6
405d5b:	ff 15 bc b1 41 00    	call   *0x41b1bc
405d61:	85 c0                	test   %eax,%eax
405d63:	75 08                	jne    0x405d6d
405d65:	85 db                	test   %ebx,%ebx
405d67:	74 3b                	je     0x405da4
405d69:	89 3b                	mov    %edi,(%ebx)
405d6b:	eb 37                	jmp    0x405da4
405d6d:	8b bd f4 fe ff ff    	mov    -0x10c(%ebp),%edi
405d73:	8b 8d f0 fe ff ff    	mov    -0x110(%ebp),%ecx
405d79:	85 db                	test   %ebx,%ebx
405d7b:	74 0c                	je     0x405d89
405d7d:	8b c6                	mov    %esi,%eax
405d7f:	2b c7                	sub    %edi,%eax
405d81:	f7 de                	neg    %esi
405d83:	1b f6                	sbb    %esi,%esi
405d85:	23 f0                	and    %eax,%esi
405d87:	89 33                	mov    %esi,(%ebx)
405d89:	85 c9                	test   %ecx,%ecx
405d8b:	74 57                	je     0x405de4
405d8d:	68 04 01 00 00       	push   $0x104
405d92:	8d 85 f8 fe ff ff    	lea    -0x108(%ebp),%eax
405d98:	50                   	push   %eax
405d99:	57                   	push   %edi
405d9a:	ff 15 c0 b1 41 00    	call   *0x41b1c0
405da0:	85 c0                	test   %eax,%eax
405da2:	75 04                	jne    0x405da8
405da4:	32 c0                	xor    %al,%al
405da6:	eb 3e                	jmp    0x405de6
405da8:	8d 8d f8 fe ff ff    	lea    -0x108(%ebp),%ecx
405dae:	8d 51 01             	lea    0x1(%ecx),%edx
405db1:	8a 01                	mov    (%ecx),%al
405db3:	41                   	inc    %ecx
405db4:	84 c0                	test   %al,%al
405db6:	75 f9                	jne    0x405db1
405db8:	2b ca                	sub    %edx,%ecx
405dba:	8d 85 f8 fe ff ff    	lea    -0x108(%ebp),%eax
405dc0:	03 c1                	add    %ecx,%eax
405dc2:	eb 07                	jmp    0x405dcb
405dc4:	80 78 ff 5c          	cmpb   $0x5c,-0x1(%eax)
405dc8:	74 0b                	je     0x405dd5
405dca:	48                   	dec    %eax
405dcb:	8d 8d f8 fe ff ff    	lea    -0x108(%ebp),%ecx
405dd1:	3b c1                	cmp    %ecx,%eax
405dd3:	77 ef                	ja     0x405dc4
405dd5:	8b 55 14             	mov    0x14(%ebp),%edx
405dd8:	8b 8d f0 fe ff ff    	mov    -0x110(%ebp),%ecx
405dde:	50                   	push   %eax
405ddf:	e8 9c f9 ff ff       	call   0x405780
405de4:	b0 01                	mov    $0x1,%al
405de6:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405de9:	5f                   	pop    %edi
405dea:	5e                   	pop    %esi
405deb:	33 cd                	xor    %ebp,%ecx
405ded:	5b                   	pop    %ebx
405dee:	e8 ed da 00 00       	call   0x4138e0
405df3:	c9                   	leave
405df4:	c2 10 00             	ret    $0x10
405df7:	cc                   	int3
405df8:	cc                   	int3
405df9:	cc                   	int3
405dfa:	cc                   	int3
405dfb:	cc                   	int3
405dfc:	cc                   	int3
405dfd:	cc                   	int3
405dfe:	cc                   	int3
405dff:	cc                   	int3
405e00:	80 3d 70 97 41 00 00 	cmpb   $0x0,0x419770
405e07:	56                   	push   %esi
405e08:	be 88 97 41 00       	mov    $0x419788,%esi
405e0d:	75 16                	jne    0x405e25
405e0f:	6a 40                	push   $0x40
405e11:	56                   	push   %esi
405e12:	6a 00                	push   $0x0
405e14:	68 e0 5c 40 00       	push   $0x405ce0
405e19:	e8 00 ff ff ff       	call   0x405d1e
405e1e:	c6 05 70 97 41 00 01 	movb   $0x1,0x419770
405e25:	8b c6                	mov    %esi,%eax
405e27:	5e                   	pop    %esi
405e28:	c3                   	ret
405e29:	cc                   	int3
405e2a:	cc                   	int3
405e2b:	cc                   	int3
405e2c:	cc                   	int3
405e2d:	cc                   	int3
405e2e:	cc                   	int3
405e2f:	cc                   	int3
405e30:	ff 25 70 b1 41 00    	jmp    *0x41b170
405e36:	cc                   	int3
405e37:	cc                   	int3
405e38:	cc                   	int3
405e39:	cc                   	int3
405e3a:	cc                   	int3
405e3b:	cc                   	int3
405e3c:	cc                   	int3
405e3d:	cc                   	int3
405e3e:	cc                   	int3
405e3f:	cc                   	int3
405e40:	8b ff                	mov    %edi,%edi
405e42:	55                   	push   %ebp
405e43:	8b ec                	mov    %esp,%ebp
405e45:	56                   	push   %esi
405e46:	68 8c 26 40 00       	push   $0x40268c
405e4b:	ff 15 6c b1 41 00    	call   *0x41b16c
405e51:	68 ac 26 40 00       	push   $0x4026ac
405e56:	50                   	push   %eax
405e57:	ff 15 5c b1 41 00    	call   *0x41b15c
405e5d:	8b f0                	mov    %eax,%esi
405e5f:	85 f6                	test   %esi,%esi
405e61:	74 13                	je     0x405e76
405e63:	ff 75 10             	push   0x10(%ebp)
405e66:	8b ce                	mov    %esi,%ecx
405e68:	ff 75 0c             	push   0xc(%ebp)
405e6b:	ff 75 08             	push   0x8(%ebp)
405e6e:	ff 15 90 b3 41 00    	call   *0x41b390
405e74:	ff d6                	call   *%esi
405e76:	5e                   	pop    %esi
405e77:	5d                   	pop    %ebp
405e78:	c2 0c 00             	ret    $0xc
405e7b:	8b ff                	mov    %edi,%edi
405e7d:	55                   	push   %ebp
405e7e:	8b ec                	mov    %esp,%ebp
405e80:	56                   	push   %esi
405e81:	57                   	push   %edi
405e82:	8b f2                	mov    %edx,%esi
405e84:	8b f9                	mov    %ecx,%edi
405e86:	ff 15 44 b1 41 00    	call   *0x41b144
405e8c:	85 c0                	test   %eax,%eax
405e8e:	75 1d                	jne    0x405ead
405e90:	68 9c 02 07 80       	push   $0x8007029c
405e95:	6a 02                	push   $0x2
405e97:	ff 75 14             	push   0x14(%ebp)
405e9a:	8b d6                	mov    %esi,%edx
405e9c:	8b cf                	mov    %edi,%ecx
405e9e:	50                   	push   %eax
405e9f:	50                   	push   %eax
405ea0:	ff 75 08             	push   0x8(%ebp)
405ea3:	e8 d8 07 00 00       	call   0x406680
405ea8:	b8 9c 02 00 00       	mov    $0x29c,%eax
405ead:	5f                   	pop    %edi
405eae:	5e                   	pop    %esi
405eaf:	5d                   	pop    %ebp
405eb0:	c2 10 00             	ret    $0x10
405eb3:	8b ff                	mov    %edi,%edi
405eb5:	55                   	push   %ebp
405eb6:	8b ec                	mov    %esp,%ebp
405eb8:	ff 75 04             	push   0x4(%ebp)
405ebb:	33 d2                	xor    %edx,%edx
405ebd:	51                   	push   %ecx
405ebe:	51                   	push   %ecx
405ebf:	6a 00                	push   $0x0
405ec1:	33 c9                	xor    %ecx,%ecx
405ec3:	e8 b3 ff ff ff       	call   0x405e7b
405ec8:	85 c0                	test   %eax,%eax
405eca:	7e 08                	jle    0x405ed4
405ecc:	0f b7 c0             	movzwl %ax,%eax
405ecf:	0d 00 00 07 80       	or     $0x80070000,%eax
405ed4:	5d                   	pop    %ebp
405ed5:	c3                   	ret
405ed6:	8b ff                	mov    %edi,%edi
405ed8:	55                   	push   %ebp
405ed9:	8b ec                	mov    %esp,%ebp
405edb:	8b 45 0c             	mov    0xc(%ebp),%eax
405ede:	56                   	push   %esi
405edf:	33 f6                	xor    %esi,%esi
405ee1:	85 c0                	test   %eax,%eax
405ee3:	74 07                	je     0x405eec
405ee5:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
405eea:	76 05                	jbe    0x405ef1
405eec:	be 57 00 07 80       	mov    $0x80070057,%esi
405ef1:	85 f6                	test   %esi,%esi
405ef3:	78 36                	js     0x405f2b
405ef5:	53                   	push   %ebx
405ef6:	8b 5d 08             	mov    0x8(%ebp),%ebx
405ef9:	8d 4d 14             	lea    0x14(%ebp),%ecx
405efc:	57                   	push   %edi
405efd:	51                   	push   %ecx
405efe:	ff 75 10             	push   0x10(%ebp)
405f01:	8d 78 ff             	lea    -0x1(%eax),%edi
405f04:	33 f6                	xor    %esi,%esi
405f06:	57                   	push   %edi
405f07:	50                   	push   %eax
405f08:	53                   	push   %ebx
405f09:	ff 15 e0 b2 41 00    	call   *0x41b2e0
405f0f:	83 c4 14             	add    $0x14,%esp
405f12:	85 c0                	test   %eax,%eax
405f14:	78 08                	js     0x405f1e
405f16:	3b c7                	cmp    %edi,%eax
405f18:	77 04                	ja     0x405f1e
405f1a:	75 0b                	jne    0x405f27
405f1c:	eb 05                	jmp    0x405f23
405f1e:	be 7a 00 07 80       	mov    $0x8007007a,%esi
405f23:	c6 04 1f 00          	movb   $0x0,(%edi,%ebx,1)
405f27:	5f                   	pop    %edi
405f28:	5b                   	pop    %ebx
405f29:	eb 0a                	jmp    0x405f35
405f2b:	85 c0                	test   %eax,%eax
405f2d:	74 06                	je     0x405f35
405f2f:	8b 4d 08             	mov    0x8(%ebp),%ecx
405f32:	c6 01 00             	movb   $0x0,(%ecx)
405f35:	8b c6                	mov    %esi,%eax
405f37:	5e                   	pop    %esi
405f38:	5d                   	pop    %ebp
405f39:	c3                   	ret
405f3a:	85 c9                	test   %ecx,%ecx
405f3c:	75 04                	jne    0x405f42
405f3e:	33 c0                	xor    %eax,%eax
405f40:	40                   	inc    %eax
405f41:	c3                   	ret
405f42:	8d 51 01             	lea    0x1(%ecx),%edx
405f45:	8a 01                	mov    (%ecx),%al
405f47:	41                   	inc    %ecx
405f48:	84 c0                	test   %al,%al
405f4a:	75 f9                	jne    0x405f45
405f4c:	2b ca                	sub    %edx,%ecx
405f4e:	8d 41 01             	lea    0x1(%ecx),%eax
405f51:	c3                   	ret
405f52:	85 c9                	test   %ecx,%ecx
405f54:	75 04                	jne    0x405f5a
405f56:	6a 02                	push   $0x2
405f58:	58                   	pop    %eax
405f59:	c3                   	ret
405f5a:	8d 51 02             	lea    0x2(%ecx),%edx
405f5d:	66 8b 01             	mov    (%ecx),%ax
405f60:	83 c1 02             	add    $0x2,%ecx
405f63:	66 85 c0             	test   %ax,%ax
405f66:	75 f5                	jne    0x405f5d
405f68:	2b ca                	sub    %edx,%ecx
405f6a:	d1 f9                	sar    $1,%ecx
405f6c:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
405f73:	c3                   	ret
405f74:	80 3d 4c 97 41 00 00 	cmpb   $0x0,0x41974c
405f7b:	53                   	push   %ebx
405f7c:	75 23                	jne    0x405fa1
405f7e:	56                   	push   %esi
405f7f:	8b 35 38 97 41 00    	mov    0x419738,%esi
405f85:	33 db                	xor    %ebx,%ebx
405f87:	85 f6                	test   %esi,%esi
405f89:	74 0f                	je     0x405f9a
405f8b:	8b ce                	mov    %esi,%ecx
405f8d:	ff 15 90 b3 41 00    	call   *0x41b390
405f93:	ff d6                	call   *%esi
405f95:	0f b6 c0             	movzbl %al,%eax
405f98:	eb 02                	jmp    0x405f9c
405f9a:	8b c3                	mov    %ebx,%eax
405f9c:	5e                   	pop    %esi
405f9d:	85 c0                	test   %eax,%eax
405f9f:	74 02                	je     0x405fa3
405fa1:	b3 01                	mov    $0x1,%bl
405fa3:	8a c3                	mov    %bl,%al
405fa5:	5b                   	pop    %ebx
405fa6:	c3                   	ret
405fa7:	8b ff                	mov    %edi,%edi
405fa9:	55                   	push   %ebp
405faa:	8b ec                	mov    %esp,%ebp
405fac:	51                   	push   %ecx
405fad:	53                   	push   %ebx
405fae:	8b 5d 08             	mov    0x8(%ebp),%ebx
405fb1:	8b c1                	mov    %ecx,%eax
405fb3:	56                   	push   %esi
405fb4:	57                   	push   %edi
405fb5:	6a 14                	push   $0x14
405fb7:	59                   	pop    %ecx
405fb8:	8b f8                	mov    %eax,%edi
405fba:	89 45 fc             	mov    %eax,-0x4(%ebp)
405fbd:	8b f3                	mov    %ebx,%esi
405fbf:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
405fc1:	8b 4b 40             	mov    0x40(%ebx),%ecx
405fc4:	e8 89 ff ff ff       	call   0x405f52
405fc9:	8b 4b 34             	mov    0x34(%ebx),%ecx
405fcc:	8b f0                	mov    %eax,%esi
405fce:	e8 7f ff ff ff       	call   0x405f52
405fd3:	8b 4b 0c             	mov    0xc(%ebx),%ecx
405fd6:	03 f0                	add    %eax,%esi
405fd8:	e8 75 ff ff ff       	call   0x405f52
405fdd:	8b 4b 3c             	mov    0x3c(%ebx),%ecx
405fe0:	03 f0                	add    %eax,%esi
405fe2:	e8 53 ff ff ff       	call   0x405f3a
405fe7:	8b 4b 30             	mov    0x30(%ebx),%ecx
405fea:	03 f0                	add    %eax,%esi
405fec:	e8 49 ff ff ff       	call   0x405f3a
405ff1:	8b 4b 28             	mov    0x28(%ebx),%ecx
405ff4:	03 f0                	add    %eax,%esi
405ff6:	e8 3f ff ff ff       	call   0x405f3a
405ffb:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
405ffe:	03 f0                	add    %eax,%esi
406000:	e8 35 ff ff ff       	call   0x405f3a
406005:	8b 4b 18             	mov    0x18(%ebx),%ecx
406008:	03 f0                	add    %eax,%esi
40600a:	e8 2b ff ff ff       	call   0x405f3a
40600f:	8b 4b 14             	mov    0x14(%ebx),%ecx
406012:	03 f0                	add    %eax,%esi
406014:	e8 21 ff ff ff       	call   0x405f3a
406019:	8b 4b 44             	mov    0x44(%ebx),%ecx
40601c:	03 f0                	add    %eax,%esi
40601e:	e8 17 ff ff ff       	call   0x405f3a
406023:	8b 55 fc             	mov    -0x4(%ebp),%edx
406026:	03 f0                	add    %eax,%esi
406028:	8d 7a 50             	lea    0x50(%edx),%edi
40602b:	8b 07                	mov    (%edi),%eax
40602d:	85 c0                	test   %eax,%eax
40602f:	74 0a                	je     0x40603b
406031:	83 38 01             	cmpl   $0x1,(%eax)
406034:	75 05                	jne    0x40603b
406036:	39 72 54             	cmp    %esi,0x54(%edx)
406039:	73 14                	jae    0x40604f
40603b:	8b cf                	mov    %edi,%ecx
40603d:	e8 c2 fb ff ff       	call   0x405c04
406042:	56                   	push   %esi
406043:	6a 00                	push   $0x0