405103:	77 38                	ja     0x40513d
405105:	8b 45 08             	mov    0x8(%ebp),%eax
405108:	2b d7                	sub    %edi,%edx
40510a:	3b c2                	cmp    %edx,%eax
40510c:	77 2f                	ja     0x40513d
40510e:	85 ff                	test   %edi,%edi
405110:	74 2e                	je     0x405140
405112:	8d 4a 01             	lea    0x1(%edx),%ecx
405115:	8d 0c 4b             	lea    (%ebx,%ecx,2),%ecx
405118:	8d 04 43             	lea    (%ebx,%eax,2),%eax
40511b:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40511e:	8b 5d 0c             	mov    0xc(%ebp),%ebx
405121:	2b c8                	sub    %eax,%ecx
405123:	d1 f9                	sar    $1,%ecx
405125:	74 16                	je     0x40513d
405127:	0f b7 13             	movzwl (%ebx),%edx
40512a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
405130:	66 39 10             	cmp    %dx,(%eax)
405133:	74 12                	je     0x405147
405135:	83 c0 02             	add    $0x2,%eax
405138:	83 e9 01             	sub    $0x1,%ecx
40513b:	75 f3                	jne    0x405130
40513d:	83 c8 ff             	or     $0xffffffff,%eax
405140:	5f                   	pop    %edi
405141:	5e                   	pop    %esi
405142:	5b                   	pop    %ebx
405143:	8b e5                	mov    %ebp,%esp
405145:	5d                   	pop    %ebp
405146:	c3                   	ret
405147:	85 c0                	test   %eax,%eax
405149:	74 f2                	je     0x40513d
40514b:	8b f7                	mov    %edi,%esi
40514d:	8b d3                	mov    %ebx,%edx
40514f:	85 ff                	test   %edi,%edi
405151:	74 15                	je     0x405168
405153:	8b f8                	mov    %eax,%edi
405155:	2b fb                	sub    %ebx,%edi
405157:	66 8b 0c 17          	mov    (%edi,%edx,1),%cx
40515b:	66 3b 0a             	cmp    (%edx),%cx
40515e:	75 14                	jne    0x405174
405160:	83 c2 02             	add    $0x2,%edx
405163:	83 ee 01             	sub    $0x1,%esi
405166:	75 ef                	jne    0x405157
405168:	2b 45 f8             	sub    -0x8(%ebp),%eax
40516b:	5f                   	pop    %edi
40516c:	5e                   	pop    %esi
40516d:	d1 f8                	sar    $1,%eax
40516f:	5b                   	pop    %ebx
405170:	8b e5                	mov    %ebp,%esp
405172:	5d                   	pop    %ebp
405173:	c3                   	ret
405174:	8b 7d 10             	mov    0x10(%ebp),%edi
405177:	83 c0 02             	add    $0x2,%eax
40517a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40517d:	eb a2                	jmp    0x405121
40517f:	cc                   	int3
405180:	55                   	push   %ebp
405181:	8b ec                	mov    %esp,%ebp
405183:	83 ec 20             	sub    $0x20,%esp
405186:	8b 45 18             	mov    0x18(%ebp),%eax
405189:	53                   	push   %ebx
40518a:	56                   	push   %esi
40518b:	8b 75 08             	mov    0x8(%ebp),%esi
40518e:	57                   	push   %edi
40518f:	8b f9                	mov    %ecx,%edi
405191:	89 45 ec             	mov    %eax,-0x14(%ebp)
405194:	b9 fe ff ff 7f       	mov    $0x7ffffffe,%ecx
405199:	8b c1                	mov    %ecx,%eax
40519b:	8b 57 10             	mov    0x10(%edi),%edx
40519e:	2b c2                	sub    %edx,%eax
4051a0:	89 55 fc             	mov    %edx,-0x4(%ebp)
4051a3:	3b c6                	cmp    %esi,%eax
4051a5:	0f 82 31 01 00 00    	jb     0x4052dc
4051ab:	8b 5f 14             	mov    0x14(%edi),%ebx
4051ae:	8d 04 32             	lea    (%edx,%esi,1),%eax
4051b1:	8b f0                	mov    %eax,%esi
4051b3:	89 45 f8             	mov    %eax,-0x8(%ebp)
4051b6:	83 ce 07             	or     $0x7,%esi
4051b9:	3b f1                	cmp    %ecx,%esi
4051bb:	76 04                	jbe    0x4051c1
4051bd:	8b f1                	mov    %ecx,%esi
4051bf:	eb 18                	jmp    0x4051d9
4051c1:	8b c3                	mov    %ebx,%eax
4051c3:	d1 e8                	shr    $1,%eax
4051c5:	2b c8                	sub    %eax,%ecx
4051c7:	3b d9                	cmp    %ecx,%ebx
4051c9:	76 07                	jbe    0x4051d2
4051cb:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
4051d0:	eb 07                	jmp    0x4051d9
4051d2:	03 c3                	add    %ebx,%eax
4051d4:	3b f0                	cmp    %eax,%esi
4051d6:	0f 42 f0             	cmovb  %eax,%esi
4051d9:	8d 46 01             	lea    0x1(%esi),%eax
4051dc:	8b cf                	mov    %edi,%ecx
4051de:	50                   	push   %eax
4051df:	e8 cc de ff ff       	call   0x4030b0
4051e4:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
4051e7:	8b 55 10             	mov    0x10(%ebp),%edx
4051ea:	89 45 f4             	mov    %eax,-0xc(%ebp)
4051ed:	8b 45 f8             	mov    -0x8(%ebp),%eax
4051f0:	89 47 10             	mov    %eax,0x10(%edi)
4051f3:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
4051f6:	89 77 14             	mov    %esi,0x14(%edi)
4051f9:	8d 34 12             	lea    (%edx,%edx,1),%esi
4051fc:	89 45 f0             	mov    %eax,-0x10(%ebp)
4051ff:	8b 45 f4             	mov    -0xc(%ebp),%eax
405202:	03 c6                	add    %esi,%eax
405204:	89 75 e0             	mov    %esi,-0x20(%ebp)
405207:	8b 75 fc             	mov    -0x4(%ebp),%esi
40520a:	2b f2                	sub    %edx,%esi
40520c:	89 45 e8             	mov    %eax,-0x18(%ebp)
40520f:	8b 45 14             	mov    0x14(%ebp),%eax
405212:	2b f0                	sub    %eax,%esi
405214:	8d 34 75 02 00 00 00 	lea    0x2(,%esi,2),%esi
40521b:	89 75 fc             	mov    %esi,-0x4(%ebp)
40521e:	8d 34 02             	lea    (%edx,%eax,1),%esi
405221:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
405224:	03 f6                	add    %esi,%esi
405226:	8b 4d f4             	mov    -0xc(%ebp),%ecx
405229:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40522c:	8d 04 41             	lea    (%ecx,%eax,2),%eax
40522f:	89 45 f8             	mov    %eax,-0x8(%ebp)
405232:	83 fb 08             	cmp    $0x8,%ebx
405235:	72 6a                	jb     0x4052a1
405237:	8b 37                	mov    (%edi),%esi
405239:	8d 04 12             	lea    (%edx,%edx,1),%eax
40523c:	50                   	push   %eax
40523d:	56                   	push   %esi
40523e:	51                   	push   %ecx
40523f:	e8 3c 64 01 00       	call   0x41b680
405244:	ff 75 f0             	push   -0x10(%ebp)
405247:	ff 75 ec             	push   -0x14(%ebp)
40524a:	ff 75 e8             	push   -0x18(%ebp)
40524d:	e8 2e 64 01 00       	call   0x41b680
405252:	ff 75 fc             	push   -0x4(%ebp)
405255:	8b 45 e4             	mov    -0x1c(%ebp),%eax
405258:	03 c6                	add    %esi,%eax
40525a:	50                   	push   %eax
40525b:	ff 75 f8             	push   -0x8(%ebp)
40525e:	e8 1d 64 01 00       	call   0x41b680
405263:	8d 0c 5d 02 00 00 00 	lea    0x2(,%ebx,2),%ecx
40526a:	83 c4 24             	add    $0x24,%esp
40526d:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
405273:	72 12                	jb     0x405287
405275:	8b 56 fc             	mov    -0x4(%esi),%edx
405278:	83 c1 23             	add    $0x23,%ecx
40527b:	2b f2                	sub    %edx,%esi
40527d:	8d 46 fc             	lea    -0x4(%esi),%eax
405280:	83 f8 1f             	cmp    $0x1f,%eax
405283:	77 5c                	ja     0x4052e1
405285:	8b f2                	mov    %edx,%esi
405287:	51                   	push   %ecx
405288:	56                   	push   %esi
405289:	e8 2a 49 01 00       	call   0x419bb8
40528e:	8b 45 f4             	mov    -0xc(%ebp),%eax
405291:	83 c4 08             	add    $0x8,%esp
405294:	89 07                	mov    %eax,(%edi)
405296:	8b c7                	mov    %edi,%eax
405298:	5f                   	pop    %edi
405299:	5e                   	pop    %esi
40529a:	5b                   	pop    %ebx
40529b:	8b e5                	mov    %ebp,%esp
40529d:	5d                   	pop    %ebp
40529e:	c2 18 00             	ret    $0x18
4052a1:	8b 45 e0             	mov    -0x20(%ebp),%eax
4052a4:	50                   	push   %eax
4052a5:	57                   	push   %edi
4052a6:	51                   	push   %ecx
4052a7:	e8 d4 63 01 00       	call   0x41b680
4052ac:	ff 75 f0             	push   -0x10(%ebp)
4052af:	ff 75 ec             	push   -0x14(%ebp)
4052b2:	ff 75 e8             	push   -0x18(%ebp)
4052b5:	e8 c6 63 01 00       	call   0x41b680
4052ba:	ff 75 fc             	push   -0x4(%ebp)
4052bd:	8d 0c 3e             	lea    (%esi,%edi,1),%ecx
4052c0:	51                   	push   %ecx
4052c1:	ff 75 f8             	push   -0x8(%ebp)
4052c4:	e8 b7 63 01 00       	call   0x41b680
4052c9:	8b 45 f4             	mov    -0xc(%ebp),%eax
4052cc:	83 c4 24             	add    $0x24,%esp
4052cf:	89 07                	mov    %eax,(%edi)
4052d1:	8b c7                	mov    %edi,%eax
4052d3:	5f                   	pop    %edi
4052d4:	5e                   	pop    %esi
4052d5:	5b                   	pop    %ebx
4052d6:	8b e5                	mov    %ebp,%esp
4052d8:	5d                   	pop    %ebp
4052d9:	c2 18 00             	ret    $0x18
4052dc:	e8 7f c0 ff ff       	call   0x401360
4052e1:	e8 ad a6 01 00       	call   0x41f993
4052e6:	cc                   	int3
4052e7:	cc                   	int3
4052e8:	cc                   	int3
4052e9:	cc                   	int3
4052ea:	cc                   	int3
4052eb:	cc                   	int3
4052ec:	cc                   	int3
4052ed:	cc                   	int3
4052ee:	cc                   	int3
4052ef:	cc                   	int3
4052f0:	55                   	push   %ebp
4052f1:	8b ec                	mov    %esp,%ebp
4052f3:	83 ec 10             	sub    $0x10,%esp
4052f6:	8b 45 10             	mov    0x10(%ebp),%eax
4052f9:	53                   	push   %ebx
4052fa:	56                   	push   %esi
4052fb:	89 45 f4             	mov    %eax,-0xc(%ebp)
4052fe:	be 07 00 00 00       	mov    $0x7,%esi
405303:	8b 45 14             	mov    0x14(%ebp),%eax
405306:	57                   	push   %edi
405307:	8b f9                	mov    %ecx,%edi
405309:	89 45 f8             	mov    %eax,-0x8(%ebp)
40530c:	03 45 1c             	add    0x1c(%ebp),%eax
40530f:	8b df                	mov    %edi,%ebx
405311:	8b 4d 18             	mov    0x18(%ebp),%ecx
405314:	89 4d f0             	mov    %ecx,-0x10(%ebp)
405317:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
40531d:	c7 47 10 00 00 00 00 	movl   $0x0,0x10(%edi)
405324:	c7 47 14 00 00 00 00 	movl   $0x0,0x14(%edi)
40532b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40532e:	3b c6                	cmp    %esi,%eax
405330:	76 30                	jbe    0x405362
405332:	8b f0                	mov    %eax,%esi
405334:	83 ce 07             	or     $0x7,%esi
405337:	81 fe fe ff ff 7f    	cmp    $0x7ffffffe,%esi
40533d:	76 07                	jbe    0x405346
40533f:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
405344:	eb 0a                	jmp    0x405350
405346:	b8 0a 00 00 00       	mov    $0xa,%eax
40534b:	3b f0                	cmp    %eax,%esi
40534d:	0f 42 f0             	cmovb  %eax,%esi
405350:	8d 46 01             	lea    0x1(%esi),%eax
405353:	8b cf                	mov    %edi,%ecx
405355:	50                   	push   %eax
405356:	e8 55 dd ff ff       	call   0x4030b0
40535b:	8b d8                	mov    %eax,%ebx
40535d:	8b 45 fc             	mov    -0x4(%ebp),%eax
405360:	89 1f                	mov    %ebx,(%edi)
405362:	89 77 14             	mov    %esi,0x14(%edi)
405365:	8b 75 f8             	mov    -0x8(%ebp),%esi
405368:	03 f6                	add    %esi,%esi
40536a:	89 47 10             	mov    %eax,0x10(%edi)
40536d:	56                   	push   %esi
40536e:	ff 75 f4             	push   -0xc(%ebp)
405371:	53                   	push   %ebx
405372:	e8 09 63 01 00       	call   0x41b680
405377:	8b 45 1c             	mov    0x1c(%ebp),%eax
40537a:	8d 0c 00             	lea    (%eax,%eax,1),%ecx
40537d:	51                   	push   %ecx
40537e:	ff 75 f0             	push   -0x10(%ebp)
405381:	8d 0c 1e             	lea    (%esi,%ebx,1),%ecx
405384:	51                   	push   %ecx
405385:	e8 f6 62 01 00       	call   0x41b680
40538a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40538d:	83 c4 18             	add    $0x18,%esp
405390:	33 c9                	xor    %ecx,%ecx
405392:	66 89 0c 43          	mov    %cx,(%ebx,%eax,2)
405396:	8b c7                	mov    %edi,%eax
405398:	5f                   	pop    %edi
405399:	5e                   	pop    %esi
40539a:	5b                   	pop    %ebx
40539b:	8b e5                	mov    %ebp,%esp
40539d:	5d                   	pop    %ebp
40539e:	c2 18 00             	ret    $0x18
4053a1:	cc                   	int3
4053a2:	cc                   	int3
4053a3:	cc                   	int3
4053a4:	cc                   	int3
4053a5:	cc                   	int3
4053a6:	cc                   	int3
4053a7:	cc                   	int3
4053a8:	cc                   	int3
4053a9:	cc                   	int3
4053aa:	cc                   	int3
4053ab:	cc                   	int3
4053ac:	cc                   	int3
4053ad:	cc                   	int3
4053ae:	cc                   	int3
4053af:	cc                   	int3
4053b0:	55                   	push   %ebp
4053b1:	8b ec                	mov    %esp,%ebp
4053b3:	83 ec 0c             	sub    $0xc,%esp
4053b6:	8b 55 08             	mov    0x8(%ebp),%edx
4053b9:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
4053be:	53                   	push   %ebx
4053bf:	8b d9                	mov    %ecx,%ebx
4053c1:	56                   	push   %esi
4053c2:	57                   	push   %edi
4053c3:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4053c6:	8b 33                	mov    (%ebx),%esi
4053c8:	2b d6                	sub    %esi,%edx
4053ca:	8b 4b 04             	mov    0x4(%ebx),%ecx
4053cd:	f7 ea                	imul   %edx
4053cf:	2b ce                	sub    %esi,%ecx
4053d1:	c1 fa 02             	sar    $0x2,%edx
4053d4:	8b c2                	mov    %edx,%eax
4053d6:	c1 e8 1f             	shr    $0x1f,%eax
4053d9:	03 c2                	add    %edx,%eax
4053db:	89 45 f8             	mov    %eax,-0x8(%ebp)
4053de:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
4053e3:	f7 e9                	imul   %ecx
4053e5:	c1 fa 02             	sar    $0x2,%edx
4053e8:	8b c2                	mov    %edx,%eax
4053ea:	c1 e8 1f             	shr    $0x1f,%eax
4053ed:	03 c2                	add    %edx,%eax
4053ef:	89 45 f4             	mov    %eax,-0xc(%ebp)
4053f2:	3d aa aa aa 0a       	cmp    $0xaaaaaaa,%eax
4053f7:	0f 84 1b 01 00 00    	je     0x405518
4053fd:	8b 4b 08             	mov    0x8(%ebx),%ecx
405400:	8d 78 01             	lea    0x1(%eax),%edi
405403:	2b ce                	sub    %esi,%ecx
405405:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
40540a:	f7 e9                	imul   %ecx
40540c:	b8 aa aa aa 0a       	mov    $0xaaaaaaa,%eax
405411:	c1 fa 02             	sar    $0x2,%edx
405414:	8b ca                	mov    %edx,%ecx
405416:	c1 e9 1f             	shr    $0x1f,%ecx
405419:	03 ca                	add    %edx,%ecx
40541b:	8b d1                	mov    %ecx,%edx
40541d:	d1 ea                	shr    $1,%edx
40541f:	2b c2                	sub    %edx,%eax
405421:	3b c8                	cmp    %eax,%ecx
405423:	0f 87 ea 00 00 00    	ja     0x405513
405429:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
40542c:	8b f7                	mov    %edi,%esi
40542e:	3b c7                	cmp    %edi,%eax
405430:	0f 43 f0             	cmovae %eax,%esi
405433:	81 fe aa aa aa 0a    	cmp    $0xaaaaaaa,%esi
405439:	0f 87 d4 00 00 00    	ja     0x405513
40543f:	8d 04 76             	lea    (%esi,%esi,2),%eax
405442:	c1 e0 03             	shl    $0x3,%eax
405445:	3d 00 10 00 00       	cmp    $0x1000,%eax
40544a:	72 27                	jb     0x405473
40544c:	8d 48 23             	lea    0x23(%eax),%ecx
40544f:	3b c8                	cmp    %eax,%ecx
405451:	0f 86 bc 00 00 00    	jbe    0x405513
405457:	51                   	push   %ecx
405458:	e8 69 47 01 00       	call   0x419bc6
40545d:	83 c4 04             	add    $0x4,%esp
405460:	85 c0                	test   %eax,%eax
405462:	0f 84 b5 00 00 00    	je     0x40551d
405468:	8d 78 23             	lea    0x23(%eax),%edi
40546b:	83 e7 e0             	and    $0xffffffe0,%edi
40546e:	89 47 fc             	mov    %eax,-0x4(%edi)
405471:	eb 13                	jmp    0x405486
405473:	85 c0                	test   %eax,%eax
405475:	74 0d                	je     0x405484
405477:	50                   	push   %eax
405478:	e8 49 47 01 00       	call   0x419bc6
40547d:	83 c4 04             	add    $0x4,%esp