40a245:	e8 cb d3 ff ff       	call   0x407615
40a24a:	cc                   	int3
40a24b:	cc                   	int3
40a24c:	cc                   	int3
40a24d:	cc                   	int3
40a24e:	cc                   	int3
40a24f:	cc                   	int3
40a250:	6a 2c                	push   $0x2c
40a252:	e8 e5 c2 ff ff       	call   0x40653c
40a257:	c3                   	ret
40a258:	cc                   	int3
40a259:	cc                   	int3
40a25a:	cc                   	int3
40a25b:	cc                   	int3
40a25c:	cc                   	int3
40a25d:	cc                   	int3
40a25e:	cc                   	int3
40a25f:	cc                   	int3
40a260:	8b ff                	mov    %edi,%edi
40a262:	56                   	push   %esi
40a263:	8b f1                	mov    %ecx,%esi
40a265:	68 ff ff ff 7f       	push   $0x7fffffff
40a26a:	6a 02                	push   $0x2
40a26c:	8b 4e 08             	mov    0x8(%esi),%ecx
40a26f:	e8 4d c9 ff ff       	call   0x406bc1
40a274:	8b 4e 08             	mov    0x8(%esi),%ecx
40a277:	6a 00                	push   $0x0
40a279:	e8 12 c8 ff ff       	call   0x406a90
40a27e:	8b 4e 08             	mov    0x8(%esi),%ecx
40a281:	6a 01                	push   $0x1
40a283:	e8 c8 c7 ff ff       	call   0x406a50
40a288:	50                   	push   %eax
40a289:	8d 4e 18             	lea    0x18(%esi),%ecx
40a28c:	e8 10 c2 ff ff       	call   0x4064a1
40a291:	5e                   	pop    %esi
40a292:	c3                   	ret
40a293:	6a 4c                	push   $0x4c
40a295:	b8 c4 f0 40 00       	mov    $0x40f0c4,%eax
40a29a:	e8 e2 43 00 00       	call   0x40e681
40a29f:	8b d9                	mov    %ecx,%ebx
40a2a1:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a2a4:	33 c9                	xor    %ecx,%ecx
40a2a6:	8b 45 08             	mov    0x8(%ebp),%eax
40a2a9:	89 7d cc             	mov    %edi,-0x34(%ebp)
40a2ac:	89 45 c8             	mov    %eax,-0x38(%ebp)
40a2af:	89 4d ac             	mov    %ecx,-0x54(%ebp)
40a2b2:	89 4d b0             	mov    %ecx,-0x50(%ebp)
40a2b5:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
40a2b8:	89 4d b8             	mov    %ecx,-0x48(%ebp)
40a2bb:	8d 73 18             	lea    0x18(%ebx),%esi
40a2be:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40a2c1:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a2c5:	72 04                	jb     0x40a2cb
40a2c7:	8b 0e                	mov    (%esi),%ecx
40a2c9:	eb 02                	jmp    0x40a2cd
40a2cb:	8b ce                	mov    %esi,%ecx
40a2cd:	8d 55 d0             	lea    -0x30(%ebp),%edx
40a2d0:	52                   	push   %edx
40a2d1:	8d 55 b0             	lea    -0x50(%ebp),%edx
40a2d4:	52                   	push   %edx
40a2d5:	51                   	push   %ecx
40a2d6:	50                   	push   %eax
40a2d7:	33 d2                	xor    %edx,%edx
40a2d9:	e8 b9 de ff ff       	call   0x408197
40a2de:	85 c0                	test   %eax,%eax
40a2e0:	0f 85 ea 03 00 00    	jne    0x40a6d0
40a2e6:	8b 45 d0             	mov    -0x30(%ebp),%eax
40a2e9:	83 78 0c 02          	cmpl   $0x2,0xc(%eax)
40a2ed:	0f 85 d3 03 00 00    	jne    0x40a6c6
40a2f3:	8b 00                	mov    (%eax),%eax
40a2f5:	83 e8 01             	sub    $0x1,%eax
40a2f8:	74 28                	je     0x40a322
40a2fa:	83 e8 01             	sub    $0x1,%eax
40a2fd:	74 1c                	je     0x40a31b
40a2ff:	83 e8 01             	sub    $0x1,%eax
40a302:	74 10                	je     0x40a314
40a304:	83 e8 01             	sub    $0x1,%eax
40a307:	0f 85 b9 03 00 00    	jne    0x40a6c6
40a30d:	b8 38 3d 40 00       	mov    $0x403d38,%eax
40a312:	eb 13                	jmp    0x40a327
40a314:	b8 00 3d 40 00       	mov    $0x403d00,%eax
40a319:	eb 0c                	jmp    0x40a327
40a31b:	b8 cc 3c 40 00       	mov    $0x403ccc,%eax
40a320:	eb 05                	jmp    0x40a327
40a322:	b8 94 3c 40 00       	mov    $0x403c94,%eax
40a327:	57                   	push   %edi
40a328:	50                   	push   %eax
40a329:	53                   	push   %ebx
40a32a:	e8 19 e0 ff ff       	call   0x408348
40a32f:	83 c4 0c             	add    $0xc,%esp
40a332:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a336:	72 04                	jb     0x40a33c
40a338:	8b 0e                	mov    (%esi),%ecx
40a33a:	eb 02                	jmp    0x40a33e
40a33c:	8b ce                	mov    %esi,%ecx
40a33e:	8d 45 d0             	lea    -0x30(%ebp),%eax
40a341:	33 d2                	xor    %edx,%edx
40a343:	50                   	push   %eax
40a344:	8d 45 b0             	lea    -0x50(%ebp),%eax
40a347:	42                   	inc    %edx
40a348:	50                   	push   %eax
40a349:	51                   	push   %ecx
40a34a:	ff 75 c8             	push   -0x38(%ebp)
40a34d:	e8 45 de ff ff       	call   0x408197
40a352:	85 c0                	test   %eax,%eax
40a354:	74 0a                	je     0x40a360
40a356:	68 6c 3d 40 00       	push   $0x403d6c
40a35b:	e9 75 03 00 00       	jmp    0x40a6d5
40a360:	8b 7d d0             	mov    -0x30(%ebp),%edi
40a363:	83 7f 0c 02          	cmpl   $0x2,0xc(%edi)
40a367:	74 0e                	je     0x40a377
40a369:	68 6c 3d 40 00       	push   $0x403d6c
40a36e:	6a 0e                	push   $0xe
40a370:	6a 0d                	push   $0xd
40a372:	e9 61 03 00 00       	jmp    0x40a6d8
40a377:	ff 37                	push   (%edi)
40a379:	ff 75 cc             	push   -0x34(%ebp)
40a37c:	68 9c 3d 40 00       	push   $0x403d9c
40a381:	53                   	push   %ebx
40a382:	e8 c1 df ff ff       	call   0x408348
40a387:	8b 07                	mov    (%edi),%eax
40a389:	83 c4 10             	add    $0x10,%esp
40a38c:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a390:	89 45 a8             	mov    %eax,-0x58(%ebp)
40a393:	72 04                	jb     0x40a399
40a395:	8b 0e                	mov    (%esi),%ecx
40a397:	eb 02                	jmp    0x40a39b
40a399:	8b ce                	mov    %esi,%ecx
40a39b:	8d 45 d0             	lea    -0x30(%ebp),%eax
40a39e:	50                   	push   %eax
40a39f:	8d 45 b0             	lea    -0x50(%ebp),%eax
40a3a2:	50                   	push   %eax
40a3a3:	51                   	push   %ecx
40a3a4:	ff 75 c8             	push   -0x38(%ebp)
40a3a7:	6a 02                	push   $0x2
40a3a9:	5a                   	pop    %edx
40a3aa:	e8 e8 dd ff ff       	call   0x408197
40a3af:	85 c0                	test   %eax,%eax
40a3b1:	74 0a                	je     0x40a3bd
40a3b3:	68 c0 3d 40 00       	push   $0x403dc0
40a3b8:	e9 18 03 00 00       	jmp    0x40a6d5
40a3bd:	8b 7d d0             	mov    -0x30(%ebp),%edi
40a3c0:	83 7f 0c 04          	cmpl   $0x4,0xc(%edi)
40a3c4:	74 07                	je     0x40a3cd
40a3c6:	68 c0 3d 40 00       	push   $0x403dc0
40a3cb:	eb a1                	jmp    0x40a36e
40a3cd:	8b 4d a8             	mov    -0x58(%ebp),%ecx
40a3d0:	33 d2                	xor    %edx,%edx
40a3d2:	89 55 bc             	mov    %edx,-0x44(%ebp)
40a3d5:	85 c9                	test   %ecx,%ecx
40a3d7:	0f 84 ed 00 00 00    	je     0x40a4ca
40a3dd:	8b 07                	mov    (%edi),%eax
40a3df:	85 c0                	test   %eax,%eax
40a3e1:	74 09                	je     0x40a3ec
40a3e3:	66 39 10             	cmp    %dx,(%eax)
40a3e6:	0f 85 8a 00 00 00    	jne    0x40a476
40a3ec:	8d 55 bc             	lea    -0x44(%ebp),%edx
40a3ef:	e8 52 d4 ff ff       	call   0x407846
40a3f4:	85 c0                	test   %eax,%eax
40a3f6:	74 7e                	je     0x40a476
40a3f8:	8b 7d bc             	mov    -0x44(%ebp),%edi
40a3fb:	33 c0                	xor    %eax,%eax
40a3fd:	88 45 e0             	mov    %al,-0x20(%ebp)
40a400:	a1 a8 20 41 00       	mov    0x4120a8,%eax
40a405:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a408:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a40b:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40a40f:	b8 7c 24 40 00       	mov    $0x40247c,%eax
40a414:	85 ff                	test   %edi,%edi
40a416:	74 02                	je     0x40a41a
40a418:	8b c7                	mov    %edi,%eax
40a41a:	50                   	push   %eax
40a41b:	ff 75 cc             	push   -0x34(%ebp)
40a41e:	68 fc 3d 40 00       	push   $0x403dfc
40a423:	53                   	push   %ebx
40a424:	e8 1f df ff ff       	call   0x408348
40a429:	8b 55 bc             	mov    -0x44(%ebp),%edx
40a42c:	83 c4 10             	add    $0x10,%esp
40a42f:	85 d2                	test   %edx,%edx
40a431:	74 28                	je     0x40a45b
40a433:	33 c0                	xor    %eax,%eax
40a435:	66 39 02             	cmp    %ax,(%edx)
40a438:	74 21                	je     0x40a45b
40a43a:	8b ca                	mov    %edx,%ecx
40a43c:	8d 41 02             	lea    0x2(%ecx),%eax
40a43f:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40a442:	66 8b 01             	mov    (%ecx),%ax
40a445:	83 c1 02             	add    $0x2,%ecx
40a448:	66 3b 45 ac          	cmp    -0x54(%ebp),%ax
40a44c:	75 f4                	jne    0x40a442
40a44e:	2b 4d c4             	sub    -0x3c(%ebp),%ecx
40a451:	d1 f9                	sar    $1,%ecx
40a453:	66 83 7c 4a fe 0a    	cmpw   $0xa,-0x2(%edx,%ecx,2)
40a459:	74 0d                	je     0x40a468
40a45b:	68 90 2e 40 00       	push   $0x402e90
40a460:	53                   	push   %ebx
40a461:	e8 e2 de ff ff       	call   0x408348
40a466:	59                   	pop    %ecx
40a467:	59                   	pop    %ecx
40a468:	33 c0                	xor    %eax,%eax
40a46a:	57                   	push   %edi
40a46b:	88 45 fc             	mov    %al,-0x4(%ebp)
40a46e:	ff 15 a8 20 41 00    	call   *0x4120a8
40a474:	eb 54                	jmp    0x40a4ca
40a476:	8b 07                	mov    (%edi),%eax
40a478:	85 c0                	test   %eax,%eax
40a47a:	75 05                	jne    0x40a481
40a47c:	b8 7c 24 40 00       	mov    $0x40247c,%eax
40a481:	50                   	push   %eax
40a482:	ff 75 cc             	push   -0x34(%ebp)
40a485:	68 fc 3d 40 00       	push   $0x403dfc
40a48a:	53                   	push   %ebx
40a48b:	e8 b8 de ff ff       	call   0x408348
40a490:	8b 17                	mov    (%edi),%edx
40a492:	83 c4 10             	add    $0x10,%esp
40a495:	85 d2                	test   %edx,%edx
40a497:	74 24                	je     0x40a4bd
40a499:	33 c0                	xor    %eax,%eax
40a49b:	66 39 02             	cmp    %ax,(%edx)
40a49e:	74 1d                	je     0x40a4bd
40a4a0:	8b ca                	mov    %edx,%ecx
40a4a2:	8d 79 02             	lea    0x2(%ecx),%edi
40a4a5:	66 8b 01             	mov    (%ecx),%ax
40a4a8:	83 c1 02             	add    $0x2,%ecx
40a4ab:	66 3b 45 ac          	cmp    -0x54(%ebp),%ax
40a4af:	75 f4                	jne    0x40a4a5
40a4b1:	2b cf                	sub    %edi,%ecx
40a4b3:	d1 f9                	sar    $1,%ecx
40a4b5:	66 83 7c 4a fe 0a    	cmpw   $0xa,-0x2(%edx,%ecx,2)
40a4bb:	74 0d                	je     0x40a4ca
40a4bd:	68 90 2e 40 00       	push   $0x402e90
40a4c2:	53                   	push   %ebx
40a4c3:	e8 80 de ff ff       	call   0x408348
40a4c8:	59                   	pop    %ecx
40a4c9:	59                   	pop    %ecx
40a4ca:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a4ce:	72 04                	jb     0x40a4d4
40a4d0:	8b 0e                	mov    (%esi),%ecx
40a4d2:	eb 02                	jmp    0x40a4d6
40a4d4:	8b ce                	mov    %esi,%ecx
40a4d6:	8d 45 d0             	lea    -0x30(%ebp),%eax
40a4d9:	50                   	push   %eax
40a4da:	8d 45 b0             	lea    -0x50(%ebp),%eax
40a4dd:	50                   	push   %eax
40a4de:	51                   	push   %ecx
40a4df:	ff 75 c8             	push   -0x38(%ebp)
40a4e2:	6a 03                	push   $0x3
40a4e4:	5a                   	pop    %edx
40a4e5:	e8 ad dc ff ff       	call   0x408197
40a4ea:	85 c0                	test   %eax,%eax
40a4ec:	74 0a                	je     0x40a4f8
40a4ee:	68 24 3e 40 00       	push   $0x403e24
40a4f3:	e9 dd 01 00 00       	jmp    0x40a6d5
40a4f8:	8b 55 d0             	mov    -0x30(%ebp),%edx
40a4fb:	8b 42 0c             	mov    0xc(%edx),%eax
40a4fe:	83 f8 03             	cmp    $0x3,%eax
40a501:	74 0e                	je     0x40a511
40a503:	85 c0                	test   %eax,%eax
40a505:	74 0a                	je     0x40a511
40a507:	68 24 3e 40 00       	push   $0x403e24
40a50c:	e9 5d fe ff ff       	jmp    0x40a36e
40a511:	83 7d a8 00          	cmpl   $0x0,-0x58(%ebp)
40a515:	74 5f                	je     0x40a576
40a517:	85 c0                	test   %eax,%eax
40a519:	74 5b                	je     0x40a576
40a51b:	8b 42 04             	mov    0x4(%edx),%eax
40a51e:	8b 0a                	mov    (%edx),%ecx
40a520:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40a523:	33 c0                	xor    %eax,%eax
40a525:	89 4d c0             	mov    %ecx,-0x40(%ebp)
40a528:	c7 45 e8 07 00 00 00 	movl   $0x7,-0x18(%ebp)
40a52f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a532:	66 89 45 d4          	mov    %ax,-0x2c(%ebp)
40a536:	8d 55 d4             	lea    -0x2c(%ebp),%edx
40a539:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40a53d:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40a540:	e8 b6 38 00 00       	call   0x40ddfb
40a545:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
40a549:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40a54c:	73 03                	jae    0x40a551
40a54e:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a551:	8b 7d cc             	mov    -0x34(%ebp),%edi
40a554:	50                   	push   %eax
40a555:	57                   	push   %edi
40a556:	68 5c 3e 40 00       	push   $0x403e5c
40a55b:	53                   	push   %ebx
40a55c:	e8 e7 dd ff ff       	call   0x408348
40a561:	83 c4 10             	add    $0x10,%esp
40a564:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40a567:	33 c0                	xor    %eax,%eax
40a569:	88 45 fc             	mov    %al,-0x4(%ebp)
40a56c:	50                   	push   %eax
40a56d:	6a 01                	push   $0x1
40a56f:	e8 7c bf ff ff       	call   0x4064f0
40a574:	eb 03                	jmp    0x40a579
40a576:	8b 7d cc             	mov    -0x34(%ebp),%edi
40a579:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a57d:	72 04                	jb     0x40a583
40a57f:	8b 0e                	mov    (%esi),%ecx
40a581:	eb 02                	jmp    0x40a585
40a583:	8b ce                	mov    %esi,%ecx
40a585:	8d 45 d0             	lea    -0x30(%ebp),%eax
40a588:	50                   	push   %eax
40a589:	8d 45 b0             	lea    -0x50(%ebp),%eax
40a58c:	50                   	push   %eax
40a58d:	51                   	push   %ecx
40a58e:	ff 75 c8             	push   -0x38(%ebp)
40a591:	6a 04                	push   $0x4
40a593:	5a                   	pop    %edx
40a594:	e8 fe db ff ff       	call   0x408197
40a599:	85 c0                	test   %eax,%eax
40a59b:	74 0a                	je     0x40a5a7
40a59d:	68 80 3e 40 00       	push   $0x403e80
40a5a2:	e9 2e 01 00 00       	jmp    0x40a6d5
40a5a7:	8b 55 d0             	mov    -0x30(%ebp),%edx
40a5aa:	8b 42 0c             	mov    0xc(%edx),%eax
40a5ad:	83 f8 03             	cmp    $0x3,%eax
40a5b0:	74 0e                	je     0x40a5c0
40a5b2:	85 c0                	test   %eax,%eax
40a5b4:	74 64                	je     0x40a61a
40a5b6:	68 80 3e 40 00       	push   $0x403e80
40a5bb:	e9 ae fd ff ff       	jmp    0x40a36e
40a5c0:	85 c0                	test   %eax,%eax
40a5c2:	74 56                	je     0x40a61a
40a5c4:	8b 42 04             	mov    0x4(%edx),%eax
40a5c7:	8b 0a                	mov    (%edx),%ecx
40a5c9:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40a5cc:	33 c0                	xor    %eax,%eax
40a5ce:	89 4d c0             	mov    %ecx,-0x40(%ebp)
40a5d1:	c7 45 e8 07 00 00 00 	movl   $0x7,-0x18(%ebp)
40a5d8:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a5db:	66 89 45 d4          	mov    %ax,-0x2c(%ebp)
40a5df:	8d 55 d4             	lea    -0x2c(%ebp),%edx
40a5e2:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40a5e6:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40a5e9:	e8 0d 38 00 00       	call   0x40ddfb
40a5ee:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
40a5f2:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40a5f5:	73 03                	jae    0x40a5fa
40a5f7:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a5fa:	50                   	push   %eax
40a5fb:	57                   	push   %edi
40a5fc:	68 b8 3e 40 00       	push   $0x403eb8
40a601:	53                   	push   %ebx
40a602:	e8 41 dd ff ff       	call   0x408348
40a607:	83 c4 10             	add    $0x10,%esp
40a60a:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40a60d:	33 c0                	xor    %eax,%eax
40a60f:	88 45 fc             	mov    %al,-0x4(%ebp)
40a612:	50                   	push   %eax