406c83:	8b 70 0c             	mov    0xc(%eax),%esi
406c86:	8b ce                	mov    %esi,%ecx
406c88:	ff 15 28 63 41 00    	call   *0x416328
406c8e:	ff d6                	call   *%esi
406c90:	85 c0                	test   %eax,%eax
406c92:	0f 88 9c 01 00 00    	js     0x406e34
406c98:	8b 45 d8             	mov    -0x28(%ebp),%eax
406c9b:	33 ff                	xor    %edi,%edi
406c9d:	8b f7                	mov    %edi,%esi
406c9f:	89 75 e8             	mov    %esi,-0x18(%ebp)
406ca2:	0f b7 50 2c          	movzwl 0x2c(%eax),%edx
406ca6:	8b 45 e4             	mov    -0x1c(%ebp),%eax
406ca9:	89 55 d4             	mov    %edx,-0x2c(%ebp)
406cac:	89 50 18             	mov    %edx,0x18(%eax)
406caf:	89 78 14             	mov    %edi,0x14(%eax)
406cb2:	85 d2                	test   %edx,%edx
406cb4:	0f 84 94 00 00 00    	je     0x406d4e
406cba:	33 c9                	xor    %ecx,%ecx
406cbc:	89 7d fc             	mov    %edi,-0x4(%ebp)
406cbf:	8b c2                	mov    %edx,%eax
406cc1:	6a 0c                	push   $0xc
406cc3:	5a                   	pop    %edx
406cc4:	f7 e2                	mul    %edx
406cc6:	0f 90 c1             	seto   %cl
406cc9:	f7 d9                	neg    %ecx
406ccb:	0b c8                	or     %eax,%ecx
406ccd:	33 c0                	xor    %eax,%eax
406ccf:	83 c1 04             	add    $0x4,%ecx
406cd2:	0f 92 c0             	setb   %al
406cd5:	f7 d8                	neg    %eax
406cd7:	0b c1                	or     %ecx,%eax
406cd9:	50                   	push   %eax
406cda:	e8 f2 a7 00 00       	call   0x4114d1
406cdf:	59                   	pop    %ecx
406ce0:	89 45 d0             	mov    %eax,-0x30(%ebp)
406ce3:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
406ce7:	85 c0                	test   %eax,%eax
406ce9:	74 20                	je     0x406d0b
406ceb:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
406cee:	8d 70 04             	lea    0x4(%eax),%esi
406cf1:	68 c0 4c 40 00       	push   $0x404cc0
406cf6:	68 00 6b 40 00       	push   $0x406b00
406cfb:	51                   	push   %ecx
406cfc:	6a 0c                	push   $0xc
406cfe:	56                   	push   %esi
406cff:	89 08                	mov    %ecx,(%eax)
406d01:	89 75 e8             	mov    %esi,-0x18(%ebp)
406d04:	e8 07 b7 00 00       	call   0x412410
406d09:	eb 05                	jmp    0x406d10
406d0b:	8b f7                	mov    %edi,%esi
406d0d:	89 7d e8             	mov    %edi,-0x18(%ebp)
406d10:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
406d14:	eb 14                	jmp    0x406d2a
406d16:	b8 1c 6d 40 00       	mov    $0x406d1c,%eax
406d1b:	c3                   	ret
406d1c:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
406d20:	33 ff                	xor    %edi,%edi
406d22:	8b 5d 08             	mov    0x8(%ebp),%ebx
406d25:	8b f7                	mov    %edi,%esi
406d27:	89 75 e8             	mov    %esi,-0x18(%ebp)
406d2a:	85 f6                	test   %esi,%esi
406d2c:	75 1d                	jne    0x406d4b
406d2e:	8b 03                	mov    (%ebx),%eax
406d30:	ff 75 d8             	push   -0x28(%ebp)
406d33:	53                   	push   %ebx
406d34:	8b 70 4c             	mov    0x4c(%eax),%esi
406d37:	8b ce                	mov    %esi,%ecx
406d39:	ff 15 28 63 41 00    	call   *0x416328
406d3f:	ff d6                	call   *%esi
406d41:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
406d46:	e9 eb 00 00 00       	jmp    0x406e36
406d4b:	8b 45 e4             	mov    -0x1c(%ebp),%eax
406d4e:	8b d7                	mov    %edi,%edx
406d50:	89 55 d4             	mov    %edx,-0x2c(%ebp)
406d53:	39 78 18             	cmp    %edi,0x18(%eax)
406d56:	0f 8e bc 00 00 00    	jle    0x406e18
406d5c:	8d 4e 08             	lea    0x8(%esi),%ecx
406d5f:	89 4d dc             	mov    %ecx,-0x24(%ebp)
406d62:	89 79 fc             	mov    %edi,-0x4(%ecx)
406d65:	8d 45 e0             	lea    -0x20(%ebp),%eax
406d68:	89 39                	mov    %edi,(%ecx)
406d6a:	8b 33                	mov    (%ebx),%esi
406d6c:	50                   	push   %eax
406d6d:	52                   	push   %edx
406d6e:	53                   	push   %ebx
406d6f:	8b 4e 14             	mov    0x14(%esi),%ecx
406d72:	ff 15 28 63 41 00    	call   *0x416328
406d78:	ff 56 14             	call   *0x14(%esi)
406d7b:	85 c0                	test   %eax,%eax
406d7d:	78 7d                	js     0x406dfc
406d7f:	89 7d ec             	mov    %edi,-0x14(%ebp)
406d82:	57                   	push   %edi
406d83:	57                   	push   %edi
406d84:	57                   	push   %edi
406d85:	c7 45 fc 03 00 00 00 	movl   $0x3,-0x4(%ebp)
406d8c:	8d 45 ec             	lea    -0x14(%ebp),%eax
406d8f:	8b 33                	mov    (%ebx),%esi
406d91:	50                   	push   %eax
406d92:	8b 45 e0             	mov    -0x20(%ebp),%eax
406d95:	8b 4e 30             	mov    0x30(%esi),%ecx
406d98:	ff 30                	push   (%eax)
406d9a:	53                   	push   %ebx
406d9b:	ff 15 28 63 41 00    	call   *0x416328
406da1:	ff 56 30             	call   *0x30(%esi)
406da4:	85 c0                	test   %eax,%eax
406da6:	78 33                	js     0x406ddb
406da8:	8b 75 dc             	mov    -0x24(%ebp),%esi
406dab:	8b 4d ec             	mov    -0x14(%ebp),%ecx
406dae:	89 4d d0             	mov    %ecx,-0x30(%ebp)
406db1:	89 7d ec             	mov    %edi,-0x14(%ebp)
406db4:	8b 46 f8             	mov    -0x8(%esi),%eax
406db7:	3b c1                	cmp    %ecx,%eax
406db9:	74 0d                	je     0x406dc8
406dbb:	50                   	push   %eax
406dbc:	ff 15 b8 61 41 00    	call   *0x4161b8
406dc2:	8b 45 d0             	mov    -0x30(%ebp),%eax
406dc5:	89 46 f8             	mov    %eax,-0x8(%esi)
406dc8:	50                   	push   %eax
406dc9:	ff 15 7c 61 41 00    	call   *0x41617c
406dcf:	8b 4d e0             	mov    -0x20(%ebp),%ecx
406dd2:	89 46 fc             	mov    %eax,-0x4(%esi)
406dd5:	8b 01                	mov    (%ecx),%eax
406dd7:	89 06                	mov    %eax,(%esi)
406dd9:	eb 03                	jmp    0x406dde
406ddb:	8b 4d e0             	mov    -0x20(%ebp),%ecx
406dde:	8b 03                	mov    (%ebx),%eax
406de0:	51                   	push   %ecx
406de1:	53                   	push   %ebx
406de2:	8b 70 50             	mov    0x50(%eax),%esi
406de5:	8b ce                	mov    %esi,%ecx
406de7:	ff 15 28 63 41 00    	call   *0x416328
406ded:	ff d6                	call   *%esi
406def:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
406df3:	ff 75 ec             	push   -0x14(%ebp)
406df6:	ff 15 b8 61 41 00    	call   *0x4161b8
406dfc:	8b 55 d4             	mov    -0x2c(%ebp),%edx
406dff:	8b 45 e4             	mov    -0x1c(%ebp),%eax
406e02:	42                   	inc    %edx
406e03:	8b 4d dc             	mov    -0x24(%ebp),%ecx
406e06:	83 c1 0c             	add    $0xc,%ecx
406e09:	89 55 d4             	mov    %edx,-0x2c(%ebp)
406e0c:	89 4d dc             	mov    %ecx,-0x24(%ebp)
406e0f:	3b 50 18             	cmp    0x18(%eax),%edx
406e12:	0f 8c 4a ff ff ff    	jl     0x406d62
406e18:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
406e1b:	8b 45 e8             	mov    -0x18(%ebp),%eax
406e1e:	ff 75 d8             	push   -0x28(%ebp)
406e21:	89 41 14             	mov    %eax,0x14(%ecx)
406e24:	8b 03                	mov    (%ebx),%eax
406e26:	53                   	push   %ebx
406e27:	8b 70 4c             	mov    0x4c(%eax),%esi
406e2a:	8b ce                	mov    %esi,%ecx
406e2c:	ff 15 28 63 41 00    	call   *0x416328
406e32:	ff d6                	call   *%esi
406e34:	33 c0                	xor    %eax,%eax
406e36:	e8 f1 b6 00 00       	call   0x41252c
406e3b:	c2 04 00             	ret    $0x4
406e3e:	cc                   	int3
406e3f:	cc                   	int3
406e40:	6a 00                	push   $0x0
406e42:	b8 98 2c 41 00       	mov    $0x412c98,%eax
406e47:	e8 12 b7 00 00       	call   0x41255e
406e4c:	8b 7d 08             	mov    0x8(%ebp),%edi
406e4f:	85 ff                	test   %edi,%edi
406e51:	74 44                	je     0x406e97
406e53:	8b 4f 0c             	mov    0xc(%edi),%ecx
406e56:	85 c9                	test   %ecx,%ecx
406e58:	74 10                	je     0x406e6a
406e5a:	8b 01                	mov    (%ecx),%eax
406e5c:	51                   	push   %ecx
406e5d:	8b 70 08             	mov    0x8(%eax),%esi
406e60:	8b ce                	mov    %esi,%ecx
406e62:	ff 15 28 63 41 00    	call   *0x416328
406e68:	ff d6                	call   *%esi
406e6a:	83 67 0c 00          	andl   $0x0,0xc(%edi)
406e6e:	8b 47 14             	mov    0x14(%edi),%eax
406e71:	85 c0                	test   %eax,%eax
406e73:	74 1e                	je     0x406e93
406e75:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406e79:	8d 70 fc             	lea    -0x4(%eax),%esi
406e7c:	68 c0 4c 40 00       	push   $0x404cc0
406e81:	ff 36                	push   (%esi)
406e83:	6a 0c                	push   $0xc
406e85:	50                   	push   %eax
406e86:	e8 40 b4 00 00       	call   0x4122cb
406e8b:	56                   	push   %esi
406e8c:	ff 15 c8 62 41 00    	call   *0x4162c8
406e92:	59                   	pop    %ecx
406e93:	83 67 14 00          	andl   $0x0,0x14(%edi)
406e97:	e8 90 b6 00 00       	call   0x41252c
406e9c:	c2 04 00             	ret    $0x4
406e9f:	68 28 02 00 00       	push   $0x228
406ea4:	b8 df 2c 41 00       	mov    $0x412cdf,%eax
406ea9:	e8 e3 b6 00 00       	call   0x412591
406eae:	8b f9                	mov    %ecx,%edi
406eb0:	33 c9                	xor    %ecx,%ecx
406eb2:	39 4f 0c             	cmp    %ecx,0xc(%edi)
406eb5:	74 0c                	je     0x406ec3
406eb7:	39 4f 14             	cmp    %ecx,0x14(%edi)
406eba:	74 07                	je     0x406ec3
406ebc:	33 c0                	xor    %eax,%eax
406ebe:	e9 77 02 00 00       	jmp    0x40713a
406ec3:	8b 35 a4 55 41 00    	mov    0x4155a4,%esi
406ec9:	83 c6 10             	add    $0x10,%esi
406ecc:	89 b5 cc fd ff ff    	mov    %esi,-0x234(%ebp)
406ed2:	56                   	push   %esi
406ed3:	89 4d fc             	mov    %ecx,-0x4(%ebp)
406ed6:	ff 15 64 61 41 00    	call   *0x416164
406edc:	8b 47 0c             	mov    0xc(%edi),%eax
406edf:	bb 05 40 00 80       	mov    $0x80004005,%ebx
406ee4:	c6 85 d0 fd ff ff 01 	movb   $0x1,-0x230(%ebp)
406eeb:	85 c0                	test   %eax,%eax
406eed:	0f 85 28 02 00 00    	jne    0x40711b
406ef3:	21 85 d8 fd ff ff    	and    %eax,-0x228(%ebp)
406ef9:	b9 a8 55 41 00       	mov    $0x4155a8,%ecx
406efe:	8b 57 04             	mov    0x4(%edi),%edx
406f01:	e8 8a dc ff ff       	call   0x404b90
406f06:	85 c0                	test   %eax,%eax
406f08:	74 66                	je     0x406f70
406f0a:	b8 ff ff 00 00       	mov    $0xffff,%eax
406f0f:	66 39 47 08          	cmp    %ax,0x8(%edi)
406f13:	75 5b                	jne    0x406f70
406f15:	66 39 47 0a          	cmp    %ax,0xa(%edi)
406f19:	75 55                	jne    0x406f70
406f1b:	68 04 01 00 00       	push   $0x104
406f20:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
406f26:	50                   	push   %eax
406f27:	ff 35 0c 56 41 00    	push   0x41560c
406f2d:	ff 15 60 61 41 00    	call   *0x416160
406f33:	85 c0                	test   %eax,%eax
406f35:	0f 84 db 01 00 00    	je     0x407116
406f3b:	3d 04 01 00 00       	cmp    $0x104,%eax
406f40:	0f 84 d0 01 00 00    	je     0x407116
406f46:	83 a5 e0 fd ff ff 00 	andl   $0x0,-0x220(%ebp)
406f4d:	8d 85 d8 fd ff ff    	lea    -0x228(%ebp),%eax
406f53:	50                   	push   %eax
406f54:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
406f5a:	50                   	push   %eax
406f5b:	ff 15 b4 61 41 00    	call   *0x4161b4
406f61:	8d 8d e0 fd ff ff    	lea    -0x220(%ebp),%ecx
406f67:	8b d8                	mov    %eax,%ebx
406f69:	e8 4f 08 00 00       	call   0x4077bd
406f6e:	eb 1d                	jmp    0x406f8d
406f70:	8d 85 d8 fd ff ff    	lea    -0x228(%ebp),%eax
406f76:	50                   	push   %eax
406f77:	ff 75 08             	push   0x8(%ebp)
406f7a:	0f b7 47 0a          	movzwl 0xa(%edi),%eax
406f7e:	50                   	push   %eax
406f7f:	0f b7 47 08          	movzwl 0x8(%edi),%eax
406f83:	50                   	push   %eax
406f84:	52                   	push   %edx
406f85:	ff 15 b0 61 41 00    	call   *0x4161b0
406f8b:	8b d8                	mov    %eax,%ebx
406f8d:	85 db                	test   %ebx,%ebx
406f8f:	0f 88 81 01 00 00    	js     0x407116
406f95:	83 a5 e0 fd ff ff 00 	andl   $0x0,-0x220(%ebp)
406f9c:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
406fa0:	8d 8d e0 fd ff ff    	lea    -0x220(%ebp),%ecx
406fa6:	8b 85 d8 fd ff ff    	mov    -0x228(%ebp),%eax
406fac:	51                   	push   %ecx
406fad:	ff 37                	push   (%edi)
406faf:	8b 30                	mov    (%eax),%esi
406fb1:	50                   	push   %eax
406fb2:	8b 4e 18             	mov    0x18(%esi),%ecx
406fb5:	ff 15 28 63 41 00    	call   *0x416328
406fbb:	ff 56 18             	call   *0x18(%esi)
406fbe:	8b d8                	mov    %eax,%ebx
406fc0:	85 db                	test   %ebx,%ebx
406fc2:	0f 88 14 01 00 00    	js     0x4070dc
406fc8:	8b 85 e0 fd ff ff    	mov    -0x220(%ebp),%eax
406fce:	89 85 e4 fd ff ff    	mov    %eax,-0x21c(%ebp)
406fd4:	85 c0                	test   %eax,%eax
406fd6:	74 16                	je     0x406fee
406fd8:	8b 08                	mov    (%eax),%ecx
406fda:	50                   	push   %eax
406fdb:	8b 71 04             	mov    0x4(%ecx),%esi
406fde:	8b ce                	mov    %esi,%ecx
406fe0:	ff 15 28 63 41 00    	call   *0x416328
406fe6:	ff d6                	call   *%esi
406fe8:	8b 85 e0 fd ff ff    	mov    -0x220(%ebp),%eax
406fee:	83 a5 dc fd ff ff 00 	andl   $0x0,-0x224(%ebp)
406ff5:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
406ff9:	8d 8d dc fd ff ff    	lea    -0x224(%ebp),%ecx
406fff:	8b 30                	mov    (%eax),%esi
407001:	51                   	push   %ecx
407002:	68 38 2b 40 00       	push   $0x402b38
407007:	50                   	push   %eax
407008:	8b 0e                	mov    (%esi),%ecx
40700a:	ff 15 28 63 41 00    	call   *0x416328
407010:	ff 16                	call   *(%esi)
407012:	85 c0                	test   %eax,%eax
407014:	78 65                	js     0x40707b
407016:	ff b5 dc fd ff ff    	push   -0x224(%ebp)
40701c:	8d 8d e4 fd ff ff    	lea    -0x21c(%ebp),%ecx
407022:	e8 2d 1c 00 00       	call   0x408c54
407027:	84 c0                	test   %al,%al
407029:	75 50                	jne    0x40707b
40702b:	8b 8d e4 fd ff ff    	mov    -0x21c(%ebp),%ecx
407031:	83 a5 e4 fd ff ff 00 	andl   $0x0,-0x21c(%ebp)
407038:	8b 85 dc fd ff ff    	mov    -0x224(%ebp),%eax
40703e:	89 8d d4 fd ff ff    	mov    %ecx,-0x22c(%ebp)
407044:	85 c0                	test   %eax,%eax
407046:	74 1f                	je     0x407067
407048:	8b 30                	mov    (%eax),%esi
40704a:	8d 8d e4 fd ff ff    	lea    -0x21c(%ebp),%ecx
407050:	51                   	push   %ecx
407051:	68 18 2b 40 00       	push   $0x402b18
407056:	50                   	push   %eax
407057:	8b 0e                	mov    (%esi),%ecx
407059:	ff 15 28 63 41 00    	call   *0x416328
40705f:	ff 16                	call   *(%esi)
407061:	8b 8d d4 fd ff ff    	mov    -0x22c(%ebp),%ecx
407067:	85 c9                	test   %ecx,%ecx
407069:	74 10                	je     0x40707b
40706b:	8b 01                	mov    (%ecx),%eax
40706d:	51                   	push   %ecx
40706e:	8b 70 08             	mov    0x8(%eax),%esi
407071:	8b ce                	mov    %esi,%ecx
407073:	ff 15 28 63 41 00    	call   *0x416328
407079:	ff d6                	call   *%esi
40707b:	8b 0d a4 55 41 00    	mov    0x4155a4,%ecx
407081:	8b 85 e4 fd ff ff    	mov    -0x21c(%ebp),%eax
407087:	83 a5 e4 fd ff ff 00 	andl   $0x0,-0x21c(%ebp)
40708e:	89 47 0c             	mov    %eax,0xc(%edi)
407091:	8d 41 04             	lea    0x4(%ecx),%eax
407094:	f7 d9                	neg    %ecx
407096:	57                   	push   %edi
407097:	1b c9                	sbb    %ecx,%ecx
407099:	23 c8                	and    %eax,%ecx
40709b:	e8 d1 f8 ff ff       	call   0x406971
4070a0:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
4070a4:	8b 85 dc fd ff ff    	mov    -0x224(%ebp),%eax
4070aa:	85 c0                	test   %eax,%eax
4070ac:	74 10                	je     0x4070be
4070ae:	8b 08                	mov    (%eax),%ecx
4070b0:	50                   	push   %eax
4070b1:	8b 71 08             	mov    0x8(%ecx),%esi
4070b4:	8b ce                	mov    %esi,%ecx
4070b6:	ff 15 28 63 41 00    	call   *0x416328
4070bc:	ff d6                	call   *%esi
4070be:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
4070c2:	8b 85 e4 fd ff ff    	mov    -0x21c(%ebp),%eax
4070c8:	85 c0                	test   %eax,%eax
4070ca:	74 10                	je     0x4070dc
4070cc:	8b 08                	mov    (%eax),%ecx
4070ce:	50                   	push   %eax
4070cf:	8b 71 08             	mov    0x8(%ecx),%esi
4070d2:	8b ce                	mov    %esi,%ecx
4070d4:	ff 15 28 63 41 00    	call   *0x416328
4070da:	ff d6                	call   *%esi