405899:	8b 7d 0c             	mov    0xc(%ebp),%edi
40589c:	33 c0                	xor    %eax,%eax
40589e:	89 45 fc             	mov    %eax,-0x4(%ebp)
4058a1:	6a 02                	push   $0x2
4058a3:	5e                   	pop    %esi
4058a4:	85 ff                	test   %edi,%edi
4058a6:	74 12                	je     0x4058ba
4058a8:	8d 45 fc             	lea    -0x4(%ebp),%eax
4058ab:	50                   	push   %eax
4058ac:	57                   	push   %edi
4058ad:	ff 15 ac 80 40 00    	call   *0x4080ac
4058b3:	85 c0                	test   %eax,%eax
4058b5:	75 69                	jne    0x405920
4058b7:	8b 45 fc             	mov    -0x4(%ebp),%eax
4058ba:	50                   	push   %eax
4058bb:	6a 00                	push   $0x0
4058bd:	6a 00                	push   $0x0
4058bf:	8d 45 f8             	lea    -0x8(%ebp),%eax
4058c2:	50                   	push   %eax
4058c3:	ff 15 b4 80 40 00    	call   *0x4080b4
4058c9:	85 c0                	test   %eax,%eax
4058cb:	75 44                	jne    0x405911
4058cd:	85 ff                	test   %edi,%edi
4058cf:	0f 95 c0             	setne  %al
4058d2:	05 76 ef 00 00       	add    $0xef76,%eax
4058d7:	50                   	push   %eax
4058d8:	6a 01                	push   $0x1
4058da:	e8 9a 15 00 00       	call   0x406e79
4058df:	59                   	pop    %ecx
4058e0:	50                   	push   %eax
4058e1:	e8 f7 c0 ff ff       	call   0x4019dd
4058e6:	59                   	pop    %ecx
4058e7:	59                   	pop    %ecx
4058e8:	ff 75 fc             	push   -0x4(%ebp)
4058eb:	6a 00                	push   $0x0
4058ed:	ff 75 f8             	push   -0x8(%ebp)
4058f0:	ff 15 bc 80 40 00    	call   *0x4080bc
4058f6:	85 c0                	test   %eax,%eax
4058f8:	75 17                	jne    0x405911
4058fa:	68 78 ef 00 00       	push   $0xef78
4058ff:	6a 01                	push   $0x1
405901:	e8 73 15 00 00       	call   0x406e79
405906:	59                   	pop    %ecx
405907:	50                   	push   %eax
405908:	e8 d0 c0 ff ff       	call   0x4019dd
40590d:	59                   	pop    %ecx
40590e:	59                   	pop    %ecx
40590f:	33 f6                	xor    %esi,%esi
405911:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
405915:	74 09                	je     0x405920
405917:	ff 75 fc             	push   -0x4(%ebp)
40591a:	ff 15 b8 80 40 00    	call   *0x4080b8
405920:	5f                   	pop    %edi
405921:	8b c6                	mov    %esi,%eax
405923:	5e                   	pop    %esi
405924:	c9                   	leave
405925:	c2 14 00             	ret    $0x14
405928:	cc                   	int3
405929:	cc                   	int3
40592a:	cc                   	int3
40592b:	cc                   	int3
40592c:	cc                   	int3
40592d:	cc                   	int3
40592e:	cc                   	int3
40592f:	cc                   	int3
405930:	8b ff                	mov    %edi,%edi
405932:	55                   	push   %ebp
405933:	8b ec                	mov    %esp,%ebp
405935:	83 ec 50             	sub    $0x50,%esp
405938:	a1 b4 71 40 00       	mov    0x4071b4,%eax
40593d:	33 c5                	xor    %ebp,%eax
40593f:	89 45 fc             	mov    %eax,-0x4(%ebp)
405942:	53                   	push   %ebx
405943:	56                   	push   %esi
405944:	8b 75 18             	mov    0x18(%ebp),%esi
405947:	33 c9                	xor    %ecx,%ecx
405949:	57                   	push   %edi
40594a:	8b 7d 0c             	mov    0xc(%ebp),%edi
40594d:	6a 02                	push   $0x2
40594f:	5b                   	pop    %ebx
405950:	89 7d b4             	mov    %edi,-0x4c(%ebp)
405953:	89 75 b8             	mov    %esi,-0x48(%ebp)
405956:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
405959:	89 4d bc             	mov    %ecx,-0x44(%ebp)
40595c:	88 4d eb             	mov    %cl,-0x15(%ebp)
40595f:	39 5d 14             	cmp    %ebx,0x14(%ebp)
405962:	0f 8c 26 04 00 00    	jl     0x405d8e
405968:	8b 06                	mov    (%esi),%eax
40596a:	66 39 08             	cmp    %cx,(%eax)
40596d:	0f 84 1b 04 00 00    	je     0x405d8e
405973:	51                   	push   %ecx
405974:	57                   	push   %edi
405975:	8d 4d bc             	lea    -0x44(%ebp),%ecx
405978:	51                   	push   %ecx
405979:	6a 01                	push   $0x1
40597b:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40597e:	51                   	push   %ecx
40597f:	50                   	push   %eax
405980:	ff 15 00 81 40 00    	call   *0x408100
405986:	85 c0                	test   %eax,%eax
405988:	75 0f                	jne    0x405999
40598a:	ff 15 38 80 40 00    	call   *0x408038
405990:	83 f8 7a             	cmp    $0x7a,%eax
405993:	0f 85 f1 03 00 00    	jne    0x405d8a
405999:	83 7d bc 00          	cmpl   $0x0,-0x44(%ebp)
40599d:	0f 84 e7 03 00 00    	je     0x405d8a
4059a3:	68 f8 13 40 00       	push   $0x4013f8
4059a8:	ff 76 04             	push   0x4(%esi)
4059ab:	ff 15 dc 81 40 00    	call   *0x4081dc
4059b1:	59                   	pop    %ecx
4059b2:	59                   	pop    %ecx
4059b3:	85 c0                	test   %eax,%eax
4059b5:	75 07                	jne    0x4059be
4059b7:	be d0 12 40 00       	mov    $0x4012d0,%esi
4059bc:	eb 1d                	jmp    0x4059db
4059be:	68 04 14 40 00       	push   $0x401404
4059c3:	ff 76 04             	push   0x4(%esi)
4059c6:	ff 15 dc 81 40 00    	call   *0x4081dc
4059cc:	59                   	pop    %ecx
4059cd:	59                   	pop    %ecx
4059ce:	85 c0                	test   %eax,%eax
4059d0:	0f 85 b1 03 00 00    	jne    0x405d87
4059d6:	be ec 12 40 00       	mov    $0x4012ec,%esi
4059db:	33 c0                	xor    %eax,%eax
4059dd:	89 75 c0             	mov    %esi,-0x40(%ebp)
4059e0:	83 7d 14 02          	cmpl   $0x2,0x14(%ebp)
4059e4:	50                   	push   %eax
4059e5:	0f 9f c0             	setg   %al
4059e8:	48                   	dec    %eax
4059e9:	57                   	push   %edi
4059ea:	83 e0 fa             	and    $0xfffffffa,%eax
4059ed:	6a 01                	push   $0x1
4059ef:	05 1f 00 02 00       	add    $0x2001f,%eax
4059f4:	50                   	push   %eax
4059f5:	8d 45 ec             	lea    -0x14(%ebp),%eax
4059f8:	50                   	push   %eax
4059f9:	ff 15 d0 80 40 00    	call   *0x4080d0
4059ff:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405a02:	83 f8 ff             	cmp    $0xffffffff,%eax
405a05:	0f 84 7f 03 00 00    	je     0x405d8a
405a0b:	8b d6                	mov    %esi,%edx
405a0d:	8b c8                	mov    %eax,%ecx
405a0f:	e8 4f c4 ff ff       	call   0x401e63
405a14:	83 7d 14 02          	cmpl   $0x2,0x14(%ebp)
405a18:	8b f0                	mov    %eax,%esi
405a1a:	89 75 d0             	mov    %esi,-0x30(%ebp)
405a1d:	0f 8e 25 03 00 00    	jle    0x405d48
405a23:	33 c9                	xor    %ecx,%ecx
405a25:	83 cf ff             	or     $0xffffffff,%edi
405a28:	41                   	inc    %ecx
405a29:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
405a2c:	85 f6                	test   %esi,%esi
405a2e:	75 17                	jne    0x405a47
405a30:	33 c9                	xor    %ecx,%ecx
405a32:	e8 73 c2 ff ff       	call   0x401caa
405a37:	8b f0                	mov    %eax,%esi
405a39:	89 75 d0             	mov    %esi,-0x30(%ebp)
405a3c:	85 f6                	test   %esi,%esi
405a3e:	0f 84 37 03 00 00    	je     0x405d7b
405a44:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
405a47:	6a 02                	push   $0x2
405a49:	5a                   	pop    %edx
405a4a:	89 55 c4             	mov    %edx,-0x3c(%ebp)
405a4d:	8b 45 b8             	mov    -0x48(%ebp),%eax
405a50:	8b 14 90             	mov    (%eax,%edx,4),%edx
405a53:	85 d2                	test   %edx,%edx
405a55:	0f 84 37 02 00 00    	je     0x405c92
405a5b:	0f b7 02             	movzwl (%edx),%eax
405a5e:	83 c2 02             	add    $0x2,%edx
405a61:	89 45 dc             	mov    %eax,-0x24(%ebp)
405a64:	89 55 c8             	mov    %edx,-0x38(%ebp)
405a67:	83 f8 3d             	cmp    $0x3d,%eax
405a6a:	75 1a                	jne    0x405a86
405a6c:	0f b7 02             	movzwl (%edx),%eax
405a6f:	33 c9                	xor    %ecx,%ecx
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