405a71:	83 cf ff             	or     $0xffffffff,%edi
405a74:	89 45 dc             	mov    %eax,-0x24(%ebp)
405a77:	41                   	inc    %ecx
405a78:	85 c0                	test   %eax,%eax
405a7a:	0f 84 f8 01 00 00    	je     0x405c78
405a80:	83 c2 02             	add    $0x2,%edx
405a83:	89 55 c8             	mov    %edx,-0x38(%ebp)
405a86:	33 db                	xor    %ebx,%ebx
405a88:	66 39 1a             	cmp    %bx,(%edx)
405a8b:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
405a8e:	0f 84 f6 01 00 00    	je     0x405c8a
405a94:	83 f8 40             	cmp    $0x40,%eax
405a97:	0f 84 61 01 00 00    	je     0x405bfe
405a9d:	83 f8 21             	cmp    $0x21,%eax
405aa0:	0f 84 58 01 00 00    	je     0x405bfe
405aa6:	83 f8 2b             	cmp    $0x2b,%eax
405aa9:	0f 85 35 01 00 00    	jne    0x405be4
405aaf:	85 ff                	test   %edi,%edi
405ab1:	79 13                	jns    0x405ac6
405ab3:	33 c0                	xor    %eax,%eax
405ab5:	8b f8                	mov    %eax,%edi
405ab7:	89 7d d8             	mov    %edi,-0x28(%ebp)
405aba:	39 06                	cmp    %eax,(%esi)
405abc:	74 0f                	je     0x405acd
405abe:	47                   	inc    %edi
405abf:	39 04 be             	cmp    %eax,(%esi,%edi,4)
405ac2:	75 fa                	jne    0x405abe
405ac4:	eb 04                	jmp    0x405aca
405ac6:	03 f9                	add    %ecx,%edi
405ac8:	33 c0                	xor    %eax,%eax
405aca:	89 7d d8             	mov    %edi,-0x28(%ebp)
405acd:	68 00 00 00 80       	push   $0x80000000
405ad2:	50                   	push   %eax
405ad3:	ff 75 b4             	push   -0x4c(%ebp)
405ad6:	ff 15 24 80 40 00    	call   *0x408024
405adc:	89 45 dc             	mov    %eax,-0x24(%ebp)
405adf:	85 c0                	test   %eax,%eax
405ae1:	0f 84 84 02 00 00    	je     0x405d6b
405ae7:	68 00 00 00 80       	push   $0x80000000
405aec:	ff 75 c8             	push   -0x38(%ebp)
405aef:	50                   	push   %eax
405af0:	ff 15 18 80 40 00    	call   *0x408018
405af6:	89 45 e0             	mov    %eax,-0x20(%ebp)
405af9:	85 c0                	test   %eax,%eax
405afb:	74 07                	je     0x405b04
405afd:	50                   	push   %eax
405afe:	ff 15 28 80 40 00    	call   *0x408028
405b04:	ff 75 dc             	push   -0x24(%ebp)
405b07:	ff 15 28 80 40 00    	call   *0x408028
405b0d:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
405b11:	0f 84 54 02 00 00    	je     0x405d6b
405b17:	33 c9                	xor    %ecx,%ecx
405b19:	8b c1                	mov    %ecx,%eax
405b1b:	89 4d e0             	mov    %ecx,-0x20(%ebp)
405b1e:	39 0e                	cmp    %ecx,(%esi)
405b20:	74 09                	je     0x405b2b
405b22:	40                   	inc    %eax
405b23:	39 0c 86             	cmp    %ecx,(%esi,%eax,4)
405b26:	75 fa                	jne    0x405b22
405b28:	89 45 e0             	mov    %eax,-0x20(%ebp)
405b2b:	33 c9                	xor    %ecx,%ecx
405b2d:	83 c0 02             	add    $0x2,%eax
405b30:	6a 04                	push   $0x4
405b32:	5a                   	pop    %edx
405b33:	f7 e2                	mul    %edx
405b35:	0f 90 c1             	seto   %cl
405b38:	f7 d9                	neg    %ecx
405b3a:	0b c8                	or     %eax,%ecx
405b3c:	51                   	push   %ecx
405b3d:	e8 7c 0a 00 00       	call   0x4065be
405b42:	8b d0                	mov    %eax,%edx
405b44:	89 55 dc             	mov    %edx,-0x24(%ebp)
405b47:	59                   	pop    %ecx
405b48:	85 d2                	test   %edx,%edx
405b4a:	0f 84 1b 02 00 00    	je     0x405d6b
405b50:	33 c0                	xor    %eax,%eax
405b52:	8b c8                	mov    %eax,%ecx
405b54:	85 ff                	test   %edi,%edi
405b56:	7e 2b                	jle    0x405b83
405b58:	8b c6                	mov    %esi,%eax
405b5a:	89 7d cc             	mov    %edi,-0x34(%ebp)
405b5d:	2b c2                	sub    %edx,%eax
405b5f:	8b da                	mov    %edx,%ebx
405b61:	6a 04                	push   $0x4
405b63:	89 45 b0             	mov    %eax,-0x50(%ebp)
405b66:	8b f7                	mov    %edi,%esi
405b68:	8b d0                	mov    %eax,%edx
405b6a:	59                   	pop    %ecx
405b6b:	8b 04 1a             	mov    (%edx,%ebx,1),%eax
405b6e:	89 03                	mov    %eax,(%ebx)
405b70:	03 d9                	add    %ecx,%ebx
405b72:	83 ee 01             	sub    $0x1,%esi
405b75:	75 f4                	jne    0x405b6b
405b77:	8b 75 d0             	mov    -0x30(%ebp),%esi
405b7a:	8b 4d cc             	mov    -0x34(%ebp),%ecx
405b7d:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
405b80:	8b 55 dc             	mov    -0x24(%ebp),%edx
405b83:	8b 45 c8             	mov    -0x38(%ebp),%eax
405b86:	89 04 8a             	mov    %eax,(%edx,%ecx,4)
405b89:	3b 4d e0             	cmp    -0x20(%ebp),%ecx
405b8c:	7d 21                	jge    0x405baf
405b8e:	8d 5a 04             	lea    0x4(%edx),%ebx
405b91:	8b 55 e0             	mov    -0x20(%ebp),%edx
405b94:	6a 04                	push   $0x4
405b96:	8d 1c 8b             	lea    (%ebx,%ecx,4),%ebx
405b99:	5f                   	pop    %edi
405b9a:	8b 04 8e             	mov    (%esi,%ecx,4),%eax
405b9d:	41                   	inc    %ecx
405b9e:	89 03                	mov    %eax,(%ebx)
405ba0:	03 df                	add    %edi,%ebx
405ba2:	3b ca                	cmp    %edx,%ecx
405ba4:	7c f4                	jl     0x405b9a
405ba6:	8b 7d d8             	mov    -0x28(%ebp),%edi
405ba9:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
405bac:	8b 55 dc             	mov    -0x24(%ebp),%edx
405baf:	33 c0                	xor    %eax,%eax
405bb1:	89 44 8a 04          	mov    %eax,0x4(%edx,%ecx,4)
405bb5:	8b ca                	mov    %edx,%ecx
405bb7:	e8 ee c0 ff ff       	call   0x401caa
405bbc:	ff 75 dc             	push   -0x24(%ebp)
405bbf:	89 45 e0             	mov    %eax,-0x20(%ebp)
405bc2:	e8 26 0a 00 00       	call   0x4065ed
405bc7:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
405bcb:	59                   	pop    %ecx
405bcc:	0f 84 99 01 00 00    	je     0x405d6b
405bd2:	8b ce                	mov    %esi,%ecx
405bd4:	e8 ad c1 ff ff       	call   0x401d86
405bd9:	8b 75 e0             	mov    -0x20(%ebp),%esi
405bdc:	33 c9                	xor    %ecx,%ecx
405bde:	41                   	inc    %ecx
405bdf:	e9 8d 00 00 00       	jmp    0x405c71
405be4:	83 f8 2d             	cmp    $0x2d,%eax
405be7:	0f 85 9d 00 00 00    	jne    0x405c8a
405bed:	85 ff                	test   %edi,%edi
405bef:	0f 89 d3 fe ff ff    	jns    0x405ac8
405bf5:	33 c0                	xor    %eax,%eax
405bf7:	8b f8                	mov    %eax,%edi
405bf9:	e9 cc fe ff ff       	jmp    0x405aca
405bfe:	03 f9                	add    %ecx,%edi
405c00:	8b 0c be             	mov    (%esi,%edi,4),%ecx
405c03:	85 c9                	test   %ecx,%ecx
405c05:	74 1f                	je     0x405c26
405c07:	8b 5d c8             	mov    -0x38(%ebp),%ebx
405c0a:	53                   	push   %ebx
405c0b:	51                   	push   %ecx
405c0c:	ff 15 dc 81 40 00    	call   *0x4081dc
405c12:	59                   	pop    %ecx
405c13:	59                   	pop    %ecx
405c14:	85 c0                	test   %eax,%eax
405c16:	74 08                	je     0x405c20
405c18:	47                   	inc    %edi
405c19:	8b 0c be             	mov    (%esi,%edi,4),%ecx
405c1c:	85 c9                	test   %ecx,%ecx
405c1e:	75 ea                	jne    0x405c0a
405c20:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
405c23:	8b 45 dc             	mov    -0x24(%ebp),%eax
405c26:	8d 0c be             	lea    (%esi,%edi,4),%ecx
405c29:	33 d2                	xor    %edx,%edx
405c2b:	39 11                	cmp    %edx,(%ecx)
405c2d:	0f 84 38 01 00 00    	je     0x405d6b
405c33:	83 f8 40             	cmp    $0x40,%eax
405c36:	75 05                	jne    0x405c3d
405c38:	33 c9                	xor    %ecx,%ecx
405c3a:	41                   	inc    %ecx
405c3b:	eb 3b                	jmp    0x405c78
405c3d:	8b d7                	mov    %edi,%edx
405c3f:	33 db                	xor    %ebx,%ebx
405c41:	8b 41 04             	mov    0x4(%ecx),%eax
405c44:	42                   	inc    %edx
405c45:	89 01                	mov    %eax,(%ecx)
405c47:	8d 0c 96             	lea    (%esi,%edx,4),%ecx
405c4a:	39 19                	cmp    %ebx,(%ecx)
405c4c:	75 f3                	jne    0x405c41
405c4e:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
405c51:	8b ce                	mov    %esi,%ecx
405c53:	e8 52 c0 ff ff       	call   0x401caa
405c58:	89 45 cc             	mov    %eax,-0x34(%ebp)
405c5b:	85 c0                	test   %eax,%eax
405c5d:	0f 84 08 01 00 00    	je     0x405d6b
405c63:	8b ce                	mov    %esi,%ecx
405c65:	e8 1c c1 ff ff       	call   0x401d86
405c6a:	8b 75 cc             	mov    -0x34(%ebp),%esi
405c6d:	33 c0                	xor    %eax,%eax
405c6f:	8b c8                	mov    %eax,%ecx
405c71:	c6 45 eb 01          	movb   $0x1,-0x15(%ebp)
405c75:	89 75 d0             	mov    %esi,-0x30(%ebp)
405c78:	8b 55 c4             	mov    -0x3c(%ebp),%edx
405c7b:	42                   	inc    %edx
405c7c:	89 55 c4             	mov    %edx,-0x3c(%ebp)
405c7f:	3b 55 14             	cmp    0x14(%ebp),%edx
405c82:	0f 8c c5 fd ff ff    	jl     0x405a4d
405c88:	eb 0b                	jmp    0x405c95
405c8a:	6a 03                	push   $0x3
405c8c:	5b                   	pop    %ebx
405c8d:	e9 d9 00 00 00       	jmp    0x405d6b
405c92:	6a 03                	push   $0x3
405c94:	5b                   	pop    %ebx
405c95:	80 7d eb 00          	cmpb   $0x0,-0x15(%ebp)
405c99:	0f 84 a9 00 00 00    	je     0x405d48
405c9f:	33 c0                	xor    %eax,%eax
405ca1:	39 06                	cmp    %eax,(%esi)
405ca3:	74 76                	je     0x405d1b
405ca5:	8b 7e fc             	mov    -0x4(%esi),%edi
405ca8:	8b cf                	mov    %edi,%ecx
405caa:	66 39 07             	cmp    %ax,(%edi)
405cad:	74 2a                	je     0x405cd9
405caf:	33 f6                	xor    %esi,%esi
405cb1:	8b d1                	mov    %ecx,%edx
405cb3:	8d 42 02             	lea    0x2(%edx),%eax
405cb6:	89 45 cc             	mov    %eax,-0x34(%ebp)
405cb9:	66 8b 02             	mov    (%edx),%ax
405cbc:	83 c2 02             	add    $0x2,%edx
405cbf:	66 3b c6             	cmp    %si,%ax
405cc2:	75 f5                	jne    0x405cb9
405cc4:	2b 55 cc             	sub    -0x34(%ebp),%edx
405cc7:	d1 fa                	sar    $1,%edx
405cc9:	8d 0c 51             	lea    (%ecx,%edx,2),%ecx
405ccc:	83 c1 02             	add    $0x2,%ecx
405ccf:	66 39 31             	cmp    %si,(%ecx)
405cd2:	75 dd                	jne    0x405cb1
405cd4:	8b 75 d0             	mov    -0x30(%ebp),%esi
405cd7:	33 c0                	xor    %eax,%eax
405cd9:	2b cf                	sub    %edi,%ecx
405cdb:	83 c1 02             	add    $0x2,%ecx
405cde:	83 e1 fe             	and    $0xfffffffe,%ecx
405ce1:	51                   	push   %ecx
405ce2:	57                   	push   %edi
405ce3:	8b 7d e4             	mov    -0x1c(%ebp),%edi
405ce6:	6a 07                	push   $0x7
405ce8:	50                   	push   %eax
405ce9:	ff 75 c0             	push   -0x40(%ebp)
405cec:	57                   	push   %edi
405ced:	ff 15 20 80 40 00    	call   *0x408020
405cf3:	85 c0                	test   %eax,%eax
405cf5:	75 77                	jne    0x405d6e
405cf7:	68 3e f0 00 00       	push   $0xf03e
405cfc:	6a 01                	push   $0x1
405cfe:	e8 76 11 00 00       	call   0x406e79
405d03:	59                   	pop    %ecx
405d04:	50                   	push   %eax
405d05:	e8 d3 bc ff ff       	call   0x4019dd
405d0a:	59                   	pop    %ecx
405d0b:	59                   	pop    %ecx
405d0c:	33 c9                	xor    %ecx,%ecx
405d0e:	8b d6                	mov    %esi,%edx
405d10:	41                   	inc    %ecx
405d11:	e8 23 d8 ff ff       	call   0x403539
405d16:	33 db                	xor    %ebx,%ebx
405d18:	43                   	inc    %ebx
405d19:	eb 53                	jmp    0x405d6e
405d1b:	ff 75 c0             	push   -0x40(%ebp)
405d1e:	8b 7d e4             	mov    -0x1c(%ebp),%edi
405d21:	57                   	push   %edi
405d22:	ff 15 1c 80 40 00    	call   *0x40801c
405d28:	85 c0                	test   %eax,%eax
405d2a:	74 05                	je     0x405d31
405d2c:	83 f8 02             	cmp    $0x2,%eax
405d2f:	75 3d                	jne    0x405d6e
405d31:	68 3e f0 00 00       	push   $0xf03e
405d36:	6a 01                	push   $0x1
405d38:	e8 3c 11 00 00       	call   0x406e79
405d3d:	59                   	pop    %ecx
405d3e:	50                   	push   %eax
405d3f:	e8 99 bc ff ff       	call   0x4019dd
405d44:	59                   	pop    %ecx
405d45:	59                   	pop    %ecx
405d46:	eb ce                	jmp    0x405d16
405d48:	68 3f f0 00 00       	push   $0xf03f
405d4d:	6a 01                	push   $0x1
405d4f:	e8 25 11 00 00       	call   0x406e79
405d54:	59                   	pop    %ecx
405d55:	50                   	push   %eax
405d56:	e8 82 bc ff ff       	call   0x4019dd
405d5b:	59                   	pop    %ecx
405d5c:	59                   	pop    %ecx
405d5d:	33 c9                	xor    %ecx,%ecx
405d5f:	8b d6                	mov    %esi,%edx
405d61:	41                   	inc    %ecx
405d62:	e8 d2 d7 ff ff       	call   0x403539
405d67:	33 c0                	xor    %eax,%eax
405d69:	8b d8                	mov    %eax,%ebx
405d6b:	8b 7d e4             	mov    -0x1c(%ebp),%edi
405d6e:	85 f6                	test   %esi,%esi
405d70:	74 0c                	je     0x405d7e
405d72:	8b ce                	mov    %esi,%ecx
405d74:	e8 0d c0 ff ff       	call   0x401d86
405d79:	eb 03                	jmp    0x405d7e
405d7b:	8b 7d e4             	mov    -0x1c(%ebp),%edi
405d7e:	57                   	push   %edi
405d7f:	ff 15 14 80 40 00    	call   *0x408014
405d85:	eb 03                	jmp    0x405d8a
405d87:	6a 03                	push   $0x3
405d89:	5b                   	pop    %ebx
405d8a:	8b c3                	mov    %ebx,%eax
405d8c:	eb 03                	jmp    0x405d91
405d8e:	6a 03                	push   $0x3
405d90:	58                   	pop    %eax
405d91:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405d94:	5f                   	pop    %edi
405d95:	5e                   	pop    %esi
405d96:	33 cd                	xor    %ebp,%ecx
405d98:	5b                   	pop    %ebx
405d99:	e8 42 0b 00 00       	call   0x4068e0
405d9e:	c9                   	leave
405d9f:	c2 14 00             	ret    $0x14
405da2:	cc                   	int3
405da3:	cc                   	int3
405da4:	cc                   	int3
405da5:	cc                   	int3
405da6:	cc                   	int3
405da7:	cc                   	int3
405da8:	cc                   	int3
405da9:	cc                   	int3
405daa:	cc                   	int3
405dab:	cc                   	int3
405dac:	cc                   	int3
405dad:	cc                   	int3
405dae:	cc                   	int3
405daf:	cc                   	int3
405db0:	8b ff                	mov    %edi,%edi
405db2:	55                   	push   %ebp
405db3:	8b ec                	mov    %esp,%ebp
405db5:	81 ec ec 03 00 00    	sub    $0x3ec,%esp
405dbb:	a1 b4 71 40 00       	mov    0x4071b4,%eax
405dc0:	33 c5                	xor    %ebp,%eax
405dc2:	89 45 fc             	mov    %eax,-0x4(%ebp)
405dc5:	8b 45 08             	mov    0x8(%ebp),%eax
405dc8:	8d 8d 44 fc ff ff    	lea    -0x3bc(%ebp),%ecx
405dce:	53                   	push   %ebx
405dcf:	8b 5d 14             	mov    0x14(%ebp),%ebx
405dd2:	56                   	push   %esi
405dd3:	8b 75 0c             	mov    0xc(%ebp),%esi
405dd6:	57                   	push   %edi
405dd7:	6a 02                	push   $0x2
405dd9:	5f                   	pop    %edi
405dda:	51                   	push   %ecx
405ddb:	50                   	push   %eax
405ddc:	89 85 20 fc ff ff    	mov    %eax,-0x3e0(%ebp)
405de2:	89 b5 30 fc ff ff    	mov    %esi,-0x3d0(%ebp)
405de8:	89 9d 28 fc ff ff    	mov    %ebx,-0x3d8(%ebp)
405dee:	c7 85 44 fc ff ff 26 	movl   $0x226,-0x3bc(%ebp)
405df5:	02 00 00
405df8:	ff 15 0c 81 40 00    	call   *0x40810c
405dfe:	85 c0                	test   %eax,%eax
405e00:	74 7f                	je     0x405e81
405e02:	ff b5 58 fc ff ff    	push   -0x3a8(%ebp)
405e08:	33 c0                	xor    %eax,%eax
405e0a:	50                   	push   %eax
405e0b:	89 85 18 fc ff ff    	mov    %eax,-0x3e8(%ebp)
405e11:	8d 85 6c fe ff ff    	lea    -0x194(%ebp),%eax