52f158:	e8 83 29 01 00       	call   0x541ae0
52f15d:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
52f160:	83 c4 1c             	add    $0x1c,%esp
52f163:	8b 53 6c             	mov    0x6c(%ebx),%edx
52f166:	85 c9                	test   %ecx,%ecx
52f168:	79 03                	jns    0x52f16d
52f16a:	8d 4a ff             	lea    -0x1(%edx),%ecx
52f16d:	8b 03                	mov    (%ebx),%eax
52f16f:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
52f173:	74 07                	je     0x52f17c
52f175:	b8 ec 02 73 00       	mov    $0x7302ec,%eax
52f17a:	eb 09                	jmp    0x52f185
52f17c:	8b 43 68             	mov    0x68(%ebx),%eax
52f17f:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
52f182:	8d 04 88             	lea    (%eax,%ecx,4),%eax
52f185:	57                   	push   %edi
52f186:	6a 0f                	push   $0xf
52f188:	53                   	push   %ebx
52f189:	89 50 08             	mov    %edx,0x8(%eax)
52f18c:	e8 ef 28 01 00       	call   0x541a80
52f191:	83 c4 0c             	add    $0xc,%esp
52f194:	8b 55 d8             	mov    -0x28(%ebp),%edx
52f197:	8b 4b 6c             	mov    0x6c(%ebx),%ecx
52f19a:	0f bf 42 2c          	movswl 0x2c(%edx),%eax
52f19e:	8d 57 01             	lea    0x1(%edi),%edx
52f1a1:	48                   	dec    %eax
52f1a2:	89 45 b4             	mov    %eax,-0x4c(%ebp)
52f1a5:	39 4b 70             	cmp    %ecx,0x70(%ebx)
52f1a8:	7f 15                	jg     0x52f1bf
52f1aa:	50                   	push   %eax
52f1ab:	52                   	push   %edx
52f1ac:	ff 75 a0             	push   -0x60(%ebp)
52f1af:	6a 4d                	push   $0x4d
52f1b1:	53                   	push   %ebx
52f1b2:	e8 49 73 fd ff       	call   0x506500
52f1b7:	83 c4 14             	add    $0x14,%esp
52f1ba:	8d 57 01             	lea    0x1(%edi),%edx
52f1bd:	eb 30                	jmp    0x52f1ef
52f1bf:	8b 75 a0             	mov    -0x60(%ebp),%esi
52f1c2:	8d 41 01             	lea    0x1(%ecx),%eax
52f1c5:	89 43 6c             	mov    %eax,0x6c(%ebx)
52f1c8:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
52f1cb:	8b 43 68             	mov    0x68(%ebx),%eax
52f1ce:	89 74 88 04          	mov    %esi,0x4(%eax,%ecx,4)
52f1d2:	8b 75 b4             	mov    -0x4c(%ebp),%esi
52f1d5:	89 74 88 0c          	mov    %esi,0xc(%eax,%ecx,4)
52f1d9:	8b 75 94             	mov    -0x6c(%ebp),%esi
52f1dc:	c7 04 88 4d 00 00 00 	movl   $0x4d,(%eax,%ecx,4)
52f1e3:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
52f1e7:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
52f1ee:	00
52f1ef:	8b 45 d8             	mov    -0x28(%ebp),%eax
52f1f2:	f6 40 24 60          	testb  $0x60,0x24(%eax)
52f1f6:	74 0e                	je     0x52f206
52f1f8:	50                   	push   %eax
52f1f9:	52                   	push   %edx
52f1fa:	56                   	push   %esi
52f1fb:	e8 c0 09 ff ff       	call   0x51fbc0
52f200:	8b 45 d8             	mov    -0x28(%ebp),%eax
52f203:	83 c4 0c             	add    $0xc,%esp
52f206:	83 bd 58 ff ff ff 00 	cmpl   $0x0,-0xa8(%ebp)
52f20d:	75 0e                	jne    0x52f21d
52f20f:	8d 4f 01             	lea    0x1(%edi),%ecx
52f212:	51                   	push   %ecx
52f213:	50                   	push   %eax
52f214:	53                   	push   %ebx
52f215:	e8 26 eb 00 00       	call   0x53dd40
52f21a:	83 c4 0c             	add    $0xc,%esp
52f21d:	ff 75 ac             	push   -0x54(%ebp)
52f220:	8b 55 d8             	mov    -0x28(%ebp),%edx
52f223:	8b cf                	mov    %edi,%ecx
52f225:	ff 75 18             	push   0x18(%ebp)
52f228:	0f bf 42 2a          	movswl 0x2a(%edx),%eax
52f22c:	2b c8                	sub    %eax,%ecx
52f22e:	49                   	dec    %ecx
52f22f:	51                   	push   %ecx
52f230:	52                   	push   %edx
52f231:	6a 01                	push   $0x1
52f233:	6a 00                	push   $0x0
52f235:	6a 7d                	push   $0x7d
52f237:	ff b5 6c ff ff ff    	push   -0x94(%ebp)
52f23d:	56                   	push   %esi
52f23e:	e8 ad fb fe ff       	call   0x51edf0
52f243:	8b 4d d8             	mov    -0x28(%ebp),%ecx
52f246:	83 c4 24             	add    $0x24,%esp
52f249:	0f bf 41 2a          	movswl 0x2a(%ecx),%eax
52f24d:	40                   	inc    %eax
52f24e:	83 f8 01             	cmp    $0x1,%eax
52f251:	75 1a                	jne    0x52f26d
52f253:	85 ff                	test   %edi,%edi
52f255:	74 21                	je     0x52f278
52f257:	8a 46 13             	mov    0x13(%esi),%al
52f25a:	3c 08                	cmp    $0x8,%al
52f25c:	73 1a                	jae    0x52f278
52f25e:	0f b6 c0             	movzbl %al,%eax
52f261:	89 bc 86 94 00 00 00 	mov    %edi,0x94(%esi,%eax,4)
52f268:	fe 46 13             	incb   0x13(%esi)
52f26b:	eb 0b                	jmp    0x52f278
52f26d:	3b 46 1c             	cmp    0x1c(%esi),%eax
52f270:	7e 06                	jle    0x52f278
52f272:	89 46 1c             	mov    %eax,0x1c(%esi)
52f275:	89 7e 20             	mov    %edi,0x20(%esi)
52f278:	83 bd 58 ff ff ff 00 	cmpl   $0x0,-0xa8(%ebp)
52f27f:	0f 85 69 02 00 00    	jne    0x52f4ee
52f285:	83 79 38 00          	cmpl   $0x0,0x38(%ecx)
52f289:	74 16                	je     0x52f2a1
52f28b:	ff b5 78 ff ff ff    	push   -0x88(%ebp)
52f291:	6a 00                	push   $0x0
52f293:	6a 48                	push   $0x48
52f295:	53                   	push   %ebx
52f296:	e8 45 28 01 00       	call   0x541ae0
52f29b:	8b 4d d8             	mov    -0x28(%ebp),%ecx
52f29e:	83 c4 10             	add    $0x10,%esp
52f2a1:	8b 45 b0             	mov    -0x50(%ebp),%eax
52f2a4:	85 c0                	test   %eax,%eax
52f2a6:	0f 88 ce 00 00 00    	js     0x52f37a
52f2ac:	80 7d d3 00          	cmpb   $0x0,-0x2d(%ebp)
52f2b0:	74 14                	je     0x52f2c6
52f2b2:	ff 75 c0             	push   -0x40(%ebp)
52f2b5:	50                   	push   %eax
52f2b6:	ff 75 a8             	push   -0x58(%ebp)
52f2b9:	6a 59                	push   $0x59
52f2bb:	53                   	push   %ebx
52f2bc:	e8 7f 28 01 00       	call   0x541b40
52f2c1:	83 c4 14             	add    $0x14,%esp
52f2c4:	eb 48                	jmp    0x52f30e
52f2c6:	83 7d b8 00          	cmpl   $0x0,-0x48(%ebp)
52f2ca:	75 42                	jne    0x52f30e
52f2cc:	8b 55 90             	mov    -0x70(%ebp),%edx
52f2cf:	8d 04 80             	lea    (%eax,%eax,4),%eax
52f2d2:	8b 44 82 04          	mov    0x4(%edx,%eax,4),%eax
52f2d6:	80 38 77             	cmpb   $0x77,(%eax)
52f2d9:	75 26                	jne    0x52f301
52f2db:	83 79 38 00          	cmpl   $0x0,0x38(%ecx)
52f2df:	75 20                	jne    0x52f301
52f2e1:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
52f2e7:	ff 75 c0             	push   -0x40(%ebp)
52f2ea:	ff 75 9c             	push   -0x64(%ebp)
52f2ed:	6a 78                	push   $0x78
52f2ef:	53                   	push   %ebx
52f2f0:	e8 4b 28 01 00       	call   0x541b40
52f2f5:	83 c4 14             	add    $0x14,%esp
52f2f8:	c6 45 c7 01          	movb   $0x1,-0x39(%ebp)
52f2fc:	e9 b5 00 00 00       	jmp    0x52f3b6
52f301:	ff 75 c0             	push   -0x40(%ebp)
52f304:	50                   	push   %eax
52f305:	56                   	push   %esi
52f306:	e8 c5 48 ff ff       	call   0x523bd0
52f30b:	83 c4 0c             	add    $0xc,%esp
52f30e:	8b 7d d8             	mov    -0x28(%ebp),%edi
52f311:	83 7f 38 00          	cmpl   $0x0,0x38(%edi)
52f315:	75 3e                	jne    0x52f355
52f317:	ff 75 c0             	push   -0x40(%ebp)
52f31a:	6a 33                	push   $0x33
52f31c:	53                   	push   %ebx
52f31d:	e8 5e 27 01 00       	call   0x541a80
52f322:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
52f328:	8b f0                	mov    %eax,%esi
52f32a:	ff 75 c0             	push   -0x40(%ebp)
52f32d:	ff 75 9c             	push   -0x64(%ebp)
52f330:	6a 78                	push   $0x78
52f332:	53                   	push   %ebx
52f333:	e8 08 28 01 00       	call   0x541b40
52f338:	56                   	push   %esi
52f339:	53                   	push   %ebx
52f33a:	e8 21 b4 01 00       	call   0x54a760
52f33f:	8b 75 94             	mov    -0x6c(%ebp),%esi
52f342:	83 c4 28             	add    $0x28,%esp
52f345:	ff 75 c0             	push   -0x40(%ebp)
52f348:	6a 0f                	push   $0xf
52f34a:	53                   	push   %ebx
52f34b:	e8 30 27 01 00       	call   0x541a80
52f350:	83 c4 0c             	add    $0xc,%esp
52f353:	eb 64                	jmp    0x52f3b9
52f355:	8b 43 6c             	mov    0x6c(%ebx),%eax
52f358:	83 c0 02             	add    $0x2,%eax
52f35b:	50                   	push   %eax
52f35c:	ff 75 c0             	push   -0x40(%ebp)
52f35f:	6a 32                	push   $0x32
52f361:	53                   	push   %ebx
52f362:	e8 79 27 01 00       	call   0x541ae0
52f367:	83 c4 10             	add    $0x10,%esp
52f36a:	ff 75 c0             	push   -0x40(%ebp)
52f36d:	6a 0f                	push   $0xf
52f36f:	53                   	push   %ebx
52f370:	e8 0b 27 01 00       	call   0x541a80
52f375:	83 c4 0c             	add    $0xc,%esp
52f378:	eb 3f                	jmp    0x52f3b9
52f37a:	83 79 38 00          	cmpl   $0x0,0x38(%ecx)
52f37e:	75 26                	jne    0x52f3a6
52f380:	80 bd 50 ff ff ff 00 	cmpb   $0x0,-0xb0(%ebp)
52f387:	75 1d                	jne    0x52f3a6
52f389:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
52f38f:	ff 75 c0             	push   -0x40(%ebp)
52f392:	ff 75 9c             	push   -0x64(%ebp)
52f395:	6a 78                	push   $0x78
52f397:	53                   	push   %ebx
52f398:	e8 a3 27 01 00       	call   0x541b40
52f39d:	83 c4 14             	add    $0x14,%esp
52f3a0:	c6 45 c7 01          	movb   $0x1,-0x39(%ebp)
52f3a4:	eb 10                	jmp    0x52f3b6
52f3a6:	ff 75 c0             	push   -0x40(%ebp)
52f3a9:	6a 00                	push   $0x0
52f3ab:	6a 48                	push   $0x48
52f3ad:	53                   	push   %ebx
52f3ae:	e8 2d 27 01 00       	call   0x541ae0
52f3b3:	83 c4 10             	add    $0x10,%esp
52f3b6:	8b 7d d8             	mov    -0x28(%ebp),%edi
52f3b9:	ff 75 c0             	push   -0x40(%ebp)
52f3bc:	ff b5 74 ff ff ff    	push   -0x8c(%ebp)
52f3c2:	56                   	push   %esi
52f3c3:	e8 d8 48 fc ff       	call   0x4f3ca0
52f3c8:	83 c4 0c             	add    $0xc,%esp
52f3cb:	f6 47 24 60          	testb  $0x60,0x24(%edi)
52f3cf:	74 0d                	je     0x52f3de
52f3d1:	57                   	push   %edi
52f3d2:	ff 75 a0             	push   -0x60(%ebp)
52f3d5:	56                   	push   %esi
52f3d6:	e8 e5 07 ff ff       	call   0x51fbc0
52f3db:	83 c4 0c             	add    $0xc,%esp
52f3de:	83 7f 38 00          	cmpl   $0x0,0x38(%edi)
52f3e2:	74 7c                	je     0x52f460
52f3e4:	8b 7f 40             	mov    0x40(%edi),%edi
52f3e7:	85 ff                	test   %edi,%edi
52f3e9:	74 11                	je     0x52f3fc
52f3eb:	8b 85 7c ff ff ff    	mov    -0x84(%ebp),%eax
52f3f1:	39 07                	cmp    %eax,(%edi)
52f3f3:	74 07                	je     0x52f3fc
52f3f5:	8b 7f 18             	mov    0x18(%edi),%edi
52f3f8:	85 ff                	test   %edi,%edi
52f3fa:	75 f5                	jne    0x52f3f1
52f3fc:	8b 55 d8             	mov    -0x28(%ebp),%edx
52f3ff:	52                   	push   %edx
52f400:	56                   	push   %esi
52f401:	e8 6a f4 01 00       	call   0x54e870
52f406:	6a f4                	push   $0xfffffff4
52f408:	57                   	push   %edi
52f409:	8b 7d d8             	mov    -0x28(%ebp),%edi
52f40c:	ff b5 78 ff ff ff    	push   -0x88(%ebp)
52f412:	0f bf 47 2a          	movswl 0x2a(%edi),%eax
52f416:	83 c0 02             	add    $0x2,%eax
52f419:	50                   	push   %eax
52f41a:	6a 01                	push   $0x1
52f41c:	6a 0a                	push   $0xa
52f41e:	53                   	push   %ebx
52f41f:	e8 6c 27 01 00       	call   0x541b90
52f424:	8b 43 6c             	mov    0x6c(%ebx),%eax
52f427:	83 c4 24             	add    $0x24,%esp
52f42a:	85 c0                	test   %eax,%eax
52f42c:	7e 1f                	jle    0x52f44d
52f42e:	8b 4d 18             	mov    0x18(%ebp),%ecx
52f431:	83 f9 0b             	cmp    $0xb,%ecx
52f434:	0f b7 d1             	movzwl %cx,%edx
52f437:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
52f43a:	8b 43 68             	mov    0x68(%ebx),%eax
52f43d:	c7 45 b4 02 00 00 00 	movl   $0x2,-0x4c(%ebp)
52f444:	0f 44 55 b4          	cmove  -0x4c(%ebp),%edx
52f448:	66 89 54 88 ee       	mov    %dx,-0x12(%eax,%ecx,4)
52f44d:	8b 46 74             	mov    0x74(%esi),%eax
52f450:	8b ce                	mov    %esi,%ecx
52f452:	85 c0                	test   %eax,%eax
52f454:	0f 45 c8             	cmovne %eax,%ecx
52f457:	c6 41 15 01          	movb   $0x1,0x15(%ecx)
52f45b:	e9 91 00 00 00       	jmp    0x52f4f1
52f460:	8b 8d 60 ff ff ff    	mov    -0xa0(%ebp),%ecx
52f466:	8d 45 b4             	lea    -0x4c(%ebp),%eax
52f469:	51                   	push   %ecx
52f46a:	6a 00                	push   $0x0
52f46c:	50                   	push   %eax
52f46d:	ff 75 ac             	push   -0x54(%ebp)
52f470:	8b 45 b0             	mov    -0x50(%ebp),%eax
52f473:	ff 75 18             	push   0x18(%ebp)
52f476:	c1 e8 1f             	shr    $0x1f,%eax
52f479:	34 01                	xor    $0x1,%al
52f47b:	0f b6 c0             	movzbl %al,%eax
52f47e:	50                   	push   %eax
52f47f:	6a 00                	push   $0x0
52f481:	ff b5 78 ff ff ff    	push   -0x88(%ebp)
52f487:	ff b5 70 ff ff ff    	push   -0x90(%ebp)
52f48d:	ff 75 9c             	push   -0x64(%ebp)
52f490:	ff 75 8c             	push   -0x74(%ebp)
52f493:	57                   	push   %edi
52f494:	56                   	push   %esi
52f495:	e8 46 b0 ff ff       	call   0x52a4e0
52f49a:	6a 00                	push   $0x0
52f49c:	6a 00                	push   $0x0
52f49e:	ff b5 78 ff ff ff    	push   -0x88(%ebp)
52f4a4:	6a 00                	push   $0x0
52f4a6:	57                   	push   %edi
52f4a7:	56                   	push   %esi
52f4a8:	e8 33 a0 ff ff       	call   0x5294e0
52f4ad:	83 c4 4c             	add    $0x4c,%esp
52f4b0:	83 7d b4 00          	cmpl   $0x0,-0x4c(%ebp)
52f4b4:	74 0d                	je     0x52f4c3
52f4b6:	83 bb d8 00 00 00 00 	cmpl   $0x0,0xd8(%ebx)
52f4bd:	74 04                	je     0x52f4c3
52f4bf:	33 c0                	xor    %eax,%eax
52f4c1:	eb 05                	jmp    0x52f4c8
52f4c3:	b8 01 00 00 00       	mov    $0x1,%eax
52f4c8:	50                   	push   %eax
52f4c9:	0f b6 45 c7          	movzbl -0x39(%ebp),%eax
52f4cd:	50                   	push   %eax
52f4ce:	6a 00                	push   $0x0
52f4d0:	ff 75 8c             	push   -0x74(%ebp)
52f4d3:	ff b5 78 ff ff ff    	push   -0x88(%ebp)
52f4d9:	ff b5 70 ff ff ff    	push   -0x90(%ebp)
52f4df:	ff 75 9c             	push   -0x64(%ebp)
52f4e2:	57                   	push   %edi
52f4e3:	56                   	push   %esi
52f4e4:	e8 b7 04 ff ff       	call   0x51f9a0
52f4e9:	83 c4 24             	add    $0x24,%esp
52f4ec:	eb 03                	jmp    0x52f4f1
52f4ee:	8b 7d d8             	mov    -0x28(%ebp),%edi
52f4f1:	8b 85 54 ff ff ff    	mov    -0xac(%ebp),%eax
52f4f7:	85 c0                	test   %eax,%eax
52f4f9:	74 0e                	je     0x52f509
52f4fb:	6a 01                	push   $0x1
52f4fd:	50                   	push   %eax
52f4fe:	6a 52                	push   $0x52
52f500:	53                   	push   %ebx
52f501:	e8 da 25 01 00       	call   0x541ae0
52f506:	83 c4 10             	add    $0x10,%esp
52f509:	8b 95 6c ff ff ff    	mov    -0x94(%ebp),%edx
52f50f:	85 d2                	test   %edx,%edx
52f511:	74 24                	je     0x52f537
52f513:	ff 75 ac             	push   -0x54(%ebp)
52f516:	0f bf 47 2a          	movswl 0x2a(%edi),%eax
52f51a:	ff 75 18             	push   0x18(%ebp)
52f51d:	8b 4d a0             	mov    -0x60(%ebp),%ecx
52f520:	2b c8                	sub    %eax,%ecx
52f522:	83 e9 02             	sub    $0x2,%ecx
52f525:	51                   	push   %ecx
52f526:	57                   	push   %edi
52f527:	6a 02                	push   $0x2
52f529:	6a 00                	push   $0x0
52f52b:	6a 7d                	push   $0x7d
52f52d:	52                   	push   %edx
52f52e:	56                   	push   %esi
52f52f:	e8 bc f8 fe ff       	call   0x51edf0
52f534:	83 c4 24             	add    $0x24,%esp
52f537:	8b 4b 0c             	mov    0xc(%ebx),%ecx
52f53a:	8b 55 ac             	mov    -0x54(%ebp),%edx
52f53d:	f7 d2                	not    %edx
52f53f:	8b 41 3c             	mov    0x3c(%ecx),%eax
52f542:	03 41 38             	add    0x38(%ecx),%eax
52f545:	79 0d                	jns    0x52f554
52f547:	52                   	push   %edx
52f548:	53                   	push   %ebx
52f549:	51                   	push   %ecx
52f54a:	e8 51 42 fe ff       	call   0x5137a0