407eaa:	8d 41 23             	lea    0x23(%ecx),%eax
407ead:	83 e0 e0             	and    $0xffffffe0,%eax
407eb0:	89 48 fc             	mov    %ecx,-0x4(%eax)
407eb3:	c3                   	ret
407eb4:	ff 25 44 e1 40 00    	jmp    *0x40e144
407eba:	85 c9                	test   %ecx,%ecx
407ebc:	74 08                	je     0x407ec6
407ebe:	51                   	push   %ecx
407ebf:	e8 32 2b 00 00       	call   0x40a9f6
407ec4:	59                   	pop    %ecx
407ec5:	c3                   	ret
407ec6:	33 c0                	xor    %eax,%eax
407ec8:	c3                   	ret
407ec9:	cc                   	int3
407eca:	cc                   	int3
407ecb:	cc                   	int3
407ecc:	cc                   	int3
407ecd:	cc                   	int3
407ece:	cc                   	int3
407ecf:	cc                   	int3
407ed0:	8b ff                	mov    %edi,%edi
407ed2:	57                   	push   %edi
407ed3:	8b f9                	mov    %ecx,%edi
407ed5:	85 ff                	test   %edi,%edi
407ed7:	74 15                	je     0x407eee
407ed9:	8b 07                	mov    (%edi),%eax
407edb:	56                   	push   %esi
407edc:	6a 01                	push   $0x1
407ede:	8b 70 08             	mov    0x8(%eax),%esi
407ee1:	8b ce                	mov    %esi,%ecx
407ee3:	ff 15 f0 e1 40 00    	call   *0x40e1f0
407ee9:	8b cf                	mov    %edi,%ecx
407eeb:	ff d6                	call   *%esi
407eed:	5e                   	pop    %esi
407eee:	5f                   	pop    %edi
407eef:	c3                   	ret
407ef0:	83 c1 0c             	add    $0xc,%ecx
407ef3:	e9 01 05 00 00       	jmp    0x4083f9
407ef8:	68 98 1e 40 00       	push   $0x401e98
407efd:	ff 15 d4 e1 40 00    	call   *0x40e1d4
407f03:	cc                   	int3
407f04:	8b ff                	mov    %edi,%edi
407f06:	55                   	push   %ebp
407f07:	8b ec                	mov    %esp,%ebp
407f09:	56                   	push   %esi
407f0a:	57                   	push   %edi
407f0b:	8b f9                	mov    %ecx,%edi
407f0d:	8b 37                	mov    (%edi),%esi
407f0f:	85 f6                	test   %esi,%esi
407f11:	74 28                	je     0x407f3b
407f13:	53                   	push   %ebx
407f14:	8b 5f 04             	mov    0x4(%edi),%ebx
407f17:	3b f3                	cmp    %ebx,%esi
407f19:	74 10                	je     0x407f2b
407f1b:	8b ce                	mov    %esi,%ecx
407f1d:	e8 a6 cd ff ff       	call   0x404cc8
407f22:	83 c6 08             	add    $0x8,%esi
407f25:	3b f3                	cmp    %ebx,%esi
407f27:	75 f2                	jne    0x407f1b
407f29:	8b 37                	mov    (%edi),%esi
407f2b:	8b 57 08             	mov    0x8(%edi),%edx
407f2e:	8b ce                	mov    %esi,%ecx
407f30:	2b d6                	sub    %esi,%edx
407f32:	83 e2 f8             	and    $0xfffffff8,%edx
407f35:	e8 61 cd ff ff       	call   0x404c9b
407f3a:	5b                   	pop    %ebx
407f3b:	8b 4d 08             	mov    0x8(%ebp),%ecx
407f3e:	8b 45 0c             	mov    0xc(%ebp),%eax
407f41:	89 0f                	mov    %ecx,(%edi)
407f43:	8d 04 c1             	lea    (%ecx,%eax,8),%eax
407f46:	89 47 04             	mov    %eax,0x4(%edi)
407f49:	8b 45 10             	mov    0x10(%ebp),%eax
407f4c:	8d 04 c1             	lea    (%ecx,%eax,8),%eax
407f4f:	89 47 08             	mov    %eax,0x8(%edi)
407f52:	5f                   	pop    %edi
407f53:	5e                   	pop    %esi
407f54:	5d                   	pop    %ebp
407f55:	c2 0c 00             	ret    $0xc
407f58:	8b ff                	mov    %edi,%edi
407f5a:	55                   	push   %ebp
407f5b:	8b ec                	mov    %esp,%ebp
407f5d:	8b 51 08             	mov    0x8(%ecx),%edx
407f60:	b8 ff ff ff 1f       	mov    $0x1fffffff,%eax
407f65:	2b 11                	sub    (%ecx),%edx
407f67:	c1 fa 03             	sar    $0x3,%edx
407f6a:	8b ca                	mov    %edx,%ecx
407f6c:	d1 e9                	shr    $1,%ecx
407f6e:	2b c1                	sub    %ecx,%eax
407f70:	3b d0                	cmp    %eax,%edx
407f72:	77 08                	ja     0x407f7c
407f74:	8d 04 11             	lea    (%ecx,%edx,1),%eax
407f77:	3b 45 08             	cmp    0x8(%ebp),%eax
407f7a:	73 03                	jae    0x407f7f
407f7c:	8b 45 08             	mov    0x8(%ebp),%eax
407f7f:	5d                   	pop    %ebp
407f80:	c2 04 00             	ret    $0x4
407f83:	8b ff                	mov    %edi,%edi
407f85:	55                   	push   %ebp
407f86:	8b ec                	mov    %esp,%ebp
407f88:	51                   	push   %ecx
407f89:	51                   	push   %ecx
407f8a:	81 7d 08 ff ff ff 1f 	cmpl   $0x1fffffff,0x8(%ebp)
407f91:	56                   	push   %esi
407f92:	8b f1                	mov    %ecx,%esi
407f94:	77 66                	ja     0x407ffc
407f96:	53                   	push   %ebx
407f97:	8b 5e 04             	mov    0x4(%esi),%ebx
407f9a:	2b 1e                	sub    (%esi),%ebx
407f9c:	ff 75 08             	push   0x8(%ebp)
407f9f:	c1 fb 03             	sar    $0x3,%ebx
407fa2:	e8 b1 ff ff ff       	call   0x407f58
407fa7:	8b c8                	mov    %eax,%ecx
407fa9:	89 45 fc             	mov    %eax,-0x4(%ebp)
407fac:	c1 e1 03             	shl    $0x3,%ecx
407faf:	3d ff ff ff 1f       	cmp    $0x1fffffff,%eax
407fb4:	76 03                	jbe    0x407fb9
407fb6:	83 c9 ff             	or     $0xffffffff,%ecx
407fb9:	e8 cd fe ff ff       	call   0x407e8b
407fbe:	8b 55 08             	mov    0x8(%ebp),%edx
407fc1:	2b d3                	sub    %ebx,%edx
407fc3:	89 45 f8             	mov    %eax,-0x8(%ebp)
407fc6:	8d 0c d8             	lea    (%eax,%ebx,8),%ecx
407fc9:	5b                   	pop    %ebx
407fca:	74 0f                	je     0x407fdb
407fcc:	83 21 00             	andl   $0x0,(%ecx)
407fcf:	83 61 04 00          	andl   $0x0,0x4(%ecx)
407fd3:	83 c1 08             	add    $0x8,%ecx
407fd6:	83 ea 01             	sub    $0x1,%edx
407fd9:	75 f1                	jne    0x407fcc
407fdb:	8b 56 04             	mov    0x4(%esi),%edx
407fde:	51                   	push   %ecx
407fdf:	8b 0e                	mov    (%esi),%ecx
407fe1:	50                   	push   %eax
407fe2:	e8 1b 00 00 00       	call   0x408002
407fe7:	ff 75 fc             	push   -0x4(%ebp)
407fea:	8b ce                	mov    %esi,%ecx
407fec:	ff 75 08             	push   0x8(%ebp)
407fef:	ff 75 f8             	push   -0x8(%ebp)
407ff2:	e8 0d ff ff ff       	call   0x407f04
407ff7:	5e                   	pop    %esi
407ff8:	c9                   	leave
407ff9:	c2 08 00             	ret    $0x8
407ffc:	e8 f7 fe ff ff       	call   0x407ef8
408001:	cc                   	int3
408002:	8b ff                	mov    %edi,%edi
408004:	55                   	push   %ebp
408005:	8b ec                	mov    %esp,%ebp
408007:	56                   	push   %esi
408008:	8b 75 08             	mov    0x8(%ebp),%esi
40800b:	57                   	push   %edi
40800c:	8b fa                	mov    %edx,%edi
40800e:	3b cf                	cmp    %edi,%ecx
408010:	74 28                	je     0x40803a
408012:	8b d1                	mov    %ecx,%edx
408014:	53                   	push   %ebx
408015:	2b d6                	sub    %esi,%edx
408017:	33 db                	xor    %ebx,%ebx
408019:	89 1e                	mov    %ebx,(%esi)
40801b:	89 5e 04             	mov    %ebx,0x4(%esi)
40801e:	8b 01                	mov    (%ecx),%eax
408020:	89 06                	mov    %eax,(%esi)
408022:	8b 44 32 04          	mov    0x4(%edx,%esi,1),%eax
408026:	89 46 04             	mov    %eax,0x4(%esi)
408029:	89 19                	mov    %ebx,(%ecx)
40802b:	83 c1 08             	add    $0x8,%ecx
40802e:	89 5c 32 04          	mov    %ebx,0x4(%edx,%esi,1)
408032:	83 c6 08             	add    $0x8,%esi
408035:	3b cf                	cmp    %edi,%ecx
408037:	75 e0                	jne    0x408019
408039:	5b                   	pop    %ebx
40803a:	5f                   	pop    %edi
40803b:	8b c6                	mov    %esi,%eax
40803d:	5e                   	pop    %esi
40803e:	5d                   	pop    %ebp
40803f:	c2 08 00             	ret    $0x8
408042:	cc                   	int3
408043:	cc                   	int3
408044:	cc                   	int3
408045:	cc                   	int3
408046:	cc                   	int3
408047:	cc                   	int3
408048:	cc                   	int3
408049:	cc                   	int3
40804a:	cc                   	int3
40804b:	cc                   	int3
40804c:	cc                   	int3
40804d:	cc                   	int3
40804e:	cc                   	int3
40804f:	cc                   	int3
408050:	8b ff                	mov    %edi,%edi
408052:	55                   	push   %ebp
408053:	8b ec                	mov    %esp,%ebp
408055:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
408059:	56                   	push   %esi
40805a:	8b f1                	mov    %ecx,%esi
40805c:	74 0d                	je     0x40806b
40805e:	68 b0 00 00 00       	push   $0xb0
408063:	56                   	push   %esi
408064:	e8 d6 21 00 00       	call   0x40a23f
408069:	59                   	pop    %ecx
40806a:	59                   	pop    %ecx
40806b:	8b c6                	mov    %esi,%eax
40806d:	5e                   	pop    %esi
40806e:	5d                   	pop    %ebp
40806f:	c2 04 00             	ret    $0x4
408072:	6a 7c                	push   $0x7c
408074:	b8 1c b2 40 00       	mov    $0x40b21c,%eax
408079:	e8 96 2b 00 00       	call   0x40ac14
40807e:	8b d9                	mov    %ecx,%ebx
408080:	89 5d ec             	mov    %ebx,-0x14(%ebp)
408083:	8b 4d 18             	mov    0x18(%ebp),%ecx
408086:	8b 55 0c             	mov    0xc(%ebp),%edx
408089:	8b 45 10             	mov    0x10(%ebp),%eax
40808c:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40808f:	83 63 24 00          	andl   $0x0,0x24(%ebx)
408093:	89 4d e8             	mov    %ecx,-0x18(%ebp)
408096:	ff 75 08             	push   0x8(%ebp)
408099:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40809d:	8d 4b 28             	lea    0x28(%ebx),%ecx
4080a0:	50                   	push   %eax
4080a1:	52                   	push   %edx
4080a2:	e8 f7 06 00 00       	call   0x40879e
4080a7:	8d 53 78             	lea    0x78(%ebx),%edx
4080aa:	33 c9                	xor    %ecx,%ecx
4080ac:	89 0a                	mov    %ecx,(%edx)
4080ae:	89 4b 7c             	mov    %ecx,0x7c(%ebx)
4080b1:	89 8b 80 00 00 00    	mov    %ecx,0x80(%ebx)
4080b7:	89 8b 84 00 00 00    	mov    %ecx,0x84(%ebx)
4080bd:	8b 45 1c             	mov    0x1c(%ebp),%eax
4080c0:	8d bb 8c 00 00 00    	lea    0x8c(%ebx),%edi
4080c6:	8b 75 14             	mov    0x14(%ebp),%esi
4080c9:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
4080cd:	6a 05                	push   $0x5
4080cf:	59                   	pop    %ecx
4080d0:	89 83 88 00 00 00    	mov    %eax,0x88(%ebx)
4080d6:	8d 43 10             	lea    0x10(%ebx),%eax
4080d9:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
4080db:	8b 75 08             	mov    0x8(%ebp),%esi
4080de:	8d 7b 14             	lea    0x14(%ebx),%edi
4080e1:	c6 83 a0 00 00 00 00 	movb   $0x0,0xa0(%ebx)
4080e8:	c7 03 0a 00 00 00    	movl   $0xa,(%ebx)
4080ee:	89 43 04             	mov    %eax,0x4(%ebx)
4080f1:	c7 00 bf f7 26 73    	movl   $0x7326f7bf,(%eax)
4080f7:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4080f8:	52                   	push   %edx
4080f9:	68 cc 1e 40 00       	push   $0x401ecc
4080fe:	6a 17                	push   $0x17
408100:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408101:	6a 00                	push   $0x0
408103:	68 ac 1e 40 00       	push   $0x401eac
408108:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408109:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40810a:	ff 15 20 e0 40 00    	call   *0x40e020
408110:	8b f0                	mov    %eax,%esi
408112:	85 f6                	test   %esi,%esi
408114:	0f 88 e9 01 00 00    	js     0x408303
40811a:	8b 4b 78             	mov    0x78(%ebx),%ecx
40811d:	8b 01                	mov    (%ecx),%eax
40811f:	8b 30                	mov    (%eax),%esi
408121:	8d 83 84 00 00 00    	lea    0x84(%ebx),%eax
408127:	50                   	push   %eax
408128:	68 dc 1e 40 00       	push   $0x401edc
40812d:	51                   	push   %ecx
40812e:	8b ce                	mov    %esi,%ecx
408130:	ff 15 f0 e1 40 00    	call   *0x40e1f0
408136:	ff d6                	call   *%esi
408138:	8b f0                	mov    %eax,%esi
40813a:	85 f6                	test   %esi,%esi
40813c:	79 2d                	jns    0x40816b
40813e:	a1 00 d0 40 00       	mov    0x40d000,%eax
408143:	3d 00 d0 40 00       	cmp    $0x40d000,%eax
408148:	0f 84 db 01 00 00    	je     0x408329
40814e:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
408152:	0f 82 d1 01 00 00    	jb     0x408329
408158:	56                   	push   %esi
408159:	ff 70 14             	push   0x14(%eax)
40815c:	ba bc 1e 40 00       	mov    $0x401ebc,%edx
408161:	ff 70 10             	push   0x10(%eax)
408164:	6a 0b                	push   $0xb
408166:	e9 b8 01 00 00       	jmp    0x408323
40816b:	8b 4b 78             	mov    0x78(%ebx),%ecx
40816e:	8d bb 80 00 00 00    	lea    0x80(%ebx),%edi
408174:	57                   	push   %edi
408175:	68 ec 1e 40 00       	push   $0x401eec
40817a:	51                   	push   %ecx
40817b:	8b 01                	mov    (%ecx),%eax
40817d:	8b 30                	mov    (%eax),%esi
40817f:	8b ce                	mov    %esi,%ecx
408181:	ff 15 f0 e1 40 00    	call   *0x40e1f0
408187:	ff d6                	call   *%esi
408189:	8b f0                	mov    %eax,%esi
40818b:	85 f6                	test   %esi,%esi
40818d:	79 2d                	jns    0x4081bc
40818f:	a1 00 d0 40 00       	mov    0x40d000,%eax
408194:	3d 00 d0 40 00       	cmp    $0x40d000,%eax
408199:	0f 84 8a 01 00 00    	je     0x408329
40819f:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
4081a3:	0f 82 80 01 00 00    	jb     0x408329
4081a9:	56                   	push   %esi
4081aa:	ff 70 14             	push   0x14(%eax)
4081ad:	ba bc 1e 40 00       	mov    $0x401ebc,%edx
4081b2:	ff 70 10             	push   0x10(%eax)
4081b5:	6a 0c                	push   $0xc
4081b7:	e9 67 01 00 00       	jmp    0x408323
4081bc:	8b 0f                	mov    (%edi),%ecx
4081be:	ff 75 e8             	push   -0x18(%ebp)
4081c1:	51                   	push   %ecx
4081c2:	8b 01                	mov    (%ecx),%eax
4081c4:	8b 70 0c             	mov    0xc(%eax),%esi
4081c7:	8b ce                	mov    %esi,%ecx
4081c9:	ff 15 f0 e1 40 00    	call   *0x40e1f0
4081cf:	ff d6                	call   *%esi
4081d1:	8b f0                	mov    %eax,%esi
4081d3:	85 f6                	test   %esi,%esi
4081d5:	79 2d                	jns    0x408204
4081d7:	a1 00 d0 40 00       	mov    0x40d000,%eax
4081dc:	3d 00 d0 40 00       	cmp    $0x40d000,%eax
4081e1:	0f 84 42 01 00 00    	je     0x408329
4081e7:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
4081eb:	0f 82 38 01 00 00    	jb     0x408329
4081f1:	56                   	push   %esi
4081f2:	ff 70 14             	push   0x14(%eax)
4081f5:	ba bc 1e 40 00       	mov    $0x401ebc,%edx
4081fa:	ff 70 10             	push   0x10(%eax)
4081fd:	6a 0d                	push   $0xd
4081ff:	e9 1f 01 00 00       	jmp    0x408323
408204:	8b 0f                	mov    (%edi),%ecx
408206:	53                   	push   %ebx
408207:	51                   	push   %ecx
408208:	8b 01                	mov    (%ecx),%eax
40820a:	8b 70 10             	mov    0x10(%eax),%esi
40820d:	8b ce                	mov    %esi,%ecx
40820f:	ff 15 f0 e1 40 00    	call   *0x40e1f0
408215:	ff d6                	call   *%esi
408217:	8b f0                	mov    %eax,%esi
408219:	85 f6                	test   %esi,%esi
40821b:	79 2d                	jns    0x40824a
40821d:	a1 00 d0 40 00       	mov    0x40d000,%eax
408222:	3d 00 d0 40 00       	cmp    $0x40d000,%eax
408227:	0f 84 fc 00 00 00    	je     0x408329
40822d:	80 78 19 02          	cmpb   $0x2,0x19(%eax)
408231:	0f 82 f2 00 00 00    	jb     0x408329
408237:	56                   	push   %esi
408238:	ff 70 14             	push   0x14(%eax)
40823b:	ba bc 1e 40 00       	mov    $0x401ebc,%edx
408240:	ff 70 10             	push   0x10(%eax)
408243:	6a 0e                	push   $0xe
408245:	e9 d9 00 00 00       	jmp    0x408323
40824a:	8b 4b 78             	mov    0x78(%ebx),%ecx
40824d:	6a 00                	push   $0x0