40d153:	8d 0c 75 04 00 00 00 	lea    0x4(,%esi,2),%ecx
40d15a:	51                   	push   %ecx
40d15b:	e8 42 b9 ff ff       	call   0x408aa2
40d160:	59                   	pop    %ecx
40d161:	59                   	pop    %ecx
40d162:	89 85 24 fd ff ff    	mov    %eax,-0x2dc(%ebp)
40d168:	85 c0                	test   %eax,%eax
40d16a:	74 a2                	je     0x40d10e
40d16c:	8d 48 04             	lea    0x4(%eax),%ecx
40d16f:	8b 44 3b 14          	mov    0x14(%ebx,%edi,1),%eax
40d173:	89 85 20 fd ff ff    	mov    %eax,-0x2e0(%ebp)
40d179:	8b 85 34 fd ff ff    	mov    -0x2cc(%ebp),%eax
40d17f:	83 c0 28             	add    $0x28,%eax
40d182:	89 8d 30 fd ff ff    	mov    %ecx,-0x2d0(%ebp)
40d188:	8d 04 87             	lea    (%edi,%eax,4),%eax
40d18b:	89 85 3c fd ff ff    	mov    %eax,-0x2c4(%ebp)
40d191:	8b 00                	mov    (%eax),%eax
40d193:	89 85 14 fd ff ff    	mov    %eax,-0x2ec(%ebp)
40d199:	8b 47 04             	mov    0x4(%edi),%eax
40d19c:	89 85 18 fd ff ff    	mov    %eax,-0x2e8(%ebp)
40d1a2:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
40d1a8:	50                   	push   %eax
40d1a9:	56                   	push   %esi
40d1aa:	51                   	push   %ecx
40d1ab:	e8 28 29 00 00       	call   0x40fad8
40d1b0:	83 c4 0c             	add    $0xc,%esp
40d1b3:	33 f6                	xor    %esi,%esi
40d1b5:	85 c0                	test   %eax,%eax
40d1b7:	0f 85 80 02 00 00    	jne    0x40d43d
40d1bd:	66 83 bd f4 fe ff ff 	cmpw   $0x43,-0x10c(%ebp)
40d1c4:	43
40d1c5:	8b 85 30 fd ff ff    	mov    -0x2d0(%ebp),%eax
40d1cb:	89 44 3b 14          	mov    %eax,0x14(%ebx,%edi,1)
40d1cf:	75 13                	jne    0x40d1e4
40d1d1:	66 39 b5 f6 fe ff ff 	cmp    %si,-0x10a(%ebp)
40d1d8:	75 0a                	jne    0x40d1e4
40d1da:	8b 8d 3c fd ff ff    	mov    -0x2c4(%ebp),%ecx
40d1e0:	89 31                	mov    %esi,(%ecx)
40d1e2:	eb 15                	jmp    0x40d1f9
40d1e4:	8d 85 48 fd ff ff    	lea    -0x2b8(%ebp),%eax
40d1ea:	50                   	push   %eax
40d1eb:	e8 fe f3 ff ff       	call   0x40c5ee
40d1f0:	59                   	pop    %ecx
40d1f1:	8b 8d 3c fd ff ff    	mov    -0x2c4(%ebp),%ecx
40d1f7:	89 01                	mov    %eax,(%ecx)
40d1f9:	8b 95 34 fd ff ff    	mov    -0x2cc(%ebp),%edx
40d1ff:	83 fa 02             	cmp    $0x2,%edx
40d202:	0f 85 75 01 00 00    	jne    0x40d37d
40d208:	8b 85 2c fd ff ff    	mov    -0x2d4(%ebp),%eax
40d20e:	89 47 04             	mov    %eax,0x4(%edi)
40d211:	8b 85 40 fd ff ff    	mov    -0x2c0(%ebp),%eax
40d217:	89 85 38 fd ff ff    	mov    %eax,-0x2c8(%ebp)
40d21d:	8b 48 20             	mov    0x20(%eax),%ecx
40d220:	89 8d 28 fd ff ff    	mov    %ecx,-0x2d8(%ebp)
40d226:	8b 48 24             	mov    0x24(%eax),%ecx
40d229:	89 8d 30 fd ff ff    	mov    %ecx,-0x2d0(%ebp)
40d22f:	8b ce                	mov    %esi,%ecx
40d231:	89 8d 44 fd ff ff    	mov    %ecx,-0x2bc(%ebp)
40d237:	8b 95 38 fd ff ff    	mov    -0x2c8(%ebp),%edx
40d23d:	8b 47 04             	mov    0x4(%edi),%eax
40d240:	3b 02                	cmp    (%edx),%eax
40d242:	8b 95 34 fd ff ff    	mov    -0x2cc(%ebp),%edx
40d248:	0f 84 cd 00 00 00    	je     0x40d31b
40d24e:	8b 8d 38 fd ff ff    	mov    -0x2c8(%ebp),%ecx
40d254:	8b 95 38 fd ff ff    	mov    -0x2c8(%ebp),%edx
40d25a:	8b 01                	mov    (%ecx),%eax
40d25c:	8b 9d 28 fd ff ff    	mov    -0x2d8(%ebp),%ebx
40d262:	8b 49 04             	mov    0x4(%ecx),%ecx
40d265:	83 85 38 fd ff ff 08 	addl   $0x8,-0x2c8(%ebp)
40d26c:	89 1a                	mov    %ebx,(%edx)
40d26e:	8b 9d 30 fd ff ff    	mov    -0x2d0(%ebp),%ebx
40d274:	89 8d 30 fd ff ff    	mov    %ecx,-0x2d0(%ebp)
40d27a:	8b 8d 44 fd ff ff    	mov    -0x2bc(%ebp),%ecx
40d280:	41                   	inc    %ecx
40d281:	89 5a 04             	mov    %ebx,0x4(%edx)
40d284:	8b 9d 1c fd ff ff    	mov    -0x2e4(%ebp),%ebx
40d28a:	8b 95 34 fd ff ff    	mov    -0x2cc(%ebp),%edx
40d290:	89 85 28 fd ff ff    	mov    %eax,-0x2d8(%ebp)
40d296:	89 8d 44 fd ff ff    	mov    %ecx,-0x2bc(%ebp)
40d29c:	83 f9 05             	cmp    $0x5,%ecx
40d29f:	7c 96                	jl     0x40d237
40d2a1:	8b 85 44 fd ff ff    	mov    -0x2bc(%ebp),%eax
40d2a7:	8b 8d 40 fd ff ff    	mov    -0x2c0(%ebp),%ecx
40d2ad:	83 f8 05             	cmp    $0x5,%eax
40d2b0:	0f 85 bf 00 00 00    	jne    0x40d375
40d2b6:	6a 01                	push   $0x1
40d2b8:	ff 77 04             	push   0x4(%edi)
40d2bb:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
40d2c1:	50                   	push   %eax
40d2c2:	6a 7f                	push   $0x7f
40d2c4:	68 c0 ba 41 00       	push   $0x41bac0
40d2c9:	6a 01                	push   $0x1
40d2cb:	56                   	push   %esi
40d2cc:	e8 44 21 00 00       	call   0x40f415
40d2d1:	83 c4 1c             	add    $0x1c,%esp
40d2d4:	85 c0                	test   %eax,%eax
40d2d6:	0f 84 85 00 00 00    	je     0x40d361
40d2dc:	8b c6                	mov    %esi,%eax
40d2de:	b9 ff 01 00 00       	mov    $0x1ff,%ecx
40d2e3:	66 21 8c 45 f4 fd ff 	and    %cx,-0x20c(%ebp,%eax,2)
40d2ea:	ff
40d2eb:	40                   	inc    %eax
40d2ec:	83 f8 7f             	cmp    $0x7f,%eax
40d2ef:	72 ed                	jb     0x40d2de
40d2f1:	68 fe 00 00 00       	push   $0xfe
40d2f6:	ff 35 10 10 42 00    	push   0x421010
40d2fc:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
40d302:	50                   	push   %eax
40d303:	e8 d0 bb ff ff       	call   0x408ed8
40d308:	8b 8d 40 fd ff ff    	mov    -0x2c0(%ebp),%ecx
40d30e:	83 c4 0c             	add    $0xc,%esp
40d311:	f7 d8                	neg    %eax
40d313:	1b c0                	sbb    %eax,%eax
40d315:	40                   	inc    %eax
40d316:	89 41 04             	mov    %eax,0x4(%ecx)
40d319:	eb 4f                	jmp    0x40d36a
40d31b:	85 c9                	test   %ecx,%ecx
40d31d:	74 82                	je     0x40d2a1
40d31f:	8b 8d 40 fd ff ff    	mov    -0x2c0(%ebp),%ecx
40d325:	8b 85 44 fd ff ff    	mov    -0x2bc(%ebp),%eax
40d32b:	8b 9d 28 fd ff ff    	mov    -0x2d8(%ebp),%ebx
40d331:	8b 04 c1             	mov    (%ecx,%eax,8),%eax
40d334:	89 01                	mov    %eax,(%ecx)
40d336:	8b 85 44 fd ff ff    	mov    -0x2bc(%ebp),%eax
40d33c:	8b 44 c1 04          	mov    0x4(%ecx,%eax,8),%eax
40d340:	89 41 04             	mov    %eax,0x4(%ecx)
40d343:	8b 85 44 fd ff ff    	mov    -0x2bc(%ebp),%eax
40d349:	89 1c c1             	mov    %ebx,(%ecx,%eax,8)
40d34c:	8b 9d 30 fd ff ff    	mov    -0x2d0(%ebp),%ebx
40d352:	89 5c c1 04          	mov    %ebx,0x4(%ecx,%eax,8)
40d356:	8b 9d 1c fd ff ff    	mov    -0x2e4(%ebp),%ebx
40d35c:	e9 4c ff ff ff       	jmp    0x40d2ad
40d361:	8b 8d 40 fd ff ff    	mov    -0x2c0(%ebp),%ecx
40d367:	89 71 04             	mov    %esi,0x4(%ecx)
40d36a:	8b 47 04             	mov    0x4(%edi),%eax
40d36d:	8b 95 34 fd ff ff    	mov    -0x2cc(%ebp),%edx
40d373:	89 01                	mov    %eax,(%ecx)
40d375:	8b 41 04             	mov    0x4(%ecx),%eax
40d378:	89 47 70             	mov    %eax,0x70(%edi)
40d37b:	eb 1e                	jmp    0x40d39b
40d37d:	83 fa 01             	cmp    $0x1,%edx
40d380:	75 0b                	jne    0x40d38d
40d382:	8b 85 2c fd ff ff    	mov    -0x2d4(%ebp),%eax
40d388:	89 47 08             	mov    %eax,0x8(%edi)
40d38b:	eb 0e                	jmp    0x40d39b
40d38d:	83 fa 05             	cmp    $0x5,%edx
40d390:	75 09                	jne    0x40d39b
40d392:	8b 85 2c fd ff ff    	mov    -0x2d4(%ebp),%eax
40d398:	89 47 0c             	mov    %eax,0xc(%edi)
40d39b:	6b d2 0c             	imul   $0xc,%edx,%edx
40d39e:	57                   	push   %edi
40d39f:	ff 92 00 ba 41 00    	call   *0x41ba00(%edx)
40d3a5:	85 c0                	test   %eax,%eax
40d3a7:	8b 85 20 fd ff ff    	mov    -0x2e0(%ebp),%eax
40d3ad:	59                   	pop    %ecx
40d3ae:	74 35                	je     0x40d3e5
40d3b0:	89 44 3b 14          	mov    %eax,0x14(%ebx,%edi,1)
40d3b4:	8b 9d 3c fd ff ff    	mov    -0x2c4(%ebp),%ebx
40d3ba:	ff 33                	push   (%ebx)
40d3bc:	e8 57 7d ff ff       	call   0x405118
40d3c1:	8b 85 14 fd ff ff    	mov    -0x2ec(%ebp),%eax
40d3c7:	89 03                	mov    %eax,(%ebx)
40d3c9:	8b 85 24 fd ff ff    	mov    -0x2dc(%ebp),%eax
40d3cf:	50                   	push   %eax
40d3d0:	e8 43 7d ff ff       	call   0x405118
40d3d5:	8b 85 18 fd ff ff    	mov    -0x2e8(%ebp),%eax
40d3db:	59                   	pop    %ecx
40d3dc:	59                   	pop    %ecx
40d3dd:	89 47 04             	mov    %eax,0x4(%edi)
40d3e0:	e9 29 fd ff ff       	jmp    0x40d10e
40d3e5:	3d dc 0d 42 00       	cmp    $0x420ddc,%eax
40d3ea:	74 3c                	je     0x40d428
40d3ec:	ff 74 3b 1c          	push   0x1c(%ebx,%edi,1)
40d3f0:	ff 15 54 90 41 00    	call   *0x419054
40d3f6:	85 c0                	test   %eax,%eax
40d3f8:	75 2e                	jne    0x40d428
40d3fa:	ff 74 3b 1c          	push   0x1c(%ebx,%edi,1)
40d3fe:	e8 15 7d ff ff       	call   0x405118
40d403:	ff 74 3b 18          	push   0x18(%ebx,%edi,1)
40d407:	e8 0c 7d ff ff       	call   0x405118
40d40c:	8b 85 3c fd ff ff    	mov    -0x2c4(%ebp),%eax
40d412:	ff 30                	push   (%eax)
40d414:	e8 ff 7c ff ff       	call   0x405118
40d419:	8b 85 3c fd ff ff    	mov    -0x2c4(%ebp),%eax
40d41f:	89 74 3b 14          	mov    %esi,0x14(%ebx,%edi,1)
40d423:	83 c4 0c             	add    $0xc,%esp
40d426:	89 30                	mov    %esi,(%eax)
40d428:	8b 85 24 fd ff ff    	mov    -0x2dc(%ebp),%eax
40d42e:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40d434:	89 44 3b 1c          	mov    %eax,0x1c(%ebx,%edi,1)
40d438:	e9 01 fd ff ff       	jmp    0x40d13e
40d43d:	56                   	push   %esi
40d43e:	56                   	push   %esi
40d43f:	56                   	push   %esi
40d440:	56                   	push   %esi
40d441:	56                   	push   %esi
40d442:	e8 be e1 ff ff       	call   0x40b605
40d447:	cc                   	int3
40d448:	55                   	push   %ebp
40d449:	8b ec                	mov    %esp,%ebp
40d44b:	8b 45 08             	mov    0x8(%ebp),%eax
40d44e:	8b 00                	mov    (%eax),%eax
40d450:	81 38 63 73 6d e0    	cmpl   $0xe06d7363,(%eax)
40d456:	75 25                	jne    0x40d47d
40d458:	83 78 10 03          	cmpl   $0x3,0x10(%eax)
40d45c:	75 1f                	jne    0x40d47d
40d45e:	8b 40 14             	mov    0x14(%eax),%eax
40d461:	3d 20 05 93 19       	cmp    $0x19930520,%eax
40d466:	74 1b                	je     0x40d483
40d468:	3d 21 05 93 19       	cmp    $0x19930521,%eax
40d46d:	74 14                	je     0x40d483
40d46f:	3d 22 05 93 19       	cmp    $0x19930522,%eax
40d474:	74 0d                	je     0x40d483
40d476:	3d 00 40 99 01       	cmp    $0x1994000,%eax
40d47b:	74 06                	je     0x40d483
40d47d:	33 c0                	xor    %eax,%eax
40d47f:	5d                   	pop    %ebp
40d480:	c2 04 00             	ret    $0x4
40d483:	e8 bc 09 00 00       	call   0x40de44
40d488:	cc                   	int3
40d489:	68 48 d4 40 00       	push   $0x40d448
40d48e:	e8 ce 25 00 00       	call   0x40fa61
40d493:	59                   	pop    %ecx
40d494:	33 c0                	xor    %eax,%eax
40d496:	c3                   	ret
40d497:	55                   	push   %ebp
40d498:	8b ec                	mov    %esp,%ebp
40d49a:	56                   	push   %esi
40d49b:	e8 4e ef ff ff       	call   0x40c3ee
40d4a0:	8b f0                	mov    %eax,%esi
40d4a2:	85 f6                	test   %esi,%esi
40d4a4:	0f 84 45 01 00 00    	je     0x40d5ef
40d4aa:	8b 56 5c             	mov    0x5c(%esi),%edx
40d4ad:	57                   	push   %edi
40d4ae:	8b 7d 08             	mov    0x8(%ebp),%edi
40d4b1:	8b ca                	mov    %edx,%ecx
40d4b3:	39 39                	cmp    %edi,(%ecx)
40d4b5:	74 0d                	je     0x40d4c4
40d4b7:	83 c1 0c             	add    $0xc,%ecx
40d4ba:	8d 82 90 00 00 00    	lea    0x90(%edx),%eax
40d4c0:	3b c8                	cmp    %eax,%ecx
40d4c2:	72 ef                	jb     0x40d4b3
40d4c4:	8d 82 90 00 00 00    	lea    0x90(%edx),%eax
40d4ca:	3b c8                	cmp    %eax,%ecx
40d4cc:	73 04                	jae    0x40d4d2
40d4ce:	39 39                	cmp    %edi,(%ecx)
40d4d0:	74 02                	je     0x40d4d4
40d4d2:	33 c9                	xor    %ecx,%ecx
40d4d4:	85 c9                	test   %ecx,%ecx
40d4d6:	0f 84 10 01 00 00    	je     0x40d5ec
40d4dc:	8b 51 08             	mov    0x8(%ecx),%edx
40d4df:	85 d2                	test   %edx,%edx
40d4e1:	0f 84 05 01 00 00    	je     0x40d5ec
40d4e7:	83 fa 05             	cmp    $0x5,%edx
40d4ea:	75 0c                	jne    0x40d4f8
40d4ec:	83 61 08 00          	andl   $0x0,0x8(%ecx)
40d4f0:	33 c0                	xor    %eax,%eax
40d4f2:	40                   	inc    %eax
40d4f3:	e9 f6 00 00 00       	jmp    0x40d5ee
40d4f8:	83 fa 01             	cmp    $0x1,%edx
40d4fb:	75 08                	jne    0x40d505
40d4fd:	83 c8 ff             	or     $0xffffffff,%eax
40d500:	e9 e9 00 00 00       	jmp    0x40d5ee
40d505:	8b 45 0c             	mov    0xc(%ebp),%eax
40d508:	53                   	push   %ebx
40d509:	8b 5e 60             	mov    0x60(%esi),%ebx
40d50c:	89 46 60             	mov    %eax,0x60(%esi)
40d50f:	83 79 04 08          	cmpl   $0x8,0x4(%ecx)
40d513:	0f 85 c0 00 00 00    	jne    0x40d5d9
40d519:	6a 24                	push   $0x24
40d51b:	5f                   	pop    %edi
40d51c:	8b 46 5c             	mov    0x5c(%esi),%eax
40d51f:	83 c7 0c             	add    $0xc,%edi
40d522:	83 64 07 fc 00       	andl   $0x0,-0x4(%edi,%eax,1)
40d527:	81 ff 90 00 00 00    	cmp    $0x90,%edi
40d52d:	7c ed                	jl     0x40d51c
40d52f:	81 39 8e 00 00 c0    	cmpl   $0xc000008e,(%ecx)
40d535:	8b 7e 64             	mov    0x64(%esi),%edi
40d538:	75 0c                	jne    0x40d546
40d53a:	c7 46 64 83 00 00 00 	movl   $0x83,0x64(%esi)
40d541:	e9 86 00 00 00       	jmp    0x40d5cc
40d546:	81 39 90 00 00 c0    	cmpl   $0xc0000090,(%ecx)
40d54c:	75 09                	jne    0x40d557
40d54e:	c7 46 64 81 00 00 00 	movl   $0x81,0x64(%esi)
40d555:	eb 75                	jmp    0x40d5cc
40d557:	81 39 91 00 00 c0    	cmpl   $0xc0000091,(%ecx)
40d55d:	75 09                	jne    0x40d568
40d55f:	c7 46 64 84 00 00 00 	movl   $0x84,0x64(%esi)
40d566:	eb 64                	jmp    0x40d5cc
40d568:	81 39 93 00 00 c0    	cmpl   $0xc0000093,(%ecx)
40d56e:	75 09                	jne    0x40d579
40d570:	c7 46 64 85 00 00 00 	movl   $0x85,0x64(%esi)
40d577:	eb 53                	jmp    0x40d5cc
40d579:	81 39 8d 00 00 c0    	cmpl   $0xc000008d,(%ecx)
40d57f:	75 09                	jne    0x40d58a
40d581:	c7 46 64 82 00 00 00 	movl   $0x82,0x64(%esi)
40d588:	eb 42                	jmp    0x40d5cc
40d58a:	81 39 8f 00 00 c0    	cmpl   $0xc000008f,(%ecx)
40d590:	75 09                	jne    0x40d59b
40d592:	c7 46 64 86 00 00 00 	movl   $0x86,0x64(%esi)
40d599:	eb 31                	jmp    0x40d5cc
40d59b:	81 39 92 00 00 c0    	cmpl   $0xc0000092,(%ecx)
40d5a1:	75 09                	jne    0x40d5ac
40d5a3:	c7 46 64 8a 00 00 00 	movl   $0x8a,0x64(%esi)
40d5aa:	eb 20                	jmp    0x40d5cc
40d5ac:	81 39 b5 02 00 c0    	cmpl   $0xc00002b5,(%ecx)
40d5b2:	75 09                	jne    0x40d5bd
40d5b4:	c7 46 64 8d 00 00 00 	movl   $0x8d,0x64(%esi)
40d5bb:	eb 0f                	jmp    0x40d5cc
40d5bd:	81 39 b4 02 00 c0    	cmpl   $0xc00002b4,(%ecx)
40d5c3:	75 07                	jne    0x40d5cc
40d5c5:	c7 46 64 8e 00 00 00 	movl   $0x8e,0x64(%esi)
40d5cc:	ff 76 64             	push   0x64(%esi)
40d5cf:	6a 08                	push   $0x8
40d5d1:	ff d2                	call   *%edx
40d5d3:	59                   	pop    %ecx
40d5d4:	89 7e 64             	mov    %edi,0x64(%esi)
40d5d7:	eb 09                	jmp    0x40d5e2
40d5d9:	ff 71 04             	push   0x4(%ecx)
40d5dc:	83 61 08 00          	andl   $0x0,0x8(%ecx)
40d5e0:	ff d2                	call   *%edx
40d5e2:	59                   	pop    %ecx
40d5e3:	89 5e 60             	mov    %ebx,0x60(%esi)
40d5e6:	83 c8 ff             	or     $0xffffffff,%eax
40d5e9:	5b                   	pop    %ebx
40d5ea:	eb 02                	jmp    0x40d5ee
40d5ec:	33 c0                	xor    %eax,%eax
40d5ee:	5f                   	pop    %edi
40d5ef:	5e                   	pop    %esi
40d5f0:	5d                   	pop    %ebp
40d5f1:	c3                   	ret
40d5f2:	6a 00                	push   $0x0
40d5f4:	6a 00                	push   $0x0
40d5f6:	68 2d d6 40 00       	push   $0x40d62d
40d5fb:	68 78 27 42 00       	push   $0x422778
40d600:	ff 15 d4 90 41 00    	call   *0x4190d4
40d606:	f7 d8                	neg    %eax
40d608:	1b c0                	sbb    %eax,%eax
40d60a:	f7 d8                	neg    %eax
40d60c:	48                   	dec    %eax
40d60d:	c3                   	ret
40d60e:	68 00 01 00 00       	push   $0x100
40d613:	6a 00                	push   $0x0
40d615:	68 20 2a 42 00       	push   $0x422a20
40d61a:	e8 21 99 ff ff       	call   0x406f40
40d61f:	83 c4 0c             	add    $0xc,%esp
40d622:	c7 05 14 2a 42 00 03 	movl   $0x3,0x422a14
40d629:	00 00 00
40d62c:	c3                   	ret
40d62d:	6a 64                	push   $0x64