4011d0:	8b 41 0c             	mov    0xc(%ecx),%eax
4011d3:	89 44 24 20          	mov    %eax,0x20(%esp)
4011d7:	ff 00                	incl   (%eax)
4011d9:	f6 c3 02             	test   $0x2,%bl
4011dc:	74 0c                	je     0x4011ea
4011de:	8d 4c 24 24          	lea    0x24(%esp),%ecx
4011e2:	83 e3 fd             	and    $0xfffffffd,%ebx
4011e5:	e8 4d b9 00 00       	call   0x40cb37
4011ea:	f6 c3 01             	test   $0x1,%bl
4011ed:	0f 85 30 53 07 00    	jne    0x476523
4011f3:	8d 4c 24 14          	lea    0x14(%esp),%ecx
4011f7:	e8 fe ab 00 00       	call   0x40bdfa
4011fc:	ff 74 24 18          	push   0x18(%esp)
401200:	ff 74 24 18          	push   0x18(%esp)
401204:	ff 15 60 d6 48 00    	call   *0x48d660
40120a:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
40120e:	8d 44 24 14          	lea    0x14(%esp),%eax
401212:	50                   	push   %eax
401213:	8b cb                	mov    %ebx,%ecx
401215:	e8 90 0a 00 00       	call   0x401caa
40121a:	85 c0                	test   %eax,%eax
40121c:	0f 84 0f 53 07 00    	je     0x476531
401222:	83 7e 08 02          	cmpl   $0x2,0x8(%esi)
401226:	0f 85 ad 00 00 00    	jne    0x4012d9
40122c:	8b 46 04             	mov    0x4(%esi),%eax
40122f:	8b 48 04             	mov    0x4(%eax),%ecx
401232:	e8 4f c0 00 00       	call   0x40d286
401237:	85 c0                	test   %eax,%eax
401239:	0f 8e 9a 00 00 00    	jle    0x4012d9
40123f:	8b 46 04             	mov    0x4(%esi),%eax
401242:	8b 48 04             	mov    0x4(%eax),%ecx
401245:	e8 3c c0 00 00       	call   0x40d286
40124a:	8b f8                	mov    %eax,%edi
40124c:	8b 83 78 04 00 00    	mov    0x478(%ebx),%eax
401252:	83 64 24 0c 00       	andl   $0x0,0xc(%esp)
401257:	89 44 24 10          	mov    %eax,0x10(%esp)
40125b:	8d 44 24 10          	lea    0x10(%esp),%eax
40125f:	50                   	push   %eax
401260:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401264:	e8 7a 00 00 00       	call   0x4012e3
401269:	51                   	push   %ecx
40126a:	8b c4                	mov    %esp,%eax
40126c:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401270:	83 20 00             	andl   $0x0,(%eax)
401273:	e8 9e 16 00 00       	call   0x402916
401278:	84 c0                	test   %al,%al
40127a:	0f 85 ca 52 07 00    	jne    0x47654a
401280:	8d 4c 24 34          	lea    0x34(%esp),%ecx
401284:	e8 6e c5 00 00       	call   0x40d7f7
401289:	8d 44 24 14          	lea    0x14(%esp),%eax
40128d:	50                   	push   %eax
40128e:	8d 4c 24 38          	lea    0x38(%esp),%ecx
401292:	66 c7 44 24 48 00 00 	movw   $0x0,0x48(%esp)
401299:	e8 4f 5c 00 00       	call   0x406eed
40129e:	89 7c 24 4c          	mov    %edi,0x4c(%esp)
4012a2:	ff 15 a0 d7 48 00    	call   *0x48d7a0
4012a8:	89 44 24 48          	mov    %eax,0x48(%esp)
4012ac:	8d 44 24 34          	lea    0x34(%esp),%eax
4012b0:	50                   	push   %eax
4012b1:	8d 8b 78 04 00 00    	lea    0x478(%ebx),%ecx
4012b7:	e8 3b 00 00 00       	call   0x4012f7
4012bc:	8d 4c 24 34          	lea    0x34(%esp),%ecx
4012c0:	e8 72 b8 00 00       	call   0x40cb37
4012c5:	8d 4c 24 14          	lea    0x14(%esp),%ecx
4012c9:	e8 69 b8 00 00       	call   0x40cb37
4012ce:	5f                   	pop    %edi
4012cf:	5e                   	pop    %esi
4012d0:	33 c0                	xor    %eax,%eax
4012d2:	5b                   	pop    %ebx
4012d3:	8b e5                	mov    %ebp,%esp
4012d5:	5d                   	pop    %ebp
4012d6:	c2 08 00             	ret    $0x8
4012d9:	bf fa 00 00 00       	mov    $0xfa,%edi
4012de:	e9 69 ff ff ff       	jmp    0x40124c
4012e3:	55                   	push   %ebp
4012e4:	8b ec                	mov    %esp,%ebp
4012e6:	8b 45 08             	mov    0x8(%ebp),%eax
4012e9:	3b c8                	cmp    %eax,%ecx
4012eb:	74 04                	je     0x4012f1
4012ed:	8b 00                	mov    (%eax),%eax
4012ef:	89 01                	mov    %eax,(%ecx)
4012f1:	8b c1                	mov    %ecx,%eax
4012f3:	5d                   	pop    %ebp
4012f4:	c2 04 00             	ret    $0x4
4012f7:	55                   	push   %ebp
4012f8:	8b ec                	mov    %esp,%ebp
4012fa:	56                   	push   %esi
4012fb:	57                   	push   %edi
4012fc:	8b f1                	mov    %ecx,%esi
4012fe:	33 ff                	xor    %edi,%edi
401300:	6a 0c                	push   $0xc
401302:	39 7e 04             	cmp    %edi,0x4(%esi)
401305:	0f 85 76 59 07 00    	jne    0x476c81
40130b:	e8 da e1 01 00       	call   0x41f4ea
401310:	59                   	pop    %ecx
401311:	85 c0                	test   %eax,%eax
401313:	74 0c                	je     0x401321
401315:	ff 75 08             	push   0x8(%ebp)
401318:	8b c8                	mov    %eax,%ecx
40131a:	e8 10 00 00 00       	call   0x40132f
40131f:	8b f8                	mov    %eax,%edi
401321:	89 3e                	mov    %edi,(%esi)
401323:	ff 46 08             	incl   0x8(%esi)
401326:	89 7e 04             	mov    %edi,0x4(%esi)
401329:	5f                   	pop    %edi
40132a:	5e                   	pop    %esi
40132b:	5d                   	pop    %ebp
40132c:	c2 04 00             	ret    $0x4
40132f:	55                   	push   %ebp
401330:	8b ec                	mov    %esp,%ebp
401332:	56                   	push   %esi
401333:	8b f1                	mov    %ecx,%esi
401335:	57                   	push   %edi
401336:	33 ff                	xor    %edi,%edi
401338:	6a 1c                	push   $0x1c
40133a:	89 7e 04             	mov    %edi,0x4(%esi)
40133d:	89 7e 08             	mov    %edi,0x8(%esi)
401340:	e8 a5 e1 01 00       	call   0x41f4ea
401345:	59                   	pop    %ecx
401346:	85 c0                	test   %eax,%eax
401348:	74 0c                	je     0x401356
40134a:	ff 75 08             	push   0x8(%ebp)
40134d:	8b c8                	mov    %eax,%ecx
40134f:	e8 0c 00 00 00       	call   0x401360
401354:	8b f8                	mov    %eax,%edi
401356:	89 3e                	mov    %edi,(%esi)
401358:	5f                   	pop    %edi
401359:	8b c6                	mov    %esi,%eax
40135b:	5e                   	pop    %esi
40135c:	5d                   	pop    %ebp
40135d:	c2 04 00             	ret    $0x4
401360:	55                   	push   %ebp
401361:	8b ec                	mov    %esp,%ebp
401363:	8b 55 08             	mov    0x8(%ebp),%edx
401366:	8b 02                	mov    (%edx),%eax
401368:	89 01                	mov    %eax,(%ecx)
40136a:	8b 42 04             	mov    0x4(%edx),%eax
40136d:	89 41 04             	mov    %eax,0x4(%ecx)
401370:	8b 42 08             	mov    0x8(%edx),%eax
401373:	89 41 08             	mov    %eax,0x8(%ecx)
401376:	8b 42 0c             	mov    0xc(%edx),%eax
401379:	89 41 0c             	mov    %eax,0xc(%ecx)
40137c:	ff 00                	incl   (%eax)
40137e:	8a 42 10             	mov    0x10(%edx),%al
401381:	88 41 10             	mov    %al,0x10(%ecx)
401384:	8a 42 11             	mov    0x11(%edx),%al
401387:	88 41 11             	mov    %al,0x11(%ecx)
40138a:	8b 42 14             	mov    0x14(%edx),%eax
40138d:	89 41 14             	mov    %eax,0x14(%ecx)
401390:	8b 42 18             	mov    0x18(%edx),%eax
401393:	89 41 18             	mov    %eax,0x18(%ecx)
401396:	8b c1                	mov    %ecx,%eax
401398:	5d                   	pop    %ebp
401399:	c2 04 00             	ret    $0x4
40139c:	55                   	push   %ebp
40139d:	8b ec                	mov    %esp,%ebp
40139f:	83 e4 f8             	and    $0xfffffff8,%esp
4013a2:	83 ec 44             	sub    $0x44,%esp
4013a5:	83 64 24 10 00       	andl   $0x0,0x10(%esp)
4013aa:	53                   	push   %ebx
4013ab:	56                   	push   %esi
4013ac:	57                   	push   %edi
4013ad:	8b f9                	mov    %ecx,%edi
4013af:	8b 4d 08             	mov    0x8(%ebp),%ecx
4013b2:	8b 71 08             	mov    0x8(%ecx),%esi
4013b5:	33 c9                	xor    %ecx,%ecx
4013b7:	89 4c 24 10          	mov    %ecx,0x10(%esp)
4013bb:	83 fe 01             	cmp    $0x1,%esi
4013be:	8d 4c 24 30          	lea    0x30(%esp),%ecx
4013c2:	0f 94 c7             	sete   %bh
4013c5:	e8 2d c4 00 00       	call   0x40d7f7
4013ca:	83 fe 02             	cmp    $0x2,%esi
4013cd:	0f 82 97 00 00 00    	jb     0x40146a
4013d3:	8b 45 08             	mov    0x8(%ebp),%eax
4013d6:	6a 2a                	push   $0x2a
4013d8:	8b 40 04             	mov    0x4(%eax),%eax
4013db:	8b 70 04             	mov    0x4(%eax),%esi
4013de:	8b ce                	mov    %esi,%ecx
4013e0:	e8 07 08 00 00       	call   0x401bec
4013e5:	8a f8                	mov    %al,%bh
4013e7:	88 7c 24 0c          	mov    %bh,0xc(%esp)
4013eb:	84 ff                	test   %bh,%bh
4013ed:	75 7b                	jne    0x40146a
4013ef:	6a 0e                	push   $0xe
4013f1:	8b ce                	mov    %esi,%ecx
4013f3:	e8 ec c1 00 00       	call   0x40d5e4
4013f8:	8b ce                	mov    %esi,%ecx
4013fa:	84 c0                	test   %al,%al
4013fc:	0f 85 45 56 07 00    	jne    0x476a47
401402:	6a 02                	push   $0x2
401404:	5b                   	pop    %ebx
401405:	e8 62 7f 00 00       	call   0x40936c
40140a:	8b 4e 08             	mov    0x8(%esi),%ecx
40140d:	8b 01                	mov    (%ecx),%eax
40140f:	89 44 24 20          	mov    %eax,0x20(%esp)
401413:	8b 41 04             	mov    0x4(%ecx),%eax
401416:	89 44 24 24          	mov    %eax,0x24(%esp)
40141a:	8b 41 08             	mov    0x8(%ecx),%eax
40141d:	89 44 24 28          	mov    %eax,0x28(%esp)
401421:	8b 41 0c             	mov    0xc(%ecx),%eax
401424:	89 44 24 2c          	mov    %eax,0x2c(%esp)
401428:	ff 00                	incl   (%eax)
40142a:	8d 44 24 20          	lea    0x20(%esp),%eax
40142e:	50                   	push   %eax
40142f:	8d 4c 24 34          	lea    0x34(%esp),%ecx
401433:	e8 b5 5a 00 00       	call   0x406eed
401438:	f6 c3 02             	test   $0x2,%bl
40143b:	74 0c                	je     0x401449
40143d:	8d 4c 24 20          	lea    0x20(%esp),%ecx
401441:	83 e3 fd             	and    $0xfffffffd,%ebx
401444:	e8 ee b6 00 00       	call   0x40cb37
401449:	f6 c3 01             	test   $0x1,%bl
40144c:	0f 85 07 56 07 00    	jne    0x476a59
401452:	8d 44 24 30          	lea    0x30(%esp),%eax
401456:	50                   	push   %eax
401457:	8b cf                	mov    %edi,%ecx
401459:	e8 4c 08 00 00       	call   0x401caa
40145e:	85 c0                	test   %eax,%eax
401460:	0f 84 01 56 07 00    	je     0x476a67
401466:	8a 7c 24 0c          	mov    0xc(%esp),%bh
40146a:	8b 45 08             	mov    0x8(%ebp),%eax
40146d:	8b 40 04             	mov    0x4(%eax),%eax
401470:	8b 30                	mov    (%eax),%esi
401472:	8b ce                	mov    %esi,%ecx
401474:	e8 f3 7e 00 00       	call   0x40936c
401479:	8b 46 08             	mov    0x8(%esi),%eax
40147c:	8d 4c 24 20          	lea    0x20(%esp),%ecx
401480:	ff 30                	push   (%eax)
401482:	e8 92 b9 00 00       	call   0x40ce19
401487:	8d 44 24 0f          	lea    0xf(%esp),%eax
40148b:	50                   	push   %eax
40148c:	8d 44 24 12          	lea    0x12(%esp),%eax
401490:	50                   	push   %eax
401491:	8d 44 24 14          	lea    0x14(%esp),%eax
401495:	50                   	push   %eax
401496:	8d 44 24 19          	lea    0x19(%esp),%eax
40149a:	50                   	push   %eax
40149b:	8d 44 24 24          	lea    0x24(%esp),%eax
40149f:	50                   	push   %eax
4014a0:	8d 44 24 34          	lea    0x34(%esp),%eax
4014a4:	50                   	push   %eax
4014a5:	e8 77 0a 00 00       	call   0x401f21
4014aa:	8a d8                	mov    %al,%bl
4014ac:	f6 db                	neg    %bl
4014ae:	8d 4c 24 20          	lea    0x20(%esp),%ecx
4014b2:	1a db                	sbb    %bl,%bl
4014b4:	e8 7e b6 00 00       	call   0x40cb37
4014b9:	fe c3                	inc    %bl
4014bb:	0f 85 cd 55 07 00    	jne    0x476a8e
4014c1:	8b 54 24 14          	mov    0x14(%esp),%edx
4014c5:	8a 4c 24 0c          	mov    0xc(%esp),%cl
4014c9:	89 54 24 18          	mov    %edx,0x18(%esp)
4014cd:	83 fa 13             	cmp    $0x13,%edx
4014d0:	0f 84 e1 55 07 00    	je     0x476ab7
4014d6:	80 7c 24 0d 00       	cmpb   $0x0,0xd(%esp)
4014db:	0f 85 ea 55 07 00    	jne    0x476acb
4014e1:	8b 44 24 10          	mov    0x10(%esp),%eax
4014e5:	84 c9                	test   %cl,%cl
4014e7:	0f 85 ea 55 07 00    	jne    0x476ad7
4014ed:	80 7c 24 0e 00       	cmpb   $0x0,0xe(%esp)
4014f2:	0f 85 eb 55 07 00    	jne    0x476ae3
4014f8:	80 7c 24 0f 00       	cmpb   $0x0,0xf(%esp)
4014fd:	0f 85 ec 55 07 00    	jne    0x476aef
401503:	8b 8f cc 01 00 00    	mov    0x1cc(%edi),%ecx
401509:	c1 e2 10             	shl    $0x10,%edx
40150c:	0b d0                	or     %eax,%edx
40150e:	33 f6                	xor    %esi,%esi
401510:	89 54 24 1c          	mov    %edx,0x1c(%esp)
401514:	85 c9                	test   %ecx,%ecx
401516:	0f 85 df 55 07 00    	jne    0x476afb
40151c:	84 ff                	test   %bh,%bh
40151e:	0f 85 81 55 07 00    	jne    0x476aa5
401524:	33 db                	xor    %ebx,%ebx
401526:	85 c9                	test   %ecx,%ecx
401528:	0f 85 59 56 07 00    	jne    0x476b87
40152e:	6a 28                	push   $0x28
401530:	3b d9                	cmp    %ecx,%ebx
401532:	0f 85 6d 56 07 00    	jne    0x476ba5
401538:	e8 ad df 01 00       	call   0x41f4ea
40153d:	59                   	pop    %ecx
40153e:	85 c0                	test   %eax,%eax
401540:	0f 84 b5 00 00 00    	je     0x4015fb
401546:	8b c8                	mov    %eax,%ecx
401548:	e8 42 13 00 00       	call   0x40288f
40154d:	89 44 24 14          	mov    %eax,0x14(%esp)
401551:	8d 44 24 14          	lea    0x14(%esp),%eax
401555:	50                   	push   %eax
401556:	8d 8f c4 01 00 00    	lea    0x1c4(%edi),%ecx
40155c:	e8 45 13 00 00       	call   0x4028a6
401561:	8b 87 c8 01 00 00    	mov    0x1c8(%edi),%eax
401567:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
40156b:	8b 04 98             	mov    (%eax,%ebx,4),%eax
40156e:	8b 00                	mov    (%eax),%eax
401570:	89 18                	mov    %ebx,(%eax)
401572:	8b 87 c8 01 00 00    	mov    0x1c8(%edi),%eax
401578:	8b 04 98             	mov    (%eax,%ebx,4),%eax
40157b:	8b 00                	mov    (%eax),%eax
40157d:	89 48 04             	mov    %ecx,0x4(%eax)
401580:	8d 44 24 30          	lea    0x30(%esp),%eax
401584:	50                   	push   %eax
401585:	8b 87 c8 01 00 00    	mov    0x1c8(%edi),%eax
40158b:	8b 04 98             	mov    (%eax,%ebx,4),%eax
40158e:	8b 08                	mov    (%eax),%ecx
401590:	83 c1 08             	add    $0x8,%ecx
401593:	e8 55 59 00 00       	call   0x406eed
401598:	8b 4d 08             	mov    0x8(%ebp),%ecx
40159b:	8b 41 04             	mov    0x4(%ecx),%eax
40159e:	8b 30                	mov    (%eax),%esi
4015a0:	8b ce                	mov    %esi,%ecx
4015a2:	e8 c5 7d 00 00       	call   0x40936c
4015a7:	8b 87 c8 01 00 00    	mov    0x1c8(%edi),%eax
4015ad:	ff 76 08             	push   0x8(%esi)
4015b0:	8b 04 98             	mov    (%eax,%ebx,4),%eax
4015b3:	8b 08                	mov    (%eax),%ecx
4015b5:	83 c1 18             	add    $0x18,%ecx
4015b8:	e8 30 59 00 00       	call   0x406eed
4015bd:	8b 87 c8 01 00 00    	mov    0x1c8(%edi),%eax
4015c3:	ff 74 24 18          	push   0x18(%esp)
4015c7:	8b 04 98             	mov    (%eax,%ebx,4),%eax
4015ca:	8b 4c 24 14          	mov    0x14(%esp),%ecx
4015ce:	8b 00                	mov    (%eax),%eax
4015d0:	51                   	push   %ecx
4015d1:	ff 30                	push   (%eax)
4015d3:	ff 35 e8 10 4c 00    	push   0x4c10e8
4015d9:	ff 15 bc d4 48 00    	call   *0x48d4bc
4015df:	85 c0                	test   %eax,%eax
4015e1:	0f 84 e5 55 07 00    	je     0x476bcc
4015e7:	8d 4c 24 30          	lea    0x30(%esp),%ecx
4015eb:	e8 47 b5 00 00       	call   0x40cb37
4015f0:	5f                   	pop    %edi
4015f1:	5e                   	pop    %esi
4015f2:	33 c0                	xor    %eax,%eax
4015f4:	5b                   	pop    %ebx
4015f5:	8b e5                	mov    %ebp,%esp
4015f7:	5d                   	pop    %ebp
4015f8:	c2 08 00             	ret    $0x8
4015fb:	83 64 24 14 00       	andl   $0x0,0x14(%esp)
401600:	e9 4c ff ff ff       	jmp    0x401551
401605:	55                   	push   %ebp
401606:	8b ec                	mov    %esp,%ebp
401608:	83 e4 f8             	and    $0xfffffff8,%esp
40160b:	81 ec bc 01 00 00    	sub    $0x1bc,%esp
401611:	53                   	push   %ebx
401612:	56                   	push   %esi
401613:	57                   	push   %edi
401614:	8b f9                	mov    %ecx,%edi
401616:	8b 4d 08             	mov    0x8(%ebp),%ecx
401619:	89 7c 24 3c          	mov    %edi,0x3c(%esp)
40161d:	8b 41 08             	mov    0x8(%ecx),%eax
401620:	89 44 24 1c          	mov    %eax,0x1c(%esp)