457e50:	8b f0                	mov    %eax,%esi
457e52:	85 f6                	test   %esi,%esi
457e54:	75 24                	jne    0x457e7a
457e56:	8b 45 f4             	mov    -0xc(%ebp),%eax
457e59:	33 c9                	xor    %ecx,%ecx
457e5b:	ff 75 08             	push   0x8(%ebp)
457e5e:	d1 e8                	shr    $1,%eax
457e60:	89 45 f4             	mov    %eax,-0xc(%ebp)
457e63:	66 89 8c 45 94 fd ff 	mov    %cx,-0x26c(%ebp,%eax,2)
457e6a:	ff
457e6b:	8d 85 94 fd ff ff    	lea    -0x26c(%ebp),%eax
457e71:	50                   	push   %eax
457e72:	ff 15 30 f8 48 00    	call   *0x48f830
457e78:	8b f0                	mov    %eax,%esi
457e7a:	ff 75 f8             	push   -0x8(%ebp)
457e7d:	ff d7                	call   *%edi
457e7f:	ff 75 f0             	push   -0x10(%ebp)
457e82:	ff d7                	call   *%edi
457e84:	8d 4d c0             	lea    -0x40(%ebp),%ecx
457e87:	e8 d8 db fa ff       	call   0x405a64
457e8c:	8d 4d e0             	lea    -0x20(%ebp),%ecx
457e8f:	e8 d0 db fa ff       	call   0x405a64
457e94:	8d 4d d0             	lea    -0x30(%ebp),%ecx
457e97:	e8 c8 db fa ff       	call   0x405a64
457e9c:	5f                   	pop    %edi
457e9d:	8b c6                	mov    %esi,%eax
457e9f:	5e                   	pop    %esi
457ea0:	5b                   	pop    %ebx
457ea1:	8b e5                	mov    %ebp,%esp
457ea3:	5d                   	pop    %ebp
457ea4:	c3                   	ret
457ea5:	55                   	push   %ebp
457ea6:	8b ec                	mov    %esp,%ebp
457ea8:	8b 45 08             	mov    0x8(%ebp),%eax
457eab:	83 ec 4c             	sub    $0x4c,%esp
457eae:	83 20 00             	andl   $0x0,(%eax)
457eb1:	53                   	push   %ebx
457eb2:	33 db                	xor    %ebx,%ebx
457eb4:	57                   	push   %edi
457eb5:	8b fa                	mov    %edx,%edi
457eb7:	85 c9                	test   %ecx,%ecx
457eb9:	75 0a                	jne    0x457ec5
457ebb:	b8 03 40 00 80       	mov    $0x80004003,%eax
457ec0:	e9 09 02 00 00       	jmp    0x4580ce
457ec5:	8b 01                	mov    (%ecx),%eax
457ec7:	8d 55 f4             	lea    -0xc(%ebp),%edx
457eca:	52                   	push   %edx
457ecb:	68 00 08 00 00       	push   $0x800
457ed0:	6a 00                	push   $0x0
457ed2:	51                   	push   %ecx
457ed3:	ff 50 10             	call   *0x10(%eax)
457ed6:	85 c0                	test   %eax,%eax
457ed8:	0f 88 f0 01 00 00    	js     0x4580ce
457ede:	8b 45 f4             	mov    -0xc(%ebp),%eax
457ee1:	8d 55 cc             	lea    -0x34(%ebp),%edx
457ee4:	56                   	push   %esi
457ee5:	52                   	push   %edx
457ee6:	8d 55 fc             	lea    -0x4(%ebp),%edx
457ee9:	8b 08                	mov    (%eax),%ecx
457eeb:	52                   	push   %edx
457eec:	50                   	push   %eax
457eed:	ff 51 48             	call   *0x48(%ecx)
457ef0:	8b f0                	mov    %eax,%esi
457ef2:	85 f6                	test   %esi,%esi
457ef4:	79 10                	jns    0x457f06
457ef6:	8b 4d f4             	mov    -0xc(%ebp),%ecx
457ef9:	51                   	push   %ecx
457efa:	8b 11                	mov    (%ecx),%edx
457efc:	ff 52 08             	call   *0x8(%edx)
457eff:	8b c6                	mov    %esi,%eax
457f01:	e9 c7 01 00 00       	jmp    0x4580cd
457f06:	8b 45 fc             	mov    -0x4(%ebp),%eax
457f09:	85 ff                	test   %edi,%edi
457f0b:	74 49                	je     0x457f56
457f0d:	8d 55 f0             	lea    -0x10(%ebp),%edx
457f10:	33 db                	xor    %ebx,%ebx
457f12:	52                   	push   %edx
457f13:	8d 55 c4             	lea    -0x3c(%ebp),%edx
457f16:	43                   	inc    %ebx
457f17:	52                   	push   %edx
457f18:	8d 55 d8             	lea    -0x28(%ebp),%edx
457f1b:	89 5d f0             	mov    %ebx,-0x10(%ebp)
457f1e:	8b 08                	mov    (%eax),%ecx
457f20:	52                   	push   %edx
457f21:	6a 00                	push   $0x0
457f23:	57                   	push   %edi
457f24:	50                   	push   %eax
457f25:	ff 51 2c             	call   *0x2c(%ecx)
457f28:	8b 4d fc             	mov    -0x4(%ebp),%ecx
457f2b:	8b f0                	mov    %eax,%esi
457f2d:	51                   	push   %ecx
457f2e:	8b 11                	mov    (%ecx),%edx
457f30:	ff 52 08             	call   *0x8(%edx)
457f33:	8b 4d f4             	mov    -0xc(%ebp),%ecx
457f36:	51                   	push   %ecx
457f37:	8b 11                	mov    (%ecx),%edx
457f39:	ff 52 08             	call   *0x8(%edx)
457f3c:	85 f6                	test   %esi,%esi
457f3e:	0f 88 20 01 00 00    	js     0x458064
457f44:	66 39 5d f0          	cmp    %bx,-0x10(%ebp)
457f48:	0f 82 16 01 00 00    	jb     0x458064
457f4e:	8b 5d d8             	mov    -0x28(%ebp),%ebx
457f51:	e9 0a 01 00 00       	jmp    0x458060
457f56:	8b 08                	mov    (%eax),%ecx
457f58:	50                   	push   %eax
457f59:	ff 51 0c             	call   *0xc(%ecx)
457f5c:	33 f6                	xor    %esi,%esi
457f5e:	89 45 d8             	mov    %eax,-0x28(%ebp)
457f61:	33 ff                	xor    %edi,%edi
457f63:	89 75 f0             	mov    %esi,-0x10(%ebp)
457f66:	85 c0                	test   %eax,%eax
457f68:	0f 84 e0 00 00 00    	je     0x45804e
457f6e:	85 f6                	test   %esi,%esi
457f70:	0f 85 d8 00 00 00    	jne    0x45804e
457f76:	8b 45 fc             	mov    -0x4(%ebp),%eax
457f79:	8d 55 e4             	lea    -0x1c(%ebp),%edx
457f7c:	21 75 e4             	and    %esi,-0x1c(%ebp)
457f7f:	52                   	push   %edx
457f80:	57                   	push   %edi
457f81:	8b 08                	mov    (%eax),%ecx
457f83:	50                   	push   %eax
457f84:	ff 51 14             	call   *0x14(%ecx)
457f87:	83 7d e4 05          	cmpl   $0x5,-0x1c(%ebp)
457f8b:	0f 85 b3 00 00 00    	jne    0x458044
457f91:	8b 45 fc             	mov    -0x4(%ebp),%eax
457f94:	8d 55 f8             	lea    -0x8(%ebp),%edx
457f97:	52                   	push   %edx
457f98:	57                   	push   %edi
457f99:	50                   	push   %eax
457f9a:	8b 08                	mov    (%eax),%ecx
457f9c:	ff 51 10             	call   *0x10(%ecx)
457f9f:	8b 45 f8             	mov    -0x8(%ebp),%eax
457fa2:	8d 55 d4             	lea    -0x2c(%ebp),%edx
457fa5:	52                   	push   %edx
457fa6:	50                   	push   %eax
457fa7:	8b 08                	mov    (%eax),%ecx
457fa9:	ff 51 0c             	call   *0xc(%ecx)
457fac:	8b 45 f8             	mov    -0x8(%ebp),%eax
457faf:	8b 55 d4             	mov    -0x2c(%ebp),%edx
457fb2:	52                   	push   %edx
457fb3:	50                   	push   %eax
457fb4:	8b 08                	mov    (%eax),%ecx
457fb6:	0f b7 72 30          	movzwl 0x30(%edx),%esi
457fba:	89 75 dc             	mov    %esi,-0x24(%ebp)
457fbd:	ff 51 4c             	call   *0x4c(%ecx)
457fc0:	83 fe 01             	cmp    $0x1,%esi
457fc3:	76 73                	jbe    0x458038
457fc5:	83 4d ec ff          	orl    $0xffffffff,-0x14(%ebp)
457fc9:	33 f6                	xor    %esi,%esi
457fcb:	39 75 dc             	cmp    %esi,-0x24(%ebp)
457fce:	76 68                	jbe    0x458038
457fd0:	8b 45 f8             	mov    -0x8(%ebp),%eax
457fd3:	8d 55 d0             	lea    -0x30(%ebp),%edx
457fd6:	52                   	push   %edx
457fd7:	56                   	push   %esi
457fd8:	50                   	push   %eax
457fd9:	8b 08                	mov    (%eax),%ecx
457fdb:	ff 51 20             	call   *0x20(%ecx)
457fde:	85 c0                	test   %eax,%eax
457fe0:	75 50                	jne    0x458032
457fe2:	8b 45 f4             	mov    -0xc(%ebp),%eax
457fe5:	8d 55 e8             	lea    -0x18(%ebp),%edx
457fe8:	52                   	push   %edx
457fe9:	ff 75 d0             	push   -0x30(%ebp)
457fec:	8b 08                	mov    (%eax),%ecx
457fee:	50                   	push   %eax
457fef:	ff 51 38             	call   *0x38(%ecx)
457ff2:	83 7d ec ff          	cmpl   $0xffffffff,-0x14(%ebp)
457ff6:	75 0f                	jne    0x458007
457ff8:	8b 45 e8             	mov    -0x18(%ebp),%eax
457ffb:	8d 55 ec             	lea    -0x14(%ebp),%edx
457ffe:	52                   	push   %edx
457fff:	6a 00                	push   $0x0
458001:	50                   	push   %eax
458002:	8b 08                	mov    (%eax),%ecx
458004:	ff 51 48             	call   *0x48(%ecx)
458007:	8b 45 f8             	mov    -0x8(%ebp),%eax
45800a:	8d 55 e0             	lea    -0x20(%ebp),%edx
45800d:	52                   	push   %edx
45800e:	56                   	push   %esi
45800f:	50                   	push   %eax
458010:	8b 08                	mov    (%eax),%ecx
458012:	ff 51 24             	call   *0x24(%ecx)
458015:	8b 45 ec             	mov    -0x14(%ebp),%eax
458018:	3b 45 cc             	cmp    -0x34(%ebp),%eax
45801b:	75 0c                	jne    0x458029
45801d:	f6 45 e0 01          	testb  $0x1,-0x20(%ebp)
458021:	74 06                	je     0x458029
458023:	f6 45 e0 02          	testb  $0x2,-0x20(%ebp)
458027:	75 42                	jne    0x45806b
458029:	8b 45 e8             	mov    -0x18(%ebp),%eax
45802c:	50                   	push   %eax
45802d:	8b 08                	mov    (%eax),%ecx
45802f:	ff 51 08             	call   *0x8(%ecx)
458032:	46                   	inc    %esi
458033:	3b 75 dc             	cmp    -0x24(%ebp),%esi
458036:	72 98                	jb     0x457fd0
458038:	8b 75 f0             	mov    -0x10(%ebp),%esi
45803b:	8b 45 f8             	mov    -0x8(%ebp),%eax
45803e:	50                   	push   %eax
45803f:	8b 08                	mov    (%eax),%ecx
458041:	ff 51 08             	call   *0x8(%ecx)
458044:	47                   	inc    %edi
458045:	3b 7d d8             	cmp    -0x28(%ebp),%edi
458048:	0f 82 20 ff ff ff    	jb     0x457f6e
45804e:	8b 45 fc             	mov    -0x4(%ebp),%eax
458051:	50                   	push   %eax
458052:	8b 08                	mov    (%eax),%ecx
458054:	ff 51 08             	call   *0x8(%ecx)
458057:	8b 45 f4             	mov    -0xc(%ebp),%eax
45805a:	50                   	push   %eax
45805b:	8b 08                	mov    (%eax),%ecx
45805d:	ff 51 08             	call   *0x8(%ecx)
458060:	85 db                	test   %ebx,%ebx
458062:	75 12                	jne    0x458076
458064:	b8 17 80 02 80       	mov    $0x80028017,%eax
458069:	eb 62                	jmp    0x4580cd
45806b:	8b 5d e8             	mov    -0x18(%ebp),%ebx
45806e:	33 f6                	xor    %esi,%esi
458070:	46                   	inc    %esi
458071:	89 75 f0             	mov    %esi,-0x10(%ebp)
458074:	eb c5                	jmp    0x45803b
458076:	8b 03                	mov    (%ebx),%eax
458078:	8d 4d c8             	lea    -0x38(%ebp),%ecx
45807b:	51                   	push   %ecx
45807c:	53                   	push   %ebx
45807d:	ff 50 0c             	call   *0xc(%eax)
458080:	8b 4d c8             	mov    -0x38(%ebp),%ecx
458083:	8d 7d b4             	lea    -0x4c(%ebp),%edi
458086:	8b f1                	mov    %ecx,%esi
458088:	6a 04                	push   $0x4
45808a:	8b 41 28             	mov    0x28(%ecx),%eax
45808d:	a5                   	movsl  %ds:(%esi),%es:(%edi)
45808e:	89 45 dc             	mov    %eax,-0x24(%ebp)
458091:	b8 40 10 00 00       	mov    $0x1040,%eax
458096:	a5                   	movsl  %ds:(%esi),%es:(%edi)
458097:	a5                   	movsl  %ds:(%esi),%es:(%edi)
458098:	a5                   	movsl  %ds:(%esi),%es:(%edi)
458099:	5e                   	pop    %esi
45809a:	66 85 41 36          	test   %ax,0x36(%ecx)
45809e:	74 03                	je     0x4580a3
4580a0:	89 75 dc             	mov    %esi,-0x24(%ebp)
4580a3:	8b 03                	mov    (%ebx),%eax
4580a5:	51                   	push   %ecx
4580a6:	53                   	push   %ebx
4580a7:	ff 50 4c             	call   *0x4c(%eax)
4580aa:	39 75 dc             	cmp    %esi,-0x24(%ebp)
4580ad:	74 0d                	je     0x4580bc
4580af:	8b 03                	mov    (%ebx),%eax
4580b1:	53                   	push   %ebx
4580b2:	ff 50 08             	call   *0x8(%eax)
4580b5:	b8 a0 8c 02 80       	mov    $0x80028ca0,%eax
4580ba:	eb 11                	jmp    0x4580cd
4580bc:	8b 45 08             	mov    0x8(%ebp),%eax
4580bf:	8d 75 b4             	lea    -0x4c(%ebp),%esi
4580c2:	8b 7d 0c             	mov    0xc(%ebp),%edi
4580c5:	89 18                	mov    %ebx,(%eax)
4580c7:	33 c0                	xor    %eax,%eax
4580c9:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4580ca:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4580cb:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4580cc:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4580cd:	5e                   	pop    %esi
4580ce:	5f                   	pop    %edi
4580cf:	5b                   	pop    %ebx
4580d0:	8b e5                	mov    %ebp,%esp
4580d2:	5d                   	pop    %ebp
4580d3:	c3                   	ret
4580d4:	56                   	push   %esi
4580d5:	8b f1                	mov    %ecx,%esi
4580d7:	57                   	push   %edi
4580d8:	8b fa                	mov    %edx,%edi
4580da:	85 f6                	test   %esi,%esi
4580dc:	75 04                	jne    0x4580e2
4580de:	21 0f                	and    %ecx,(%edi)
4580e0:	eb 27                	jmp    0x458109
4580e2:	56                   	push   %esi
4580e3:	e8 54 ad fc ff       	call   0x422e3c
4580e8:	40                   	inc    %eax
4580e9:	59                   	pop    %ecx
4580ea:	03 c0                	add    %eax,%eax
4580ec:	50                   	push   %eax
4580ed:	ff 15 28 f8 48 00    	call   *0x48f828
4580f3:	89 07                	mov    %eax,(%edi)
4580f5:	85 c0                	test   %eax,%eax
4580f7:	75 07                	jne    0x458100
4580f9:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
4580fe:	eb 0b                	jmp    0x45810b
458100:	56                   	push   %esi
458101:	50                   	push   %eax
458102:	e8 f5 ae fc ff       	call   0x422ffc
458107:	59                   	pop    %ecx
458108:	59                   	pop    %ecx
458109:	33 c0                	xor    %eax,%eax
45810b:	5f                   	pop    %edi
45810c:	5e                   	pop    %esi
45810d:	c3                   	ret
45810e:	55                   	push   %ebp
45810f:	8b ec                	mov    %esp,%ebp
458111:	6a 00                	push   $0x0
458113:	6a 00                	push   $0x0
458115:	ff 75 0c             	push   0xc(%ebp)
458118:	ff 75 08             	push   0x8(%ebp)
45811b:	ff 15 44 f3 48 00    	call   *0x48f344
458121:	5d                   	pop    %ebp
458122:	c3                   	ret
458123:	55                   	push   %ebp
458124:	8b ec                	mov    %esp,%ebp
458126:	53                   	push   %ebx
458127:	56                   	push   %esi
458128:	8b 75 08             	mov    0x8(%ebp),%esi
45812b:	8b d9                	mov    %ecx,%ebx
45812d:	57                   	push   %edi
45812e:	8b 7d 0c             	mov    0xc(%ebp),%edi
458131:	8b ce                	mov    %esi,%ecx
458133:	8b 43 04             	mov    0x4(%ebx),%eax
458136:	03 47 04             	add    0x4(%edi),%eax
458139:	50                   	push   %eax
45813a:	e8 37 fa fa ff       	call   0x407b76
45813f:	8b 43 04             	mov    0x4(%ebx),%eax
458142:	03 c0                	add    %eax,%eax
458144:	50                   	push   %eax
458145:	ff 33                	push   (%ebx)
458147:	ff 36                	push   (%esi)
458149:	e8 32 8f fc ff       	call   0x421080
45814e:	8b 47 04             	mov    0x4(%edi),%eax
458151:	8b 53 04             	mov    0x4(%ebx),%edx
458154:	8b 0e                	mov    (%esi),%ecx
458156:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
45815d:	50                   	push   %eax
45815e:	ff 37                	push   (%edi)
458160:	8d 0c 51             	lea    (%ecx,%edx,2),%ecx
458163:	51                   	push   %ecx
458164:	e8 17 8f fc ff       	call   0x421080
458169:	8b 4b 04             	mov    0x4(%ebx),%ecx
45816c:	83 c4 18             	add    $0x18,%esp
45816f:	03 4f 04             	add    0x4(%edi),%ecx
458172:	8b c6                	mov    %esi,%eax
458174:	89 4e 04             	mov    %ecx,0x4(%esi)
458177:	5f                   	pop    %edi
458178:	5e                   	pop    %esi
458179:	5b                   	pop    %ebx
45817a:	5d                   	pop    %ebp
45817b:	c2 08 00             	ret    $0x8
45817e:	55                   	push   %ebp
45817f:	8b ec                	mov    %esp,%ebp
458181:	6a 08                	push   $0x8
458183:	e8 6e 8e fc ff       	call   0x420ff6
458188:	59                   	pop    %ecx
458189:	8b 4d 08             	mov    0x8(%ebp),%ecx