40f051:	39 7e 18             	cmp    %edi,0x18(%esi)
40f054:	75 15                	jne    0x40f06b
40f056:	39 7e 1c             	cmp    %edi,0x1c(%esi)
40f059:	75 10                	jne    0x40f06b
40f05b:	89 7d fc             	mov    %edi,-0x4(%ebp)
40f05e:	89 7d f8             	mov    %edi,-0x8(%ebp)
40f061:	bb 80 b9 42 00       	mov    $0x42b980,%ebx
40f066:	e9 36 02 00 00       	jmp    0x40f2a1
40f06b:	6a 30                	push   $0x30
40f06d:	6a 01                	push   $0x1
40f06f:	e8 31 8b ff ff       	call   0x407ba5
40f074:	8b d8                	mov    %eax,%ebx
40f076:	59                   	pop    %ecx
40f077:	59                   	pop    %ecx
40f078:	3b df                	cmp    %edi,%ebx
40f07a:	75 08                	jne    0x40f084
40f07c:	33 c0                	xor    %eax,%eax
40f07e:	40                   	inc    %eax
40f07f:	e9 75 02 00 00       	jmp    0x40f2f9
40f084:	6a 04                	push   $0x4
40f086:	e8 d5 8a ff ff       	call   0x407b60
40f08b:	59                   	pop    %ecx
40f08c:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f08f:	3b c7                	cmp    %edi,%eax
40f091:	75 09                	jne    0x40f09c
40f093:	53                   	push   %ebx
40f094:	e8 87 5f ff ff       	call   0x405020
40f099:	59                   	pop    %ecx
40f09a:	eb e0                	jmp    0x40f07c
40f09c:	89 38                	mov    %edi,(%eax)
40f09e:	39 7e 18             	cmp    %edi,0x18(%esi)
40f0a1:	0f 84 b9 01 00 00    	je     0x40f260
40f0a7:	6a 04                	push   $0x4
40f0a9:	e8 b2 8a ff ff       	call   0x407b60
40f0ae:	59                   	pop    %ecx
40f0af:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f0b2:	3b c7                	cmp    %edi,%eax
40f0b4:	75 11                	jne    0x40f0c7
40f0b6:	53                   	push   %ebx
40f0b7:	e8 64 5f ff ff       	call   0x405020
40f0bc:	ff 75 f8             	push   -0x8(%ebp)
40f0bf:	e8 5c 5f ff ff       	call   0x405020
40f0c4:	59                   	pop    %ecx
40f0c5:	eb d2                	jmp    0x40f099
40f0c7:	89 38                	mov    %edi,(%eax)
40f0c9:	0f b7 76 38          	movzwl 0x38(%esi),%esi
40f0cd:	8d 43 0c             	lea    0xc(%ebx),%eax
40f0d0:	50                   	push   %eax
40f0d1:	6a 15                	push   $0x15
40f0d3:	56                   	push   %esi
40f0d4:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f0d7:	6a 01                	push   $0x1
40f0d9:	50                   	push   %eax
40f0da:	e8 b0 e3 ff ff       	call   0x40d48f
40f0df:	8b f8                	mov    %eax,%edi
40f0e1:	8d 43 10             	lea    0x10(%ebx),%eax
40f0e4:	50                   	push   %eax
40f0e5:	6a 14                	push   $0x14
40f0e7:	56                   	push   %esi
40f0e8:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f0eb:	6a 01                	push   $0x1
40f0ed:	50                   	push   %eax
40f0ee:	e8 9c e3 ff ff       	call   0x40d48f
40f0f3:	0b f8                	or     %eax,%edi
40f0f5:	8d 43 14             	lea    0x14(%ebx),%eax
40f0f8:	50                   	push   %eax
40f0f9:	6a 16                	push   $0x16
40f0fb:	56                   	push   %esi
40f0fc:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f0ff:	6a 01                	push   $0x1
40f101:	50                   	push   %eax
40f102:	e8 88 e3 ff ff       	call   0x40d48f
40f107:	0b f8                	or     %eax,%edi
40f109:	8d 43 18             	lea    0x18(%ebx),%eax
40f10c:	50                   	push   %eax
40f10d:	6a 17                	push   $0x17
40f10f:	56                   	push   %esi
40f110:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f113:	6a 01                	push   $0x1
40f115:	50                   	push   %eax
40f116:	e8 74 e3 ff ff       	call   0x40d48f
40f11b:	83 c4 50             	add    $0x50,%esp
40f11e:	0b f8                	or     %eax,%edi
40f120:	8d 43 1c             	lea    0x1c(%ebx),%eax
40f123:	50                   	push   %eax
40f124:	6a 18                	push   $0x18
40f126:	56                   	push   %esi
40f127:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f12a:	6a 01                	push   $0x1
40f12c:	50                   	push   %eax
40f12d:	e8 5d e3 ff ff       	call   0x40d48f
40f132:	0b f8                	or     %eax,%edi
40f134:	8d 43 20             	lea    0x20(%ebx),%eax
40f137:	50                   	push   %eax
40f138:	6a 50                	push   $0x50
40f13a:	56                   	push   %esi
40f13b:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f13e:	6a 01                	push   $0x1
40f140:	50                   	push   %eax
40f141:	e8 49 e3 ff ff       	call   0x40d48f
40f146:	0b f8                	or     %eax,%edi
40f148:	8d 43 24             	lea    0x24(%ebx),%eax
40f14b:	50                   	push   %eax
40f14c:	6a 51                	push   $0x51
40f14e:	56                   	push   %esi
40f14f:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f152:	6a 01                	push   $0x1
40f154:	50                   	push   %eax
40f155:	e8 35 e3 ff ff       	call   0x40d48f
40f15a:	0b f8                	or     %eax,%edi
40f15c:	8d 43 28             	lea    0x28(%ebx),%eax
40f15f:	50                   	push   %eax
40f160:	6a 1a                	push   $0x1a
40f162:	56                   	push   %esi
40f163:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f166:	6a 00                	push   $0x0
40f168:	50                   	push   %eax
40f169:	e8 21 e3 ff ff       	call   0x40d48f
40f16e:	83 c4 50             	add    $0x50,%esp
40f171:	0b f8                	or     %eax,%edi
40f173:	8d 43 29             	lea    0x29(%ebx),%eax
40f176:	50                   	push   %eax
40f177:	6a 19                	push   $0x19
40f179:	56                   	push   %esi
40f17a:	6a 00                	push   $0x0
40f17c:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f17f:	50                   	push   %eax
40f180:	e8 0a e3 ff ff       	call   0x40d48f
40f185:	0b f8                	or     %eax,%edi
40f187:	8d 43 2a             	lea    0x2a(%ebx),%eax
40f18a:	50                   	push   %eax
40f18b:	6a 54                	push   $0x54
40f18d:	56                   	push   %esi
40f18e:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f191:	6a 00                	push   $0x0
40f193:	50                   	push   %eax
40f194:	e8 f6 e2 ff ff       	call   0x40d48f
40f199:	0b f8                	or     %eax,%edi
40f19b:	8d 43 2b             	lea    0x2b(%ebx),%eax
40f19e:	50                   	push   %eax
40f19f:	6a 55                	push   $0x55
40f1a1:	56                   	push   %esi
40f1a2:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f1a5:	6a 00                	push   $0x0
40f1a7:	50                   	push   %eax
40f1a8:	e8 e2 e2 ff ff       	call   0x40d48f
40f1ad:	0b f8                	or     %eax,%edi
40f1af:	8d 43 2c             	lea    0x2c(%ebx),%eax
40f1b2:	50                   	push   %eax
40f1b3:	6a 56                	push   $0x56
40f1b5:	56                   	push   %esi
40f1b6:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f1b9:	6a 00                	push   $0x0
40f1bb:	50                   	push   %eax
40f1bc:	e8 ce e2 ff ff       	call   0x40d48f
40f1c1:	83 c4 50             	add    $0x50,%esp
40f1c4:	0b f8                	or     %eax,%edi
40f1c6:	8d 43 2d             	lea    0x2d(%ebx),%eax
40f1c9:	50                   	push   %eax
40f1ca:	6a 57                	push   $0x57
40f1cc:	56                   	push   %esi
40f1cd:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f1d0:	6a 00                	push   $0x0
40f1d2:	50                   	push   %eax
40f1d3:	e8 b7 e2 ff ff       	call   0x40d48f
40f1d8:	0b f8                	or     %eax,%edi
40f1da:	8d 43 2e             	lea    0x2e(%ebx),%eax
40f1dd:	50                   	push   %eax
40f1de:	6a 52                	push   $0x52
40f1e0:	56                   	push   %esi
40f1e1:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f1e4:	6a 00                	push   $0x0
40f1e6:	50                   	push   %eax
40f1e7:	e8 a3 e2 ff ff       	call   0x40d48f
40f1ec:	0b f8                	or     %eax,%edi
40f1ee:	8d 43 2f             	lea    0x2f(%ebx),%eax
40f1f1:	50                   	push   %eax
40f1f2:	6a 53                	push   $0x53
40f1f4:	56                   	push   %esi
40f1f5:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f1f8:	6a 00                	push   $0x0
40f1fa:	50                   	push   %eax
40f1fb:	e8 8f e2 ff ff       	call   0x40d48f
40f200:	83 c4 3c             	add    $0x3c,%esp
40f203:	0b c7                	or     %edi,%eax
40f205:	74 24                	je     0x40f22b
40f207:	53                   	push   %ebx
40f208:	e8 9d fd ff ff       	call   0x40efaa
40f20d:	53                   	push   %ebx
40f20e:	e8 0d 5e ff ff       	call   0x405020
40f213:	ff 75 f8             	push   -0x8(%ebp)
40f216:	e8 05 5e ff ff       	call   0x405020
40f21b:	ff 75 fc             	push   -0x4(%ebp)
40f21e:	e8 fd 5d ff ff       	call   0x405020
40f223:	83 c4 10             	add    $0x10,%esp
40f226:	e9 51 fe ff ff       	jmp    0x40f07c
40f22b:	8b 43 1c             	mov    0x1c(%ebx),%eax
40f22e:	eb 12                	jmp    0x40f242
40f230:	8a 08                	mov    (%eax),%cl
40f232:	80 f9 30             	cmp    $0x30,%cl
40f235:	7c 12                	jl     0x40f249
40f237:	80 f9 39             	cmp    $0x39,%cl
40f23a:	7f 0d                	jg     0x40f249
40f23c:	80 e9 30             	sub    $0x30,%cl
40f23f:	88 08                	mov    %cl,(%eax)
40f241:	40                   	inc    %eax
40f242:	80 38 00             	cmpb   $0x0,(%eax)
40f245:	75 e9                	jne    0x40f230
40f247:	eb 23                	jmp    0x40f26c
40f249:	80 f9 3b             	cmp    $0x3b,%cl
40f24c:	75 f3                	jne    0x40f241
40f24e:	8b f0                	mov    %eax,%esi
40f250:	8d 7e 01             	lea    0x1(%esi),%edi
40f253:	8a 0f                	mov    (%edi),%cl
40f255:	88 0e                	mov    %cl,(%esi)
40f257:	8b f7                	mov    %edi,%esi
40f259:	80 3e 00             	cmpb   $0x0,(%esi)
40f25c:	75 f2                	jne    0x40f250
40f25e:	eb e2                	jmp    0x40f242
40f260:	6a 0c                	push   $0xc
40f262:	59                   	pop    %ecx
40f263:	be 80 b9 42 00       	mov    $0x42b980,%esi
40f268:	8b fb                	mov    %ebx,%edi
40f26a:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40f26c:	8b 45 08             	mov    0x8(%ebp),%eax
40f26f:	8b 75 08             	mov    0x8(%ebp),%esi
40f272:	05 bc 00 00 00       	add    $0xbc,%eax
40f277:	8b 08                	mov    (%eax),%ecx
40f279:	8b 09                	mov    (%ecx),%ecx
40f27b:	89 0b                	mov    %ecx,(%ebx)
40f27d:	8b 08                	mov    (%eax),%ecx
40f27f:	8b 49 04             	mov    0x4(%ecx),%ecx
40f282:	89 4b 04             	mov    %ecx,0x4(%ebx)
40f285:	8b 00                	mov    (%eax),%eax
40f287:	8b 40 08             	mov    0x8(%eax),%eax
40f28a:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40f28d:	89 43 08             	mov    %eax,0x8(%ebx)
40f290:	33 c0                	xor    %eax,%eax
40f292:	40                   	inc    %eax
40f293:	33 ff                	xor    %edi,%edi
40f295:	89 01                	mov    %eax,(%ecx)
40f297:	39 7d fc             	cmp    %edi,-0x4(%ebp)
40f29a:	74 05                	je     0x40f2a1
40f29c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f29f:	89 01                	mov    %eax,(%ecx)
40f2a1:	8b 86 b8 00 00 00    	mov    0xb8(%esi),%eax
40f2a7:	3b c7                	cmp    %edi,%eax
40f2a9:	74 07                	je     0x40f2b2
40f2ab:	50                   	push   %eax
40f2ac:	ff 15 78 a0 41 00    	call   *0x41a078
40f2b2:	8b 86 b0 00 00 00    	mov    0xb0(%esi),%eax
40f2b8:	3b c7                	cmp    %edi,%eax
40f2ba:	74 23                	je     0x40f2df
40f2bc:	50                   	push   %eax
40f2bd:	ff 15 78 a0 41 00    	call   *0x41a078
40f2c3:	85 c0                	test   %eax,%eax
40f2c5:	75 18                	jne    0x40f2df
40f2c7:	ff b6 bc 00 00 00    	push   0xbc(%esi)
40f2cd:	e8 4e 5d ff ff       	call   0x405020
40f2d2:	ff b6 b0 00 00 00    	push   0xb0(%esi)
40f2d8:	e8 43 5d ff ff       	call   0x405020
40f2dd:	59                   	pop    %ecx
40f2de:	59                   	pop    %ecx
40f2df:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f2e2:	89 86 b8 00 00 00    	mov    %eax,0xb8(%esi)
40f2e8:	8b 45 f8             	mov    -0x8(%ebp),%eax
40f2eb:	89 86 b0 00 00 00    	mov    %eax,0xb0(%esi)
40f2f1:	89 9e bc 00 00 00    	mov    %ebx,0xbc(%esi)
40f2f7:	33 c0                	xor    %eax,%eax
40f2f9:	5f                   	pop    %edi
40f2fa:	5e                   	pop    %esi
40f2fb:	5b                   	pop    %ebx
40f2fc:	c9                   	leave
40f2fd:	c3                   	ret
40f2fe:	2d a4 03 00 00       	sub    $0x3a4,%eax
40f303:	74 22                	je     0x40f327
40f305:	83 e8 04             	sub    $0x4,%eax
40f308:	74 17                	je     0x40f321
40f30a:	83 e8 0d             	sub    $0xd,%eax
40f30d:	74 0c                	je     0x40f31b
40f30f:	48                   	dec    %eax
40f310:	74 03                	je     0x40f315
40f312:	33 c0                	xor    %eax,%eax
40f314:	c3                   	ret
40f315:	b8 04 04 00 00       	mov    $0x404,%eax
40f31a:	c3                   	ret
40f31b:	b8 12 04 00 00       	mov    $0x412,%eax
40f320:	c3                   	ret
40f321:	b8 04 08 00 00       	mov    $0x804,%eax
40f326:	c3                   	ret
40f327:	b8 11 04 00 00       	mov    $0x411,%eax
40f32c:	c3                   	ret
40f32d:	8b ff                	mov    %edi,%edi
40f32f:	56                   	push   %esi
40f330:	57                   	push   %edi
40f331:	8b f0                	mov    %eax,%esi
40f333:	68 01 01 00 00       	push   $0x101
40f338:	33 ff                	xor    %edi,%edi
40f33a:	8d 46 1c             	lea    0x1c(%esi),%eax
40f33d:	57                   	push   %edi
40f33e:	50                   	push   %eax
40f33f:	e8 bc b3 ff ff       	call   0x40a700
40f344:	33 c0                	xor    %eax,%eax
40f346:	0f b7 c8             	movzwl %ax,%ecx
40f349:	8b c1                	mov    %ecx,%eax
40f34b:	89 7e 04             	mov    %edi,0x4(%esi)
40f34e:	89 7e 08             	mov    %edi,0x8(%esi)
40f351:	89 7e 0c             	mov    %edi,0xc(%esi)
40f354:	c1 e1 10             	shl    $0x10,%ecx
40f357:	0b c1                	or     %ecx,%eax
40f359:	8d 7e 10             	lea    0x10(%esi),%edi
40f35c:	ab                   	stos   %eax,%es:(%edi)
40f35d:	ab                   	stos   %eax,%es:(%edi)
40f35e:	ab                   	stos   %eax,%es:(%edi)
40f35f:	b9 c0 b9 42 00       	mov    $0x42b9c0,%ecx
40f364:	83 c4 0c             	add    $0xc,%esp
40f367:	8d 46 1c             	lea    0x1c(%esi),%eax
40f36a:	2b ce                	sub    %esi,%ecx
40f36c:	bf 01 01 00 00       	mov    $0x101,%edi
40f371:	8a 14 01             	mov    (%ecx,%eax,1),%dl
40f374:	88 10                	mov    %dl,(%eax)
40f376:	40                   	inc    %eax
40f377:	4f                   	dec    %edi
40f378:	75 f7                	jne    0x40f371
40f37a:	8d 86 1d 01 00 00    	lea    0x11d(%esi),%eax
40f380:	be 00 01 00 00       	mov    $0x100,%esi
40f385:	8a 14 08             	mov    (%eax,%ecx,1),%dl
40f388:	88 10                	mov    %dl,(%eax)
40f38a:	40                   	inc    %eax
40f38b:	4e                   	dec    %esi
40f38c:	75 f7                	jne    0x40f385
40f38e:	5f                   	pop    %edi
40f38f:	5e                   	pop    %esi
40f390:	c3                   	ret
40f391:	8b ff                	mov    %edi,%edi
40f393:	55                   	push   %ebp
40f394:	8b ec                	mov    %esp,%ebp
40f396:	81 ec 1c 05 00 00    	sub    $0x51c,%esp
40f39c:	a1 68 b2 42 00       	mov    0x42b268,%eax
40f3a1:	33 c5                	xor    %ebp,%eax
40f3a3:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f3a6:	53                   	push   %ebx
40f3a7:	57                   	push   %edi
40f3a8:	8d 85 e8 fa ff ff    	lea    -0x518(%ebp),%eax
40f3ae:	50                   	push   %eax
40f3af:	ff 76 04             	push   0x4(%esi)
40f3b2:	ff 15 bc a0 41 00    	call   *0x41a0bc
40f3b8:	bf 00 01 00 00       	mov    $0x100,%edi
40f3bd:	85 c0                	test   %eax,%eax
40f3bf:	0f 84 fb 00 00 00    	je     0x40f4c0