405972:	89 75 e4             	mov    %esi,-0x1c(%ebp)
405975:	33 db                	xor    %ebx,%ebx
405977:	43                   	inc    %ebx
405978:	53                   	push   %ebx
405979:	e8 ba 3d 00 00       	call   0x409738
40597e:	59                   	pop    %ecx
40597f:	85 c0                	test   %eax,%eax
405981:	75 08                	jne    0x40598b
405983:	6a 1c                	push   $0x1c
405985:	e8 58 ff ff ff       	call   0x4058e2
40598a:	59                   	pop    %ecx
40598b:	e8 fa 51 00 00       	call   0x40ab8a
405990:	85 c0                	test   %eax,%eax
405992:	75 08                	jne    0x40599c
405994:	6a 10                	push   $0x10
405996:	e8 47 ff ff ff       	call   0x4058e2
40599b:	59                   	pop    %ecx
40599c:	e8 10 78 00 00       	call   0x40d1b1
4059a1:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4059a4:	e8 33 64 00 00       	call   0x40bddc
4059a9:	85 c0                	test   %eax,%eax
4059ab:	7d 08                	jge    0x4059b5
4059ad:	6a 1b                	push   $0x1b
4059af:	e8 e8 6c 00 00       	call   0x40c69c
4059b4:	59                   	pop    %ecx
4059b5:	ff 15 b4 a0 41 00    	call   *0x41a0b4
4059bb:	a3 a4 23 c7 00       	mov    %eax,0xc723a4
4059c0:	e8 b5 76 00 00       	call   0x40d07a
4059c5:	a3 f0 07 43 00       	mov    %eax,0x4307f0
4059ca:	e8 f0 75 00 00       	call   0x40cfbf
4059cf:	85 c0                	test   %eax,%eax
4059d1:	7d 08                	jge    0x4059db
4059d3:	6a 08                	push   $0x8
4059d5:	e8 c2 6c 00 00       	call   0x40c69c
4059da:	59                   	pop    %ecx
4059db:	e8 67 73 00 00       	call   0x40cd47
4059e0:	85 c0                	test   %eax,%eax
4059e2:	7d 08                	jge    0x4059ec
4059e4:	6a 09                	push   $0x9
4059e6:	e8 b1 6c 00 00       	call   0x40c69c
4059eb:	59                   	pop    %ecx
4059ec:	53                   	push   %ebx
4059ed:	e8 69 6d 00 00       	call   0x40c75b
4059f2:	59                   	pop    %ecx
4059f3:	3b c6                	cmp    %esi,%eax
4059f5:	74 07                	je     0x4059fe
4059f7:	50                   	push   %eax
4059f8:	e8 9f 6c 00 00       	call   0x40c69c
4059fd:	59                   	pop    %ecx
4059fe:	e8 e5 72 00 00       	call   0x40cce8
405a03:	84 5d c4             	test   %bl,-0x3c(%ebp)
405a06:	74 06                	je     0x405a0e
405a08:	0f b7 4d c8          	movzwl -0x38(%ebp),%ecx
405a0c:	eb 03                	jmp    0x405a11
405a0e:	6a 0a                	push   $0xa
405a10:	59                   	pop    %ecx
405a11:	51                   	push   %ecx
405a12:	50                   	push   %eax
405a13:	56                   	push   %esi
405a14:	68 00 00 40 00       	push   $0x400000
405a19:	e8 82 c9 ff ff       	call   0x4023a0
405a1e:	89 45 e0             	mov    %eax,-0x20(%ebp)
405a21:	39 75 e4             	cmp    %esi,-0x1c(%ebp)
405a24:	75 06                	jne    0x405a2c
405a26:	50                   	push   %eax
405a27:	e8 e0 6e 00 00       	call   0x40c90c
405a2c:	e8 07 6f 00 00       	call   0x40c938
405a31:	89 7d fc             	mov    %edi,-0x4(%ebp)
405a34:	eb 35                	jmp    0x405a6b
405a36:	8b 45 ec             	mov    -0x14(%ebp),%eax
405a39:	8b 08                	mov    (%eax),%ecx
405a3b:	8b 09                	mov    (%ecx),%ecx
405a3d:	89 4d dc             	mov    %ecx,-0x24(%ebp)
405a40:	50                   	push   %eax
405a41:	51                   	push   %ecx
405a42:	e8 41 71 00 00       	call   0x40cb88
405a47:	59                   	pop    %ecx
405a48:	59                   	pop    %ecx
405a49:	c3                   	ret
405a4a:	8b 65 e8             	mov    -0x18(%ebp),%esp
405a4d:	8b 45 dc             	mov    -0x24(%ebp),%eax
405a50:	89 45 e0             	mov    %eax,-0x20(%ebp)
405a53:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
405a57:	75 06                	jne    0x405a5f
405a59:	50                   	push   %eax
405a5a:	e8 c3 6e 00 00       	call   0x40c922
405a5f:	e8 e3 6e 00 00       	call   0x40c947
405a64:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
405a6b:	8b 45 e0             	mov    -0x20(%ebp),%eax
405a6e:	eb 13                	jmp    0x405a83
405a70:	33 c0                	xor    %eax,%eax
405a72:	40                   	inc    %eax
405a73:	c3                   	ret
405a74:	8b 65 e8             	mov    -0x18(%ebp),%esp
405a77:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
405a7e:	b8 ff 00 00 00       	mov    $0xff,%eax
405a83:	e8 99 49 00 00       	call   0x40a421
405a88:	c3                   	ret
405a89:	e8 6f 77 00 00       	call   0x40d1fd
405a8e:	e9 78 fe ff ff       	jmp    0x40590b
405a93:	8b ff                	mov    %edi,%edi
405a95:	55                   	push   %ebp
405a96:	8b ec                	mov    %esp,%ebp
405a98:	8b 45 08             	mov    0x8(%ebp),%eax
405a9b:	33 c9                	xor    %ecx,%ecx
405a9d:	3b 04 cd f0 b0 42 00 	cmp    0x42b0f0(,%ecx,8),%eax
405aa4:	74 13                	je     0x405ab9
405aa6:	41                   	inc    %ecx
405aa7:	83 f9 2d             	cmp    $0x2d,%ecx
405aaa:	72 f1                	jb     0x405a9d
405aac:	8d 48 ed             	lea    -0x13(%eax),%ecx
405aaf:	83 f9 11             	cmp    $0x11,%ecx
405ab2:	77 0e                	ja     0x405ac2
405ab4:	6a 0d                	push   $0xd
405ab6:	58                   	pop    %eax
405ab7:	5d                   	pop    %ebp
405ab8:	c3                   	ret
405ab9:	8b 04 cd f4 b0 42 00 	mov    0x42b0f4(,%ecx,8),%eax
405ac0:	5d                   	pop    %ebp
405ac1:	c3                   	ret
405ac2:	05 44 ff ff ff       	add    $0xffffff44,%eax
405ac7:	6a 0e                	push   $0xe
405ac9:	59                   	pop    %ecx
405aca:	3b c8                	cmp    %eax,%ecx
405acc:	1b c0                	sbb    %eax,%eax
405ace:	23 c1                	and    %ecx,%eax
405ad0:	83 c0 08             	add    $0x8,%eax
405ad3:	5d                   	pop    %ebp
405ad4:	c3                   	ret
405ad5:	e8 ee 4e 00 00       	call   0x40a9c8
405ada:	85 c0                	test   %eax,%eax
405adc:	75 06                	jne    0x405ae4
405ade:	b8 58 b2 42 00       	mov    $0x42b258,%eax
405ae3:	c3                   	ret
405ae4:	83 c0 08             	add    $0x8,%eax
405ae7:	c3                   	ret
405ae8:	e8 db 4e 00 00       	call   0x40a9c8
405aed:	85 c0                	test   %eax,%eax
405aef:	75 06                	jne    0x405af7
405af1:	b8 5c b2 42 00       	mov    $0x42b25c,%eax
405af6:	c3                   	ret
405af7:	83 c0 0c             	add    $0xc,%eax
405afa:	c3                   	ret
405afb:	8b ff                	mov    %edi,%edi
405afd:	55                   	push   %ebp
405afe:	8b ec                	mov    %esp,%ebp
405b00:	56                   	push   %esi
405b01:	e8 e2 ff ff ff       	call   0x405ae8
405b06:	8b 4d 08             	mov    0x8(%ebp),%ecx
405b09:	51                   	push   %ecx
405b0a:	89 08                	mov    %ecx,(%eax)
405b0c:	e8 82 ff ff ff       	call   0x405a93
405b11:	59                   	pop    %ecx
405b12:	8b f0                	mov    %eax,%esi
405b14:	e8 bc ff ff ff       	call   0x405ad5
405b19:	89 30                	mov    %esi,(%eax)
405b1b:	5e                   	pop    %esi
405b1c:	5d                   	pop    %ebp
405b1d:	c3                   	ret
405b1e:	8b ff                	mov    %edi,%edi
405b20:	55                   	push   %ebp
405b21:	8b ec                	mov    %esp,%ebp
405b23:	83 ec 4c             	sub    $0x4c,%esp
405b26:	a1 68 b2 42 00       	mov    0x42b268,%eax
405b2b:	33 c5                	xor    %ebp,%eax
405b2d:	89 45 fc             	mov    %eax,-0x4(%ebp)
405b30:	53                   	push   %ebx
405b31:	33 db                	xor    %ebx,%ebx
405b33:	56                   	push   %esi
405b34:	8b 75 08             	mov    0x8(%ebp),%esi
405b37:	57                   	push   %edi
405b38:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
405b3b:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
405b3e:	89 5d e0             	mov    %ebx,-0x20(%ebp)
405b41:	89 5d d8             	mov    %ebx,-0x28(%ebp)
405b44:	89 5d dc             	mov    %ebx,-0x24(%ebp)
405b47:	89 75 b4             	mov    %esi,-0x4c(%ebp)
405b4a:	89 5d b8             	mov    %ebx,-0x48(%ebp)
405b4d:	39 5e 14             	cmp    %ebx,0x14(%esi)
405b50:	0f 84 16 03 00 00    	je     0x405e6c
405b56:	8d 46 04             	lea    0x4(%esi),%eax
405b59:	39 18                	cmp    %ebx,(%eax)
405b5b:	75 20                	jne    0x405b7d
405b5d:	50                   	push   %eax
405b5e:	0f b7 46 30          	movzwl 0x30(%esi),%eax
405b62:	68 04 10 00 00       	push   $0x1004
405b67:	50                   	push   %eax
405b68:	8d 45 b4             	lea    -0x4c(%ebp),%eax
405b6b:	53                   	push   %ebx
405b6c:	50                   	push   %eax
405b6d:	e8 1d 79 00 00       	call   0x40d48f
405b72:	83 c4 14             	add    $0x14,%esp
405b75:	85 c0                	test   %eax,%eax
405b77:	0f 85 c7 02 00 00    	jne    0x405e44
405b7d:	6a 04                	push   $0x4
405b7f:	e8 dc 1f 00 00       	call   0x407b60
405b84:	6a 02                	push   $0x2
405b86:	bf 80 01 00 00       	mov    $0x180,%edi
405b8b:	57                   	push   %edi
405b8c:	89 45 d4             	mov    %eax,-0x2c(%ebp)
405b8f:	e8 11 20 00 00       	call   0x407ba5
405b94:	6a 01                	push   $0x1
405b96:	57                   	push   %edi
405b97:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405b9a:	e8 06 20 00 00       	call   0x407ba5
405b9f:	6a 01                	push   $0x1
405ba1:	57                   	push   %edi
405ba2:	89 45 e0             	mov    %eax,-0x20(%ebp)
405ba5:	e8 fb 1f 00 00       	call   0x407ba5
405baa:	6a 01                	push   $0x1
405bac:	68 01 01 00 00       	push   $0x101
405bb1:	89 45 d8             	mov    %eax,-0x28(%ebp)
405bb4:	e8 ec 1f 00 00       	call   0x407ba5
405bb9:	83 c4 24             	add    $0x24,%esp
405bbc:	89 45 dc             	mov    %eax,-0x24(%ebp)
405bbf:	39 5d d4             	cmp    %ebx,-0x2c(%ebp)
405bc2:	0f 84 7c 02 00 00    	je     0x405e44
405bc8:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
405bcb:	0f 84 73 02 00 00    	je     0x405e44
405bd1:	3b c3                	cmp    %ebx,%eax
405bd3:	0f 84 6b 02 00 00    	je     0x405e44
405bd9:	39 5d e0             	cmp    %ebx,-0x20(%ebp)
405bdc:	0f 84 62 02 00 00    	je     0x405e44
405be2:	39 5d d8             	cmp    %ebx,-0x28(%ebp)
405be5:	0f 84 59 02 00 00    	je     0x405e44
405beb:	8b 45 d4             	mov    -0x2c(%ebp),%eax
405bee:	89 18                	mov    %ebx,(%eax)
405bf0:	33 c0                	xor    %eax,%eax
405bf2:	8b 4d dc             	mov    -0x24(%ebp),%ecx
405bf5:	88 04 08             	mov    %al,(%eax,%ecx,1)
405bf8:	40                   	inc    %eax
405bf9:	3d 00 01 00 00       	cmp    $0x100,%eax
405bfe:	7c f2                	jl     0x405bf2
405c00:	8d 45 e8             	lea    -0x18(%ebp),%eax
405c03:	50                   	push   %eax
405c04:	ff 76 04             	push   0x4(%esi)
405c07:	ff 15 bc a0 41 00    	call   *0x41a0bc
405c0d:	85 c0                	test   %eax,%eax
405c0f:	0f 84 2f 02 00 00    	je     0x405e44
405c15:	83 7d e8 05          	cmpl   $0x5,-0x18(%ebp)
405c19:	0f 87 25 02 00 00    	ja     0x405e44
405c1f:	0f b7 45 e8          	movzwl -0x18(%ebp),%eax
405c23:	83 f8 01             	cmp    $0x1,%eax
405c26:	89 45 d0             	mov    %eax,-0x30(%ebp)
405c29:	7e 2d                	jle    0x405c58
405c2b:	38 5d ee             	cmp    %bl,-0x12(%ebp)
405c2e:	74 28                	je     0x405c58
405c30:	8d 45 ef             	lea    -0x11(%ebp),%eax
405c33:	8a 08                	mov    (%eax),%cl
405c35:	3a cb                	cmp    %bl,%cl
405c37:	74 1f                	je     0x405c58
405c39:	0f b6 78 ff          	movzbl -0x1(%eax),%edi
405c3d:	0f b6 c9             	movzbl %cl,%ecx
405c40:	eb 0b                	jmp    0x405c4d
405c42:	8b 4d dc             	mov    -0x24(%ebp),%ecx
405c45:	c6 04 0f 20          	movb   $0x20,(%edi,%ecx,1)
405c49:	0f b6 08             	movzbl (%eax),%ecx
405c4c:	47                   	inc    %edi
405c4d:	3b f9                	cmp    %ecx,%edi
405c4f:	7e f1                	jle    0x405c42
405c51:	40                   	inc    %eax
405c52:	40                   	inc    %eax
405c53:	38 58 ff             	cmp    %bl,-0x1(%eax)
405c56:	75 db                	jne    0x405c33
405c58:	8b 45 e4             	mov    -0x1c(%ebp),%eax
405c5b:	53                   	push   %ebx
405c5c:	53                   	push   %ebx
405c5d:	ff 76 04             	push   0x4(%esi)
405c60:	05 00 01 00 00       	add    $0x100,%eax
405c65:	50                   	push   %eax
405c66:	68 00 01 00 00       	push   $0x100
405c6b:	ff 75 dc             	push   -0x24(%ebp)
405c6e:	89 45 c0             	mov    %eax,-0x40(%ebp)
405c71:	6a 01                	push   $0x1
405c73:	53                   	push   %ebx
405c74:	e8 d4 77 00 00       	call   0x40d44d
405c79:	83 c4 20             	add    $0x20,%esp
405c7c:	85 c0                	test   %eax,%eax
405c7e:	0f 84 c0 01 00 00    	je     0x405e44
405c84:	8b 4d e0             	mov    -0x20(%ebp),%ecx
405c87:	8b 45 dc             	mov    -0x24(%ebp),%eax
405c8a:	53                   	push   %ebx
405c8b:	ff 76 04             	push   0x4(%esi)
405c8e:	bf ff 00 00 00       	mov    $0xff,%edi
405c93:	57                   	push   %edi
405c94:	81 c1 81 00 00 00    	add    $0x81,%ecx
405c9a:	51                   	push   %ecx
405c9b:	57                   	push   %edi
405c9c:	40                   	inc    %eax
405c9d:	50                   	push   %eax
405c9e:	68 00 01 00 00       	push   $0x100
405ca3:	ff 76 14             	push   0x14(%esi)
405ca6:	53                   	push   %ebx
405ca7:	e8 81 23 00 00       	call   0x40802d
405cac:	83 c4 24             	add    $0x24,%esp
405caf:	85 c0                	test   %eax,%eax
405cb1:	0f 84 8d 01 00 00    	je     0x405e44
405cb7:	8b 45 d8             	mov    -0x28(%ebp),%eax
405cba:	53                   	push   %ebx
405cbb:	ff 76 04             	push   0x4(%esi)
405cbe:	05 81 00 00 00       	add    $0x81,%eax
405cc3:	57                   	push   %edi
405cc4:	50                   	push   %eax
405cc5:	8b 45 dc             	mov    -0x24(%ebp),%eax
405cc8:	57                   	push   %edi
405cc9:	40                   	inc    %eax
405cca:	50                   	push   %eax
405ccb:	68 00 02 00 00       	push   $0x200
405cd0:	ff 76 14             	push   0x14(%esi)
405cd3:	53                   	push   %ebx
405cd4:	e8 54 23 00 00       	call   0x40802d
405cd9:	83 c4 24             	add    $0x24,%esp
405cdc:	85 c0                	test   %eax,%eax
405cde:	0f 84 60 01 00 00    	je     0x405e44
405ce4:	8b 45 e4             	mov    -0x1c(%ebp),%eax
405ce7:	8b 7d e0             	mov    -0x20(%ebp),%edi
405cea:	8d 88 fe 00 00 00    	lea    0xfe(%eax),%ecx
405cf0:	33 d2                	xor    %edx,%edx
405cf2:	83 7d d0 01          	cmpl   $0x1,-0x30(%ebp)
405cf6:	66 89 11             	mov    %dx,(%ecx)
405cf9:	8b 55 d8             	mov    -0x28(%ebp),%edx
405cfc:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
405cff:	8d 8f 80 00 00 00    	lea    0x80(%edi),%ecx
405d05:	88 5f 7f             	mov    %bl,0x7f(%edi)
405d08:	88 5a 7f             	mov    %bl,0x7f(%edx)
405d0b:	88 19                	mov    %bl,(%ecx)
405d0d:	89 4d bc             	mov    %ecx,-0x44(%ebp)
405d10:	8d 8a 80 00 00 00    	lea    0x80(%edx),%ecx
405d16:	89 4d c8             	mov    %ecx,-0x38(%ebp)
405d19:	88 19                	mov    %bl,(%ecx)
405d1b:	7e 53                	jle    0x405d70
405d1d:	38 5d ee             	cmp    %bl,-0x12(%ebp)
405d20:	74 4e                	je     0x405d70
405d22:	8d 4d ef             	lea    -0x11(%ebp),%ecx
405d25:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
405d28:	8a 11                	mov    (%ecx),%dl
405d2a:	3a d3                	cmp    %bl,%dl
405d2c:	74 42                	je     0x405d70
405d2e:	0f b6 49 ff          	movzbl -0x1(%ecx),%ecx
405d32:	0f b6 d2             	movzbl %dl,%edx
405d35:	3b ca                	cmp    %edx,%ecx
405d37:	89 4d e0             	mov    %ecx,-0x20(%ebp)
405d3a:	7f 27                	jg     0x405d63
405d3c:	8d 8c 48 00 01 00 00 	lea    0x100(%eax,%ecx,2),%ecx
405d43:	eb 03                	jmp    0x405d48
405d45:	8b 4d cc             	mov    -0x34(%ebp),%ecx
405d48:	ff 45 e0             	incl   -0x20(%ebp)
405d4b:	ba 00 80 00 00       	mov    $0x8000,%edx
405d50:	66 89 11             	mov    %dx,(%ecx)
405d53:	41                   	inc    %ecx