4059d0:	76 3c                	jbe    0x405a0e
4059d2:	57                   	push   %edi
4059d3:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
4059d9:	e8 2c 30 00 00       	call   0x408a0a
4059de:	8b 85 e8 de ff ff    	mov    -0x2118(%ebp),%eax
4059e4:	eb 34                	jmp    0x405a1a
4059e6:	b8 ec 59 40 00       	mov    $0x4059ec,%eax
4059eb:	c3                   	ret
4059ec:	8b 8d d8 de ff ff    	mov    -0x2128(%ebp),%ecx
4059f2:	33 db                	xor    %ebx,%ebx
4059f4:	8b b5 cc de ff ff    	mov    -0x2134(%ebp),%esi
4059fa:	8b bd d4 de ff ff    	mov    -0x212c(%ebp),%edi
405a00:	8b 85 e8 de ff ff    	mov    -0x2118(%ebp),%eax
405a06:	89 8d d0 de ff ff    	mov    %ecx,-0x2130(%ebp)
405a0c:	eb 12                	jmp    0x405a20
405a0e:	8d 85 ec de ff ff    	lea    -0x2114(%ebp),%eax
405a14:	89 85 e8 de ff ff    	mov    %eax,-0x2118(%ebp)
405a1a:	8b b5 e4 de ff ff    	mov    -0x211c(%ebp),%esi
405a20:	85 c0                	test   %eax,%eax
405a22:	75 15                	jne    0x405a39
405a24:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
405a2a:	e8 00 25 00 00       	call   0x407f2f
405a2f:	b8 05 40 00 80       	mov    $0x80004005,%eax
405a34:	e9 22 01 00 00       	jmp    0x405b5b
405a39:	57                   	push   %edi
405a3a:	53                   	push   %ebx
405a3b:	50                   	push   %eax
405a3c:	e8 b0 d0 00 00       	call   0x412af1
405a41:	83 c4 0c             	add    $0xc,%esp
405a44:	85 f6                	test   %esi,%esi
405a46:	7e 75                	jle    0x405abd
405a48:	8b fb                	mov    %ebx,%edi
405a4a:	0f b7 8c 7d ec df ff 	movzwl -0x2014(%ebp,%edi,2),%ecx
405a51:	ff
405a52:	8b c7                	mov    %edi,%eax
405a54:	99                   	cltd
405a55:	2b c2                	sub    %edx,%eax
405a57:	8b d1                	mov    %ecx,%edx
405a59:	d1 f8                	sar    $1,%eax
405a5b:	03 85 e8 de ff ff    	add    -0x2118(%ebp),%eax
405a61:	89 85 cc de ff ff    	mov    %eax,-0x2134(%ebp)
405a67:	8b c1                	mov    %ecx,%eax
405a69:	6a 30                	push   $0x30
405a6b:	59                   	pop    %ecx
405a6c:	66 3b c1             	cmp    %cx,%ax
405a6f:	72 28                	jb     0x405a99
405a71:	83 f8 39             	cmp    $0x39,%eax
405a74:	76 1e                	jbe    0x405a94
405a76:	83 f8 40             	cmp    $0x40,%eax
405a79:	76 1e                	jbe    0x405a99
405a7b:	83 f8 46             	cmp    $0x46,%eax
405a7e:	76 0f                	jbe    0x405a8f
405a80:	83 f8 60             	cmp    $0x60,%eax
405a83:	76 14                	jbe    0x405a99
405a85:	83 fa 66             	cmp    $0x66,%edx
405a88:	77 0f                	ja     0x405a99
405a8a:	80 ea 57             	sub    $0x57,%dl
405a8d:	eb 0c                	jmp    0x405a9b
405a8f:	80 ea 37             	sub    $0x37,%dl
405a92:	eb 07                	jmp    0x405a9b
405a94:	80 ea 30             	sub    $0x30,%dl
405a97:	eb 02                	jmp    0x405a9b
405a99:	8a d3                	mov    %bl,%dl
405a9b:	8b c7                	mov    %edi,%eax
405a9d:	83 e0 01             	and    $0x1,%eax
405aa0:	c1 e0 02             	shl    $0x2,%eax
405aa3:	6a 04                	push   $0x4
405aa5:	59                   	pop    %ecx
405aa6:	2b c8                	sub    %eax,%ecx
405aa8:	8b 85 cc de ff ff    	mov    -0x2134(%ebp),%eax
405aae:	d2 e2                	shl    %cl,%dl
405ab0:	08 10                	or     %dl,(%eax)
405ab2:	47                   	inc    %edi
405ab3:	3b fe                	cmp    %esi,%edi
405ab5:	7c 93                	jl     0x405a4a
405ab7:	8b bd d4 de ff ff    	mov    -0x212c(%ebp),%edi
405abd:	8b 85 dc de ff ff    	mov    -0x2124(%ebp),%eax
405ac3:	57                   	push   %edi
405ac4:	ff b5 e8 de ff ff    	push   -0x2118(%ebp)
405aca:	6a 03                	push   $0x3
405acc:	53                   	push   %ebx
405acd:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
405ad3:	ff 30                	push   (%eax)
405ad5:	ff 15 08 60 41 00    	call   *0x416008
405adb:	8b f8                	mov    %eax,%edi
405add:	8d 85 ec de ff ff    	lea    -0x2114(%ebp),%eax
405ae3:	39 85 e8 de ff ff    	cmp    %eax,-0x2118(%ebp)
405ae9:	74 4c                	je     0x405b37
405aeb:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
405af1:	e8 39 24 00 00       	call   0x407f2f
405af6:	eb 3f                	jmp    0x405b37
405af8:	8d 8d ec df ff ff    	lea    -0x2014(%ebp),%ecx
405afe:	8d 51 02             	lea    0x2(%ecx),%edx
405b01:	66 8b 01             	mov    (%ecx),%ax
405b04:	03 cf                	add    %edi,%ecx
405b06:	66 3b c3             	cmp    %bx,%ax
405b09:	75 f6                	jne    0x405b01
405b0b:	2b ca                	sub    %edx,%ecx
405b0d:	d1 f9                	sar    $1,%ecx
405b0f:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
405b16:	50                   	push   %eax
405b17:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
405b1d:	50                   	push   %eax
405b1e:	8b 85 dc de ff ff    	mov    -0x2124(%ebp),%eax
405b24:	6a 01                	push   $0x1
405b26:	53                   	push   %ebx
405b27:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
405b2d:	ff 30                	push   (%eax)
405b2f:	ff 15 08 60 41 00    	call   *0x416008
405b35:	8b f8                	mov    %eax,%edi
405b37:	85 ff                	test   %edi,%edi
405b39:	74 09                	je     0x405b44
405b3b:	8b cf                	mov    %edi,%ecx
405b3d:	e8 61 f1 ff ff       	call   0x404ca3
405b42:	eb 17                	jmp    0x405b5b
405b44:	ff b5 c8 de ff ff    	push   -0x2138(%ebp)
405b4a:	8b 8d d0 de ff ff    	mov    -0x2130(%ebp),%ecx
405b50:	e8 3f fa ff ff       	call   0x405594
405b55:	85 c0                	test   %eax,%eax
405b57:	78 02                	js     0x405b5b
405b59:	33 c0                	xor    %eax,%eax
405b5b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
405b5e:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
405b65:	59                   	pop    %ecx
405b66:	5f                   	pop    %edi
405b67:	5e                   	pop    %esi
405b68:	5b                   	pop    %ebx
405b69:	8b 4d ec             	mov    -0x14(%ebp),%ecx
405b6c:	33 cd                	xor    %ebp,%ecx
405b6e:	e8 7d c4 00 00       	call   0x411ff0
405b73:	c9                   	leave
405b74:	c2 0c 00             	ret    $0xc
405b77:	b9 57 00 07 80       	mov    $0x80070057,%ecx
405b7c:	e8 6e f0 ff ff       	call   0x404bef
405b81:	cc                   	int3
405b82:	8b ff                	mov    %edi,%edi
405b84:	55                   	push   %ebp
405b85:	8b ec                	mov    %esp,%ebp
405b87:	56                   	push   %esi
405b88:	be f4 17 40 00       	mov    $0x4017f4,%esi
405b8d:	ff 36                	push   (%esi)
405b8f:	ff 75 08             	push   0x8(%ebp)
405b92:	ff 15 d4 60 41 00    	call   *0x4160d4
405b98:	85 c0                	test   %eax,%eax
405b9a:	74 10                	je     0x405bac
405b9c:	83 c6 04             	add    $0x4,%esi
405b9f:	81 fe 24 18 40 00    	cmp    $0x401824,%esi
405ba5:	7c e6                	jl     0x405b8d
405ba7:	33 c0                	xor    %eax,%eax
405ba9:	40                   	inc    %eax
405baa:	eb 02                	jmp    0x405bae
405bac:	33 c0                	xor    %eax,%eax
405bae:	5e                   	pop    %esi
405baf:	5d                   	pop    %ebp
405bb0:	c2 04 00             	ret    $0x4
405bb3:	8b ff                	mov    %edi,%edi
405bb5:	55                   	push   %ebp
405bb6:	8b ec                	mov    %esp,%ebp
405bb8:	51                   	push   %ecx
405bb9:	33 c9                	xor    %ecx,%ecx
405bbb:	8d 45 fc             	lea    -0x4(%ebp),%eax
405bbe:	51                   	push   %ecx
405bbf:	51                   	push   %ecx
405bc0:	51                   	push   %ecx
405bc1:	51                   	push   %ecx
405bc2:	51                   	push   %ecx
405bc3:	51                   	push   %ecx
405bc4:	51                   	push   %ecx
405bc5:	50                   	push   %eax
405bc6:	51                   	push   %ecx
405bc7:	51                   	push   %ecx
405bc8:	51                   	push   %ecx
405bc9:	ff 75 08             	push   0x8(%ebp)
405bcc:	89 4d fc             	mov    %ecx,-0x4(%ebp)
405bcf:	ff 15 14 60 41 00    	call   *0x416014
405bd5:	85 c0                	test   %eax,%eax
405bd7:	74 04                	je     0x405bdd
405bd9:	33 c0                	xor    %eax,%eax
405bdb:	eb 09                	jmp    0x405be6
405bdd:	33 c0                	xor    %eax,%eax
405bdf:	3b 45 fc             	cmp    -0x4(%ebp),%eax
405be2:	1b c0                	sbb    %eax,%eax
405be4:	f7 d8                	neg    %eax
405be6:	c9                   	leave
405be7:	c2 04 00             	ret    $0x4
405bea:	8b ff                	mov    %edi,%edi
405bec:	55                   	push   %ebp
405bed:	8b ec                	mov    %esp,%ebp
405bef:	b8 04 20 00 00       	mov    $0x2004,%eax
405bf4:	e8 c7 ce 00 00       	call   0x412ac0
405bf9:	a1 f4 51 41 00       	mov    0x4151f4,%eax
405bfe:	33 c5                	xor    %ebp,%eax
405c00:	89 45 fc             	mov    %eax,-0x4(%ebp)
405c03:	56                   	push   %esi
405c04:	57                   	push   %edi
405c05:	8b 7d 08             	mov    0x8(%ebp),%edi
405c08:	8b f1                	mov    %ecx,%esi
405c0a:	66 83 3f 3d          	cmpw   $0x3d,(%edi)
405c0e:	75 2f                	jne    0x405c3f
405c10:	57                   	push   %edi
405c11:	e8 7e f9 ff ff       	call   0x405594
405c16:	85 c0                	test   %eax,%eax
405c18:	78 27                	js     0x405c41
405c1a:	8b ce                	mov    %esi,%ecx
405c1c:	e8 46 f9 ff ff       	call   0x405567
405c21:	8d 85 fc df ff ff    	lea    -0x2004(%ebp),%eax
405c27:	8b ce                	mov    %esi,%ecx
405c29:	50                   	push   %eax
405c2a:	e8 65 f9 ff ff       	call   0x405594
405c2f:	85 c0                	test   %eax,%eax
405c31:	78 0e                	js     0x405c41
405c33:	57                   	push   %edi
405c34:	8b ce                	mov    %esi,%ecx
405c36:	e8 59 f9 ff ff       	call   0x405594
405c3b:	85 c0                	test   %eax,%eax
405c3d:	78 02                	js     0x405c41
405c3f:	33 c0                	xor    %eax,%eax
405c41:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405c44:	5f                   	pop    %edi
405c45:	33 cd                	xor    %ebp,%ecx
405c47:	5e                   	pop    %esi
405c48:	e8 a3 c3 00 00       	call   0x411ff0
405c4d:	c9                   	leave
405c4e:	c2 04 00             	ret    $0x4
405c51:	6a 5c                	push   $0x5c
405c53:	b8 d1 2b 41 00       	mov    $0x412bd1,%eax
405c58:	e8 34 c9 00 00       	call   0x412591
405c5d:	8b f9                	mov    %ecx,%edi
405c5f:	8b 75 08             	mov    0x8(%ebp),%esi
405c62:	8b 45 0c             	mov    0xc(%ebp),%eax
405c65:	89 45 98             	mov    %eax,-0x68(%ebp)
405c68:	85 f6                	test   %esi,%esi
405c6a:	0f 84 96 01 00 00    	je     0x405e06
405c70:	85 c0                	test   %eax,%eax
405c72:	0f 84 8e 01 00 00    	je     0x405e06
405c78:	8b ce                	mov    %esi,%ecx
405c7a:	33 db                	xor    %ebx,%ebx
405c7c:	89 18                	mov    %ebx,(%eax)
405c7e:	8d 51 02             	lea    0x2(%ecx),%edx
405c81:	66 8b 01             	mov    (%ecx),%ax
405c84:	83 c1 02             	add    $0x2,%ecx
405c87:	66 3b c3             	cmp    %bx,%ax
405c8a:	75 f5                	jne    0x405c81
405c8c:	2b ca                	sub    %edx,%ecx
405c8e:	d1 f9                	sar    $1,%ecx
405c90:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
405c93:	83 f8 64             	cmp    $0x64,%eax
405c96:	7d 05                	jge    0x405c9d
405c98:	b8 e8 03 00 00       	mov    $0x3e8,%eax
405c9d:	6a 02                	push   $0x2
405c9f:	59                   	pop    %ecx
405ca0:	89 45 a8             	mov    %eax,-0x58(%ebp)
405ca3:	f7 e1                	mul    %ecx
405ca5:	89 5d a4             	mov    %ebx,-0x5c(%ebp)
405ca8:	3b d3                	cmp    %ebx,%edx
405caa:	77 1c                	ja     0x405cc8
405cac:	72 05                	jb     0x405cb3
405cae:	83 f8 ff             	cmp    $0xffffffff,%eax
405cb1:	77 15                	ja     0x405cc8
405cb3:	50                   	push   %eax
405cb4:	ff 15 38 62 41 00    	call   *0x416238
405cba:	89 45 ac             	mov    %eax,-0x54(%ebp)
405cbd:	85 c0                	test   %eax,%eax
405cbf:	74 0c                	je     0x405ccd
405cc1:	33 c9                	xor    %ecx,%ecx
405cc3:	66 89 08             	mov    %cx,(%eax)
405cc6:	eb 05                	jmp    0x405ccd
405cc8:	8b c3                	mov    %ebx,%eax
405cca:	89 5d ac             	mov    %ebx,-0x54(%ebp)
405ccd:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405cd0:	85 c0                	test   %eax,%eax
405cd2:	75 0a                	jne    0x405cde
405cd4:	bb 0e 00 07 80       	mov    $0x8007000e,%ebx
405cd9:	e9 1b 01 00 00       	jmp    0x405df9
405cde:	89 37                	mov    %esi,(%edi)
405ce0:	0f b7 06             	movzwl (%esi),%eax
405ce3:	8b c8                	mov    %eax,%ecx
405ce5:	66 85 c0             	test   %ax,%ax
405ce8:	0f 84 00 01 00 00    	je     0x405dee
405cee:	6a 25                	push   $0x25
405cf0:	59                   	pop    %ecx
405cf1:	66 3b c1             	cmp    %cx,%ax
405cf4:	0f 85 ba 00 00 00    	jne    0x405db4
405cfa:	56                   	push   %esi
405cfb:	ff 15 f0 61 41 00    	call   *0x4161f0
405d01:	6a 25                	push   $0x25
405d03:	5a                   	pop    %edx
405d04:	89 07                	mov    %eax,(%edi)
405d06:	66 39 10             	cmp    %dx,(%eax)
405d09:	75 08                	jne    0x405d13
405d0b:	6a 01                	push   $0x1
405d0d:	50                   	push   %eax
405d0e:	e9 a4 00 00 00       	jmp    0x405db7
405d13:	8b c8                	mov    %eax,%ecx
405d15:	e8 11 f8 ff ff       	call   0x40552b
405d1a:	89 45 9c             	mov    %eax,-0x64(%ebp)
405d1d:	85 c0                	test   %eax,%eax
405d1f:	0f 84 c2 00 00 00    	je     0x405de7
405d25:	8b c8                	mov    %eax,%ecx
405d27:	2b 0f                	sub    (%edi),%ecx
405d29:	d1 f9                	sar    $1,%ecx
405d2b:	83 f9 1f             	cmp    $0x1f,%ecx
405d2e:	0f 8f ac 00 00 00    	jg     0x405de0
405d34:	51                   	push   %ecx
405d35:	ff 37                	push   (%edi)
405d37:	8d 45 b0             	lea    -0x50(%ebp),%eax
405d3a:	6a 20                	push   $0x20
405d3c:	50                   	push   %eax
405d3d:	ff 15 b4 62 41 00    	call   *0x4162b4
405d43:	83 c4 10             	add    $0x10,%esp
405d46:	8b c8                	mov    %eax,%ecx
405d48:	e8 bf ee ff ff       	call   0x404c0c
405d4d:	8b 4f 04             	mov    0x4(%edi),%ecx
405d50:	8d 45 b0             	lea    -0x50(%ebp),%eax
405d53:	50                   	push   %eax
405d54:	e8 64 f7 ff ff       	call   0x4054bd
405d59:	8b d0                	mov    %eax,%edx
405d5b:	85 d2                	test   %edx,%edx
405d5d:	0f 84 84 00 00 00    	je     0x405de7
405d63:	89 5d a0             	mov    %ebx,-0x60(%ebp)
405d66:	8b ca                	mov    %edx,%ecx
405d68:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
405d6c:	8d 71 02             	lea    0x2(%ecx),%esi
405d6f:	66 8b 01             	mov    (%ecx),%ax
405d72:	83 c1 02             	add    $0x2,%ecx
405d75:	66 3b c3             	cmp    %bx,%ax
405d78:	75 f5                	jne    0x405d6f
405d7a:	2b ce                	sub    %esi,%ecx
405d7c:	d1 f9                	sar    $1,%ecx
405d7e:	51                   	push   %ecx
405d7f:	52                   	push   %edx
405d80:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
405d83:	e8 71 f3 ff ff       	call   0x4050f9
405d88:	8d 4d a0             	lea    -0x60(%ebp),%ecx
405d8b:	88 5d fc             	mov    %bl,-0x4(%ebp)
405d8e:	8b f0                	mov    %eax,%esi
405d90:	e8 28 1a 00 00       	call   0x4077bd
405d95:	85 f6                	test   %esi,%esi
405d97:	0f 84 37 ff ff ff    	je     0x405cd4
405d9d:	8b 75 9c             	mov    -0x64(%ebp),%esi
405da0:	39 37                	cmp    %esi,(%edi)
405da2:	74 23                	je     0x405dc7
405da4:	ff 37                	push   (%edi)
405da6:	ff 15 f0 61 41 00    	call   *0x4161f0
405dac:	89 07                	mov    %eax,(%edi)
405dae:	3b c6                	cmp    %esi,%eax
405db0:	75 f2                	jne    0x405da4
405db2:	eb 13                	jmp    0x405dc7
405db4:	6a 01                	push   $0x1
405db6:	56                   	push   %esi