402d74:	01 06                	add    %eax,(%esi)
402d76:	f6 c3 02             	test   $0x2,%bl
402d79:	0f 84 a5 00 00 00    	je     0x402e24
402d7f:	8b 79 24             	mov    0x24(%ecx),%edi
402d82:	8b 07                	mov    (%edi),%eax
402d84:	85 c0                	test   %eax,%eax
402d86:	0f 84 98 00 00 00    	je     0x402e24
402d8c:	8b 59 34             	mov    0x34(%ecx),%ebx
402d8f:	8b 71 20             	mov    0x20(%ecx),%esi
402d92:	8b 1b                	mov    (%ebx),%ebx
402d94:	8b 36                	mov    (%esi),%esi
402d96:	8d 04 58             	lea    (%eax,%ebx,2),%eax
402d99:	89 37                	mov    %esi,(%edi)
402d9b:	8b 49 34             	mov    0x34(%ecx),%ecx
402d9e:	2b c6                	sub    %esi,%eax
402da0:	d1 f8                	sar    $1,%eax
402da2:	89 01                	mov    %eax,(%ecx)
402da4:	eb 7e                	jmp    0x402e24
402da6:	f6 c3 02             	test   $0x2,%bl
402da9:	74 73                	je     0x402e1e
402dab:	8b 32                	mov    (%edx),%esi
402dad:	85 f6                	test   %esi,%esi
402daf:	74 6d                	je     0x402e1e
402db1:	8b 44 24 18          	mov    0x18(%esp),%eax
402db5:	8b 3d 00 a2 41 00    	mov    0x41a200,%edi
402dbb:	83 f8 02             	cmp    $0x2,%eax
402dbe:	75 12                	jne    0x402dd2
402dc0:	8b 51 10             	mov    0x10(%ecx),%edx
402dc3:	8b 41 3c             	mov    0x3c(%ecx),%eax
402dc6:	2b 02                	sub    (%edx),%eax
402dc8:	8b 54 24 14          	mov    0x14(%esp),%edx
402dcc:	d1 f8                	sar    $1,%eax
402dce:	03 d0                	add    %eax,%edx
402dd0:	eb 20                	jmp    0x402df2
402dd2:	83 f8 01             	cmp    $0x1,%eax
402dd5:	75 11                	jne    0x402de8
402dd7:	8b 51 10             	mov    0x10(%ecx),%edx
402dda:	8b c6                	mov    %esi,%eax
402ddc:	2b 02                	sub    (%edx),%eax
402dde:	8b 54 24 14          	mov    0x14(%esp),%edx
402de2:	d1 f8                	sar    $1,%eax
402de4:	03 d0                	add    %eax,%edx
402de6:	eb 0a                	jmp    0x402df2
402de8:	8b d7                	mov    %edi,%edx
402dea:	85 c0                	test   %eax,%eax
402dec:	75 04                	jne    0x402df2
402dee:	8b 54 24 14          	mov    0x14(%esp),%edx
402df2:	85 d2                	test   %edx,%edx
402df4:	7c 24                	jl     0x402e1a
402df6:	8b 41 10             	mov    0x10(%ecx),%eax
402df9:	8b 00                	mov    (%eax),%eax
402dfb:	8b 59 3c             	mov    0x3c(%ecx),%ebx
402dfe:	2b d8                	sub    %eax,%ebx
402e00:	d1 fb                	sar    $1,%ebx
402e02:	3b d3                	cmp    %ebx,%edx
402e04:	7f 14                	jg     0x402e1a
402e06:	2b c6                	sub    %esi,%eax
402e08:	8b 71 34             	mov    0x34(%ecx),%esi
402e0b:	d1 f8                	sar    $1,%eax
402e0d:	03 c2                	add    %edx,%eax
402e0f:	29 06                	sub    %eax,(%esi)
402e11:	8b 49 24             	mov    0x24(%ecx),%ecx
402e14:	03 c0                	add    %eax,%eax
402e16:	01 01                	add    %eax,(%ecx)
402e18:	eb 0a                	jmp    0x402e24
402e1a:	8b d7                	mov    %edi,%edx
402e1c:	eb 06                	jmp    0x402e24
402e1e:	8b 15 00 a2 41 00    	mov    0x41a200,%edx
402e24:	8b 44 24 10          	mov    0x10(%esp),%eax
402e28:	5f                   	pop    %edi
402e29:	33 c9                	xor    %ecx,%ecx
402e2b:	5e                   	pop    %esi
402e2c:	89 10                	mov    %edx,(%eax)
402e2e:	89 48 08             	mov    %ecx,0x8(%eax)
402e31:	89 48 0c             	mov    %ecx,0xc(%eax)
402e34:	89 48 10             	mov    %ecx,0x10(%eax)
402e37:	5b                   	pop    %ebx
402e38:	c2 10 00             	ret    $0x10
402e3b:	cc                   	int3
402e3c:	cc                   	int3
402e3d:	cc                   	int3
402e3e:	cc                   	int3
402e3f:	cc                   	int3
402e40:	8b 44 24 08          	mov    0x8(%esp),%eax
402e44:	8b 54 24 10          	mov    0x10(%esp),%edx
402e48:	55                   	push   %ebp
402e49:	57                   	push   %edi
402e4a:	8b 79 24             	mov    0x24(%ecx),%edi
402e4d:	03 d0                	add    %eax,%edx
402e4f:	8b 07                	mov    (%edi),%eax
402e51:	85 c0                	test   %eax,%eax
402e53:	74 08                	je     0x402e5d
402e55:	39 41 3c             	cmp    %eax,0x3c(%ecx)
402e58:	73 03                	jae    0x402e5d
402e5a:	89 41 3c             	mov    %eax,0x3c(%ecx)
402e5d:	8b 2d 00 a2 41 00    	mov    0x41a200,%ebp
402e63:	3b d5                	cmp    %ebp,%edx
402e65:	0f 84 99 00 00 00    	je     0x402f04
402e6b:	53                   	push   %ebx
402e6c:	8a 5c 24 2c          	mov    0x2c(%esp),%bl
402e70:	56                   	push   %esi
402e71:	f6 c3 01             	test   $0x1,%bl
402e74:	74 57                	je     0x402ecd
402e76:	8b 41 20             	mov    0x20(%ecx),%eax
402e79:	8b 30                	mov    (%eax),%esi
402e7b:	85 f6                	test   %esi,%esi
402e7d:	74 4e                	je     0x402ecd
402e7f:	85 d2                	test   %edx,%edx
402e81:	7c 7d                	jl     0x402f00
402e83:	8b 41 10             	mov    0x10(%ecx),%eax
402e86:	8b 00                	mov    (%eax),%eax
402e88:	8b 79 3c             	mov    0x3c(%ecx),%edi
402e8b:	2b f8                	sub    %eax,%edi
402e8d:	d1 ff                	sar    $1,%edi
402e8f:	3b d7                	cmp    %edi,%edx
402e91:	7f 6d                	jg     0x402f00
402e93:	2b c6                	sub    %esi,%eax
402e95:	8b 71 30             	mov    0x30(%ecx),%esi
402e98:	d1 f8                	sar    $1,%eax
402e9a:	03 c2                	add    %edx,%eax
402e9c:	29 06                	sub    %eax,(%esi)
402e9e:	8b 71 20             	mov    0x20(%ecx),%esi
402ea1:	03 c0                	add    %eax,%eax
402ea3:	01 06                	add    %eax,(%esi)
402ea5:	f6 c3 02             	test   $0x2,%bl
402ea8:	74 58                	je     0x402f02
402eaa:	8b 79 24             	mov    0x24(%ecx),%edi
402ead:	8b 07                	mov    (%edi),%eax
402eaf:	85 c0                	test   %eax,%eax
402eb1:	74 4f                	je     0x402f02
402eb3:	8b 59 34             	mov    0x34(%ecx),%ebx
402eb6:	8b 71 20             	mov    0x20(%ecx),%esi
402eb9:	8b 1b                	mov    (%ebx),%ebx
402ebb:	8b 36                	mov    (%esi),%esi
402ebd:	8d 04 58             	lea    (%eax,%ebx,2),%eax
402ec0:	89 37                	mov    %esi,(%edi)
402ec2:	8b 49 34             	mov    0x34(%ecx),%ecx
402ec5:	2b c6                	sub    %esi,%eax
402ec7:	d1 f8                	sar    $1,%eax
402ec9:	89 01                	mov    %eax,(%ecx)
402ecb:	eb 35                	jmp    0x402f02
402ecd:	f6 c3 02             	test   $0x2,%bl
402ed0:	74 2e                	je     0x402f00
402ed2:	8b 3f                	mov    (%edi),%edi
402ed4:	85 ff                	test   %edi,%edi
402ed6:	74 28                	je     0x402f00
402ed8:	85 d2                	test   %edx,%edx
402eda:	7c 24                	jl     0x402f00
402edc:	8b 41 10             	mov    0x10(%ecx),%eax
402edf:	8b 00                	mov    (%eax),%eax
402ee1:	8b 71 3c             	mov    0x3c(%ecx),%esi
402ee4:	2b f0                	sub    %eax,%esi
402ee6:	d1 fe                	sar    $1,%esi
402ee8:	3b d6                	cmp    %esi,%edx
402eea:	7f 14                	jg     0x402f00
402eec:	8b 71 34             	mov    0x34(%ecx),%esi
402eef:	2b c7                	sub    %edi,%eax
402ef1:	d1 f8                	sar    $1,%eax
402ef3:	03 c2                	add    %edx,%eax
402ef5:	29 06                	sub    %eax,(%esi)
402ef7:	8b 49 24             	mov    0x24(%ecx),%ecx
402efa:	03 c0                	add    %eax,%eax
402efc:	01 01                	add    %eax,(%ecx)
402efe:	eb 02                	jmp    0x402f02
402f00:	8b d5                	mov    %ebp,%edx
402f02:	5e                   	pop    %esi
402f03:	5b                   	pop    %ebx
402f04:	8b 44 24 0c          	mov    0xc(%esp),%eax
402f08:	33 c9                	xor    %ecx,%ecx
402f0a:	5f                   	pop    %edi
402f0b:	89 10                	mov    %edx,(%eax)
402f0d:	89 48 08             	mov    %ecx,0x8(%eax)
402f10:	89 48 0c             	mov    %ecx,0xc(%eax)
402f13:	89 48 10             	mov    %ecx,0x10(%eax)
402f16:	5d                   	pop    %ebp
402f17:	c2 20 00             	ret    $0x20
402f1a:	cc                   	int3
402f1b:	cc                   	int3
402f1c:	cc                   	int3
402f1d:	cc                   	int3
402f1e:	cc                   	int3
402f1f:	cc                   	int3
402f20:	56                   	push   %esi
402f21:	8d 71 fc             	lea    -0x4(%ecx),%esi
402f24:	8b 0e                	mov    (%esi),%ecx
402f26:	8b 51 04             	mov    0x4(%ecx),%edx
402f29:	8d 46 04             	lea    0x4(%esi),%eax
402f2c:	c7 44 02 fc 90 8a 42 	movl   $0x428a90,-0x4(%edx,%eax,1)
402f33:	00
402f34:	50                   	push   %eax
402f35:	c7 00 3c 8a 42 00    	movl   $0x428a3c,(%eax)
402f3b:	e8 d3 13 00 00       	call   0x404313
402f40:	83 c4 04             	add    $0x4,%esp
402f43:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
402f48:	74 09                	je     0x402f53
402f4a:	56                   	push   %esi
402f4b:	e8 e6 23 00 00       	call   0x405336
402f50:	83 c4 04             	add    $0x4,%esp
402f53:	8b c6                	mov    %esi,%eax
402f55:	5e                   	pop    %esi
402f56:	c2 04 00             	ret    $0x4
402f59:	cc                   	int3
402f5a:	cc                   	int3
402f5b:	cc                   	int3
402f5c:	cc                   	int3
402f5d:	cc                   	int3
402f5e:	cc                   	int3
402f5f:	cc                   	int3
402f60:	56                   	push   %esi
402f61:	8b f1                	mov    %ecx,%esi
402f63:	56                   	push   %esi
402f64:	c7 06 3c 8a 42 00    	movl   $0x428a3c,(%esi)
402f6a:	e8 a4 13 00 00       	call   0x404313
402f6f:	83 c4 04             	add    $0x4,%esp
402f72:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
402f77:	74 09                	je     0x402f82
402f79:	56                   	push   %esi
402f7a:	e8 b7 23 00 00       	call   0x405336
402f7f:	83 c4 04             	add    $0x4,%esp
402f82:	8b c6                	mov    %esi,%eax
402f84:	5e                   	pop    %esi
402f85:	c2 04 00             	ret    $0x4
402f88:	cc                   	int3
402f89:	cc                   	int3
402f8a:	cc                   	int3
402f8b:	cc                   	int3
402f8c:	cc                   	int3
402f8d:	cc                   	int3
402f8e:	cc                   	int3
402f8f:	cc                   	int3
402f90:	51                   	push   %ecx
402f91:	53                   	push   %ebx
402f92:	8b d9                	mov    %ecx,%ebx
402f94:	57                   	push   %edi
402f95:	8b 3b                	mov    (%ebx),%edi
402f97:	85 ff                	test   %edi,%edi
402f99:	74 3f                	je     0x402fda
402f9b:	6a 00                	push   $0x0
402f9d:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
402fa1:	e8 68 17 00 00       	call   0x40470e
402fa6:	8b 47 04             	mov    0x4(%edi),%eax
402fa9:	85 c0                	test   %eax,%eax
402fab:	76 09                	jbe    0x402fb6
402fad:	83 f8 ff             	cmp    $0xffffffff,%eax
402fb0:	73 04                	jae    0x402fb6
402fb2:	48                   	dec    %eax
402fb3:	89 47 04             	mov    %eax,0x4(%edi)
402fb6:	56                   	push   %esi
402fb7:	8b 77 04             	mov    0x4(%edi),%esi
402fba:	f7 de                	neg    %esi
402fbc:	1b f6                	sbb    %esi,%esi
402fbe:	f7 d6                	not    %esi
402fc0:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
402fc4:	23 f7                	and    %edi,%esi
402fc6:	e8 6b 17 00 00       	call   0x404736
402fcb:	85 f6                	test   %esi,%esi
402fcd:	74 0a                	je     0x402fd9
402fcf:	8b 06                	mov    (%esi),%eax
402fd1:	8b 10                	mov    (%eax),%edx
402fd3:	6a 01                	push   $0x1
402fd5:	8b ce                	mov    %esi,%ecx
402fd7:	ff d2                	call   *%edx
402fd9:	5e                   	pop    %esi
402fda:	f6 44 24 10 01       	testb  $0x1,0x10(%esp)
402fdf:	74 09                	je     0x402fea
402fe1:	53                   	push   %ebx
402fe2:	e8 4f 23 00 00       	call   0x405336
402fe7:	83 c4 04             	add    $0x4,%esp
402fea:	5f                   	pop    %edi
402feb:	8b c3                	mov    %ebx,%eax
402fed:	5b                   	pop    %ebx
402fee:	59                   	pop    %ecx
402fef:	c2 04 00             	ret    $0x4
402ff2:	cc                   	int3
402ff3:	cc                   	int3
402ff4:	cc                   	int3
402ff5:	cc                   	int3
402ff6:	cc                   	int3
402ff7:	cc                   	int3
402ff8:	cc                   	int3
402ff9:	cc                   	int3
402ffa:	cc                   	int3
402ffb:	cc                   	int3
402ffc:	cc                   	int3
402ffd:	cc                   	int3
402ffe:	cc                   	int3
402fff:	cc                   	int3
403000:	56                   	push   %esi
403001:	8d 71 f8             	lea    -0x8(%ecx),%esi
403004:	8b 0e                	mov    (%esi),%ecx
403006:	8b 51 04             	mov    0x4(%ecx),%edx
403009:	8d 46 08             	lea    0x8(%esi),%eax
40300c:	c7 44 02 f8 88 8a 42 	movl   $0x428a88,-0x8(%edx,%eax,1)
403013:	00
403014:	50                   	push   %eax
403015:	c7 00 3c 8a 42 00    	movl   $0x428a3c,(%eax)
40301b:	e8 f3 12 00 00       	call   0x404313
403020:	83 c4 04             	add    $0x4,%esp
403023:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
403028:	74 09                	je     0x403033
40302a:	56                   	push   %esi
40302b:	e8 06 23 00 00       	call   0x405336
403030:	83 c4 04             	add    $0x4,%esp
403033:	8b c6                	mov    %esi,%eax
403035:	5e                   	pop    %esi
403036:	c2 04 00             	ret    $0x4
403039:	cc                   	int3
40303a:	cc                   	int3
40303b:	cc                   	int3
40303c:	cc                   	int3
40303d:	cc                   	int3
40303e:	cc                   	int3
40303f:	cc                   	int3
403040:	56                   	push   %esi
403041:	8b f1                	mov    %ecx,%esi
403043:	e8 28 f4 ff ff       	call   0x402470
403048:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
40304d:	74 09                	je     0x403058
40304f:	56                   	push   %esi
403050:	e8 e1 22 00 00       	call   0x405336
403055:	83 c4 04             	add    $0x4,%esp
403058:	8b c6                	mov    %esi,%eax
40305a:	5e                   	pop    %esi
40305b:	c2 04 00             	ret    $0x4
40305e:	cc                   	int3
40305f:	cc                   	int3
403060:	8b 08                	mov    (%eax),%ecx
403062:	51                   	push   %ecx
403063:	e8 ce 22 00 00       	call   0x405336
403068:	59                   	pop    %ecx
403069:	c3                   	ret
40306a:	cc                   	int3
40306b:	cc                   	int3
40306c:	cc                   	int3
40306d:	cc                   	int3
40306e:	cc                   	int3
40306f:	cc                   	int3
403070:	56                   	push   %esi
403071:	57                   	push   %edi
403072:	8d 79 ac             	lea    -0x54(%ecx),%edi
403075:	8d 77 54             	lea    0x54(%edi),%esi
403078:	8b ce                	mov    %esi,%ecx
40307a:	e8 61 f8 ff ff       	call   0x4028e0
40307f:	56                   	push   %esi
403080:	c7 06 3c 8a 42 00    	movl   $0x428a3c,(%esi)
403086:	e8 88 12 00 00       	call   0x404313
40308b:	83 c4 04             	add    $0x4,%esp
40308e:	f6 44 24 0c 01       	testb  $0x1,0xc(%esp)
403093:	74 09                	je     0x40309e
403095:	57                   	push   %edi