4050d8:	33 c0                	xor    %eax,%eax
4050da:	56                   	push   %esi
4050db:	89 85 ec fd ff ff    	mov    %eax,-0x214(%ebp)
4050e1:	89 85 f0 fd ff ff    	mov    %eax,-0x210(%ebp)
4050e7:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
4050ed:	57                   	push   %edi
4050ee:	50                   	push   %eax
4050ef:	8d 85 ec fd ff ff    	lea    -0x214(%ebp),%eax
4050f5:	50                   	push   %eax
4050f6:	e8 b5 05 00 00       	call   0x4056b0
4050fb:	8b b5 ec fd ff ff    	mov    -0x214(%ebp),%esi
405101:	8b d8                	mov    %eax,%ebx
405103:	85 db                	test   %ebx,%ebx
405105:	0f 88 ee 00 00 00    	js     0x4051f9
40510b:	8b 85 f0 fd ff ff    	mov    -0x210(%ebp),%eax
405111:	8d 8d e8 fd ff ff    	lea    -0x218(%ebp),%ecx
405117:	51                   	push   %ecx
405118:	33 db                	xor    %ebx,%ebx
40511a:	53                   	push   %ebx
40511b:	53                   	push   %ebx
40511c:	89 9d e8 fd ff ff    	mov    %ebx,-0x218(%ebp)
405122:	8b 38                	mov    (%eax),%edi
405124:	53                   	push   %ebx
405125:	6a ff                	push   $0xffffffff
405127:	50                   	push   %eax
405128:	8b 4f 24             	mov    0x24(%edi),%ecx
40512b:	ff 15 20 f2 40 00    	call   *0x40f220
405131:	ff 57 24             	call   *0x24(%edi)
405134:	85 c0                	test   %eax,%eax
405136:	0f 88 a1 00 00 00    	js     0x4051dd
40513c:	39 9d e8 fd ff ff    	cmp    %ebx,-0x218(%ebp)
405142:	0f 84 95 00 00 00    	je     0x4051dd
405148:	56                   	push   %esi
405149:	ff 15 e4 f0 40 00    	call   *0x40f0e4
40514f:	50                   	push   %eax
405150:	56                   	push   %esi
405151:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
405157:	68 04 01 00 00       	push   $0x104
40515c:	50                   	push   %eax
40515d:	ff 15 f8 f1 40 00    	call   *0x40f1f8
405163:	83 c4 10             	add    $0x10,%esp
405166:	8b c8                	mov    %eax,%ecx
405168:	e8 fc 19 00 00       	call   0x406b69
40516d:	33 c0                	xor    %eax,%eax
40516f:	8d bd f4 fd ff ff    	lea    -0x20c(%ebp),%edi
405175:	8b df                	mov    %edi,%ebx
405177:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
40517b:	66 39 85 f4 fd ff ff 	cmp    %ax,-0x20c(%ebp)
405182:	74 2a                	je     0x4051ae
405184:	33 f6                	xor    %esi,%esi
405186:	53                   	push   %ebx
405187:	ff 15 f8 f0 40 00    	call   *0x40f0f8
40518d:	0f b7 0b             	movzwl (%ebx),%ecx
405190:	83 f9 5c             	cmp    $0x5c,%ecx
405193:	74 0a                	je     0x40519f
405195:	83 f9 2f             	cmp    $0x2f,%ecx
405198:	74 05                	je     0x40519f
40519a:	83 f9 3a             	cmp    $0x3a,%ecx
40519d:	75 02                	jne    0x4051a1
40519f:	8b f8                	mov    %eax,%edi
4051a1:	8b d8                	mov    %eax,%ebx
4051a3:	66 39 30             	cmp    %si,(%eax)
4051a6:	75 de                	jne    0x405186
4051a8:	8b b5 ec fd ff ff    	mov    -0x214(%ebp),%esi
4051ae:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
4051b4:	2b f8                	sub    %eax,%edi
4051b6:	d1 ff                	sar    $1,%edi
4051b8:	81 ff 04 01 00 00    	cmp    $0x104,%edi
4051be:	73 14                	jae    0x4051d4
4051c0:	03 ff                	add    %edi,%edi
4051c2:	81 ff 08 02 00 00    	cmp    $0x208,%edi
4051c8:	73 61                	jae    0x40522b
4051ca:	33 c0                	xor    %eax,%eax
4051cc:	66 89 84 3d f4 fd ff 	mov    %ax,-0x20c(%ebp,%edi,1)
4051d3:	ff
4051d4:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
4051da:	50                   	push   %eax
4051db:	eb 01                	jmp    0x4051de
4051dd:	53                   	push   %ebx
4051de:	56                   	push   %esi
4051df:	ff b5 f0 fd ff ff    	push   -0x210(%ebp)
4051e5:	ff 15 e0 f0 40 00    	call   *0x40f0e0
4051eb:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
4051f1:	8b d8                	mov    %eax,%ebx
4051f3:	ff 15 d0 f0 40 00    	call   *0x40f0d0
4051f9:	8b 85 f0 fd ff ff    	mov    -0x210(%ebp),%eax
4051ff:	85 c0                	test   %eax,%eax
405201:	74 10                	je     0x405213
405203:	8b 08                	mov    (%eax),%ecx
405205:	50                   	push   %eax
405206:	8b 79 08             	mov    0x8(%ecx),%edi
405209:	8b cf                	mov    %edi,%ecx
40520b:	ff 15 20 f2 40 00    	call   *0x40f220
405211:	ff d7                	call   *%edi
405213:	56                   	push   %esi
405214:	ff 15 d0 f0 40 00    	call   *0x40f0d0
40521a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40521d:	8b c3                	mov    %ebx,%eax
40521f:	5f                   	pop    %edi
405220:	5e                   	pop    %esi
405221:	33 cd                	xor    %ebp,%ecx
405223:	5b                   	pop    %ebx
405224:	e8 37 46 00 00       	call   0x409860
405229:	c9                   	leave
40522a:	c3                   	ret
40522b:	e8 2f 49 00 00       	call   0x409b5f
405230:	cc                   	int3
405231:	8b ff                	mov    %edi,%edi
405233:	53                   	push   %ebx
405234:	8b dc                	mov    %esp,%ebx
405236:	51                   	push   %ecx
405237:	51                   	push   %ecx
405238:	83 e4 f8             	and    $0xfffffff8,%esp
40523b:	83 c4 04             	add    $0x4,%esp
40523e:	55                   	push   %ebp
40523f:	8b 6b 04             	mov    0x4(%ebx),%ebp
405242:	89 6c 24 04          	mov    %ebp,0x4(%esp)
405246:	8b ec                	mov    %esp,%ebp
405248:	51                   	push   %ecx
405249:	51                   	push   %ecx
40524a:	8b 0d fc c0 40 00    	mov    0x40c0fc,%ecx
405250:	33 c0                	xor    %eax,%eax
405252:	56                   	push   %esi
405253:	57                   	push   %edi
405254:	8b 3d f8 c0 40 00    	mov    0x40c0f8,%edi
40525a:	3b f9                	cmp    %ecx,%edi
40525c:	73 4f                	jae    0x4052ad
40525e:	8b 17                	mov    (%edi),%edx
405260:	89 55 fc             	mov    %edx,-0x4(%ebp)
405263:	85 d2                	test   %edx,%edx
405265:	74 3b                	je     0x4052a2
405267:	8b 72 04             	mov    0x4(%edx),%esi
40526a:	8b ce                	mov    %esi,%ecx
40526c:	6a 01                	push   $0x1
40526e:	ff 15 20 f2 40 00    	call   *0x40f220
405274:	ff d6                	call   *%esi
405276:	85 c0                	test   %eax,%eax
405278:	78 5c                	js     0x4052d6
40527a:	8b 75 fc             	mov    -0x4(%ebp),%esi
40527d:	6a 01                	push   $0x1
40527f:	8b 76 1c             	mov    0x1c(%esi),%esi
405282:	8b ce                	mov    %esi,%ecx
405284:	ff 15 20 f2 40 00    	call   *0x40f220
40528a:	ff d6                	call   *%esi
40528c:	8b d0                	mov    %eax,%edx
40528e:	8b 45 fc             	mov    -0x4(%ebp),%eax
405291:	8b 08                	mov    (%eax),%ecx
405293:	e8 9b 00 00 00       	call   0x405333
405298:	85 c0                	test   %eax,%eax
40529a:	78 3a                	js     0x4052d6
40529c:	8b 0d fc c0 40 00    	mov    0x40c0fc,%ecx
4052a2:	83 c7 04             	add    $0x4,%edi
4052a5:	3b f9                	cmp    %ecx,%edi
4052a7:	72 b5                	jb     0x40525e
4052a9:	85 c0                	test   %eax,%eax
4052ab:	78 29                	js     0x4052d6
4052ad:	8b 0d f4 c0 40 00    	mov    0x40c0f4,%ecx
4052b3:	e8 0a fe ff ff       	call   0x4050c2
4052b8:	85 c0                	test   %eax,%eax
4052ba:	78 1a                	js     0x4052d6
4052bc:	8b 35 a8 c5 40 00    	mov    0x40c5a8,%esi
4052c2:	85 f6                	test   %esi,%esi
4052c4:	74 10                	je     0x4052d6
4052c6:	ff 35 b4 c0 40 00    	push   0x40c0b4
4052cc:	8b ce                	mov    %esi,%ecx
4052ce:	ff 15 20 f2 40 00    	call   *0x40f220
4052d4:	ff d6                	call   *%esi
4052d6:	5f                   	pop    %edi
4052d7:	5e                   	pop    %esi
4052d8:	8b e5                	mov    %ebp,%esp
4052da:	5d                   	pop    %ebp
4052db:	8b e3                	mov    %ebx,%esp
4052dd:	5b                   	pop    %ebx
4052de:	c2 08 00             	ret    $0x8
4052e1:	8b ff                	mov    %edi,%edi
4052e3:	51                   	push   %ecx
4052e4:	56                   	push   %esi
4052e5:	57                   	push   %edi
4052e6:	8b 79 2c             	mov    0x2c(%ecx),%edi
4052e9:	85 ff                	test   %edi,%edi
4052eb:	74 39                	je     0x405326
4052ed:	eb 32                	jmp    0x405321
4052ef:	8b 77 04             	mov    0x4(%edi),%esi
4052f2:	8b ce                	mov    %esi,%ecx
4052f4:	6a 01                	push   $0x1
4052f6:	ff 15 20 f2 40 00    	call   *0x40f220
4052fc:	ff d6                	call   *%esi
4052fe:	85 c0                	test   %eax,%eax
405300:	78 2b                	js     0x40532d
405302:	8b 77 1c             	mov    0x1c(%edi),%esi
405305:	8b ce                	mov    %esi,%ecx
405307:	6a 01                	push   $0x1
405309:	ff 15 20 f2 40 00    	call   *0x40f220
40530f:	ff d6                	call   *%esi
405311:	8b 0f                	mov    (%edi),%ecx
405313:	8b d0                	mov    %eax,%edx
405315:	e8 19 00 00 00       	call   0x405333
40531a:	85 c0                	test   %eax,%eax
40531c:	78 0f                	js     0x40532d
40531e:	83 c7 24             	add    $0x24,%edi
405321:	83 3f 00             	cmpl   $0x0,(%edi)
405324:	75 c9                	jne    0x4052ef
405326:	51                   	push   %ecx
405327:	51                   	push   %ecx
405328:	e8 04 ff ff ff       	call   0x405231
40532d:	5f                   	pop    %edi
40532e:	5e                   	pop    %esi
40532f:	59                   	pop    %ecx
405330:	c2 08 00             	ret    $0x8
405333:	8b ff                	mov    %edi,%edi
405335:	55                   	push   %ebp
405336:	8b ec                	mov    %esp,%ebp
405338:	81 ec c0 01 00 00    	sub    $0x1c0,%esp
40533e:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
405343:	33 c5                	xor    %ebp,%eax
405345:	89 45 f8             	mov    %eax,-0x8(%ebp)
405348:	53                   	push   %ebx
405349:	56                   	push   %esi
40534a:	33 db                	xor    %ebx,%ebx
40534c:	89 95 58 fe ff ff    	mov    %edx,-0x1a8(%ebp)
405352:	57                   	push   %edi
405353:	8b fa                	mov    %edx,%edi
405355:	8b c1                	mov    %ecx,%eax
405357:	89 85 60 fe ff ff    	mov    %eax,-0x1a0(%ebp)
40535d:	8b f3                	mov    %ebx,%esi
40535f:	89 b5 5c fe ff ff    	mov    %esi,-0x1a4(%ebp)
405365:	85 ff                	test   %edi,%edi
405367:	74 36                	je     0x40539f
405369:	ba 38 23 40 00       	mov    $0x402338,%edx
40536e:	e8 56 0a 00 00       	call   0x405dc9
405373:	85 c0                	test   %eax,%eax
405375:	75 28                	jne    0x40539f
405377:	8d 85 5c fe ff ff    	lea    -0x1a4(%ebp),%eax
40537d:	50                   	push   %eax
40537e:	68 5c 24 40 00       	push   $0x40245c
405383:	6a 01                	push   $0x1
405385:	53                   	push   %ebx
405386:	68 28 23 40 00       	push   $0x402328
40538b:	ff 15 24 f1 40 00    	call   *0x40f124
405391:	85 c0                	test   %eax,%eax
405393:	0f 89 bd 00 00 00    	jns    0x405456
405399:	8b b5 5c fe ff ff    	mov    -0x1a4(%ebp),%esi
40539f:	8b c3                	mov    %ebx,%eax
4053a1:	8b d8                	mov    %eax,%ebx
4053a3:	85 f6                	test   %esi,%esi
4053a5:	74 10                	je     0x4053b7
4053a7:	8b 0e                	mov    (%esi),%ecx
4053a9:	56                   	push   %esi
4053aa:	8b 71 08             	mov    0x8(%ecx),%esi
4053ad:	8b ce                	mov    %esi,%ecx
4053af:	ff 15 20 f2 40 00    	call   *0x40f220
4053b5:	ff d6                	call   *%esi
4053b7:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4053ba:	8b c3                	mov    %ebx,%eax
4053bc:	5f                   	pop    %edi
4053bd:	5e                   	pop    %esi
4053be:	33 cd                	xor    %ebp,%ecx
4053c0:	5b                   	pop    %ebx
4053c1:	e8 9a 44 00 00       	call   0x409860
4053c6:	c9                   	leave
4053c7:	c2 04 00             	ret    $0x4
4053ca:	8d 8d 64 fe ff ff    	lea    -0x19c(%ebp),%ecx
4053d0:	8b 77 04             	mov    0x4(%edi),%esi
4053d3:	8d bd 64 fe ff ff    	lea    -0x19c(%ebp),%edi
4053d9:	51                   	push   %ecx
4053da:	6a 01                	push   $0x1
4053dc:	ff b5 60 fe ff ff    	push   -0x1a0(%ebp)
4053e2:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4053e3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4053e4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4053e5:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4053e6:	39 5d 08             	cmp    %ebx,0x8(%ebp)
4053e9:	74 34                	je     0x40541f
4053eb:	83 f8 01             	cmp    $0x1,%eax
4053ee:	8b 85 5c fe ff ff    	mov    -0x1a4(%ebp),%eax
4053f4:	50                   	push   %eax
4053f5:	8b 30                	mov    (%eax),%esi
4053f7:	75 0e                	jne    0x405407
4053f9:	8b 4e 14             	mov    0x14(%esi),%ecx
4053fc:	ff 15 20 f2 40 00    	call   *0x40f220
405402:	ff 56 14             	call   *0x14(%esi)
405405:	eb 0c                	jmp    0x405413
405407:	8b 4e 1c             	mov    0x1c(%esi),%ecx
40540a:	ff 15 20 f2 40 00    	call   *0x40f220
405410:	ff 56 1c             	call   *0x1c(%esi)
405413:	85 c0                	test   %eax,%eax
405415:	79 30                	jns    0x405447
405417:	8b b5 5c fe ff ff    	mov    -0x1a4(%ebp),%esi
40541d:	eb 82                	jmp    0x4053a1
40541f:	83 f8 01             	cmp    $0x1,%eax
405422:	8b 85 5c fe ff ff    	mov    -0x1a4(%ebp),%eax
405428:	50                   	push   %eax
405429:	8b 30                	mov    (%eax),%esi
40542b:	75 0e                	jne    0x40543b
40542d:	8b 4e 18             	mov    0x18(%esi),%ecx
405430:	ff 15 20 f2 40 00    	call   *0x40f220
405436:	ff 56 18             	call   *0x18(%esi)
405439:	eb 0c                	jmp    0x405447
40543b:	8b 4e 20             	mov    0x20(%esi),%ecx
40543e:	ff 15 20 f2 40 00    	call   *0x40f220
405444:	ff 56 20             	call   *0x20(%esi)
405447:	8b bd 58 fe ff ff    	mov    -0x1a8(%ebp),%edi
40544d:	83 c7 08             	add    $0x8,%edi
405450:	89 bd 58 fe ff ff    	mov    %edi,-0x1a8(%ebp)
405456:	8b 07                	mov    (%edi),%eax
405458:	85 c0                	test   %eax,%eax
40545a:	0f 85 6a ff ff ff    	jne    0x4053ca
405460:	39 5d 08             	cmp    %ebx,0x8(%ebp)
405463:	0f 85 3c 02 00 00    	jne    0x4056a5
405469:	6a 40                	push   $0x40
40546b:	8d 85 74 fe ff ff    	lea    -0x18c(%ebp),%eax
405471:	50                   	push   %eax
405472:	ff b5 60 fe ff ff    	push   -0x1a0(%ebp)
405478:	ff 15 1c f1 40 00    	call   *0x40f11c
40547e:	68 98 24 40 00       	push   $0x402498
405483:	be 80 00 00 00       	mov    $0x80,%esi
405488:	89 9d 40 fe ff ff    	mov    %ebx,-0x1c0(%ebp)
40548e:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
405494:	56                   	push   %esi
405495:	50                   	push   %eax
405496:	ff 15 e8 f1 40 00    	call   *0x40f1e8
40549c:	83 c4 0c             	add    $0xc,%esp
40549f:	8b c8                	mov    %eax,%ecx
4054a1:	e8 c3 16 00 00       	call   0x406b69
4054a6:	8d 85 74 fe ff ff    	lea    -0x18c(%ebp),%eax
4054ac:	50                   	push   %eax
4054ad:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
4054b3:	56                   	push   %esi
4054b4:	50                   	push   %eax
4054b5:	ff 15 e4 f1 40 00    	call   *0x40f1e4
4054bb:	83 c4 0c             	add    $0xc,%esp
4054be:	8b c8                	mov    %eax,%ecx
4054c0:	e8 a4 16 00 00       	call   0x406b69
4054c5:	68 6c 24 40 00       	push   $0x40246c
4054ca:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
4054d0:	56                   	push   %esi
4054d1:	50                   	push   %eax
4054d2:	ff 15 e4 f1 40 00    	call   *0x40f1e4
4054d8:	83 c4 0c             	add    $0xc,%esp
4054db:	8b c8                	mov    %eax,%ecx
4054dd:	e8 87 16 00 00       	call   0x406b69
4054e2:	8d 8d 58 fe ff ff    	lea    -0x1a8(%ebp),%ecx
4054e8:	89 9d 4c fe ff ff    	mov    %ebx,-0x1b4(%ebp)
4054ee:	51                   	push   %ecx
4054ef:	68 19 00 02 00       	push   $0x20019
4054f4:	53                   	push   %ebx
4054f5:	8d 8d f4 fe ff ff    	lea    -0x10c(%ebp),%ecx
4054fb:	89 9d 50 fe ff ff    	mov    %ebx,-0x1b0(%ebp)
405501:	b8 00 00 00 80       	mov    $0x80000000,%eax
405506:	89 9d 60 fe ff ff    	mov    %ebx,-0x1a0(%ebp)