46fe81:	50                   	push   %eax
46fe82:	e8 65 89 01 00       	call   0x4887ec
46fe87:	8b 75 0c             	mov    0xc(%ebp),%esi
46fe8a:	8b f8                	mov    %eax,%edi
46fe8c:	8b ce                	mov    %esi,%ecx
46fe8e:	e8 8d 9b f9 ff       	call   0x409a20
46fe93:	89 3e                	mov    %edi,(%esi)
46fe95:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
46fe9c:	8d 4d ec             	lea    -0x14(%ebp),%ecx
46fe9f:	e8 c0 5b f9 ff       	call   0x405a64
46fea4:	5f                   	pop    %edi
46fea5:	5e                   	pop    %esi
46fea6:	8b c3                	mov    %ebx,%eax
46fea8:	5b                   	pop    %ebx
46fea9:	8b e5                	mov    %ebp,%esp
46feab:	5d                   	pop    %ebp
46feac:	c2 08 00             	ret    $0x8
46feaf:	55                   	push   %ebp
46feb0:	8b ec                	mov    %esp,%ebp
46feb2:	51                   	push   %ecx
46feb3:	51                   	push   %ecx
46feb4:	53                   	push   %ebx
46feb5:	56                   	push   %esi
46feb6:	8b 75 08             	mov    0x8(%ebp),%esi
46feb9:	33 c0                	xor    %eax,%eax
46febb:	57                   	push   %edi
46febc:	8b 7e 04             	mov    0x4(%esi),%edi
46febf:	8b 4f 08             	mov    0x8(%edi),%ecx
46fec2:	89 4d fc             	mov    %ecx,-0x4(%ebp)
46fec5:	83 79 0c 04          	cmpl   $0x4,0xc(%ecx)
46fec9:	75 01                	jne    0x46fecc
46fecb:	40                   	inc    %eax
46fecc:	8b 5f 0c             	mov    0xc(%edi),%ebx
46fecf:	89 5d f8             	mov    %ebx,-0x8(%ebp)
46fed2:	83 7b 0c 04          	cmpl   $0x4,0xc(%ebx)
46fed6:	75 03                	jne    0x46fedb
46fed8:	83 c0 02             	add    $0x2,%eax
46fedb:	83 e8 00             	sub    $0x0,%eax
46fede:	0f 84 bf 00 00 00    	je     0x46ffa3
46fee4:	48                   	dec    %eax
46fee5:	0f 84 82 00 00 00    	je     0x46ff6d
46feeb:	48                   	dec    %eax
46feec:	74 4a                	je     0x46ff38
46feee:	48                   	dec    %eax
46feef:	0f 85 ee 00 00 00    	jne    0x46ffe3
46fef5:	8b cb                	mov    %ebx,%ecx
46fef7:	e8 9b 9a f9 ff       	call   0x409997
46fefc:	8b 43 08             	mov    0x8(%ebx),%eax
46feff:	8b 38                	mov    (%eax),%edi
46ff01:	8b 46 04             	mov    0x4(%esi),%eax
46ff04:	8b 70 08             	mov    0x8(%eax),%esi
46ff07:	8b ce                	mov    %esi,%ecx
46ff09:	e8 89 9a f9 ff       	call   0x409997
46ff0e:	8b 46 08             	mov    0x8(%esi),%eax
46ff11:	57                   	push   %edi
46ff12:	8b 10                	mov    (%eax),%edx
46ff14:	8b 45 08             	mov    0x8(%ebp),%eax
46ff17:	52                   	push   %edx
46ff18:	8b 40 04             	mov    0x4(%eax),%eax
46ff1b:	8b 48 04             	mov    0x4(%eax),%ecx
46ff1e:	8b 30                	mov    (%eax),%esi
46ff20:	e8 77 9d f9 ff       	call   0x409c9c
46ff25:	50                   	push   %eax
46ff26:	8b ce                	mov    %esi,%ecx
46ff28:	e8 6f 9d f9 ff       	call   0x409c9c
46ff2d:	50                   	push   %eax
46ff2e:	e8 aa 7f 01 00       	call   0x487edd
46ff33:	e9 96 00 00 00       	jmp    0x46ffce
46ff38:	8b cb                	mov    %ebx,%ecx
46ff3a:	e8 58 9a f9 ff       	call   0x409997
46ff3f:	8b 43 08             	mov    0x8(%ebx),%eax
46ff42:	8b 10                	mov    (%eax),%edx
46ff44:	8b 46 04             	mov    0x4(%esi),%eax
46ff47:	52                   	push   %edx
46ff48:	8b 48 08             	mov    0x8(%eax),%ecx
46ff4b:	8b 70 04             	mov    0x4(%eax),%esi
46ff4e:	8b 38                	mov    (%eax),%edi
46ff50:	e8 47 9d f9 ff       	call   0x409c9c
46ff55:	50                   	push   %eax
46ff56:	8b ce                	mov    %esi,%ecx
46ff58:	e8 3f 9d f9 ff       	call   0x409c9c
46ff5d:	50                   	push   %eax
46ff5e:	8b cf                	mov    %edi,%ecx
46ff60:	e8 37 9d f9 ff       	call   0x409c9c
46ff65:	50                   	push   %eax
46ff66:	e8 72 7f 01 00       	call   0x487edd
46ff6b:	eb 61                	jmp    0x46ffce
46ff6d:	e8 25 9a f9 ff       	call   0x409997
46ff72:	8b 4d fc             	mov    -0x4(%ebp),%ecx
46ff75:	8b 41 08             	mov    0x8(%ecx),%eax
46ff78:	8b 4d f8             	mov    -0x8(%ebp),%ecx
46ff7b:	8b 38                	mov    (%eax),%edi
46ff7d:	8b 46 04             	mov    0x4(%esi),%eax
46ff80:	8b 70 04             	mov    0x4(%eax),%esi
46ff83:	8b 18                	mov    (%eax),%ebx
46ff85:	e8 12 9d f9 ff       	call   0x409c9c
46ff8a:	50                   	push   %eax
46ff8b:	57                   	push   %edi
46ff8c:	8b ce                	mov    %esi,%ecx
46ff8e:	e8 09 9d f9 ff       	call   0x409c9c
46ff93:	50                   	push   %eax
46ff94:	8b cb                	mov    %ebx,%ecx
46ff96:	e8 01 9d f9 ff       	call   0x409c9c
46ff9b:	50                   	push   %eax
46ff9c:	e8 3c 7f 01 00       	call   0x487edd
46ffa1:	eb 2b                	jmp    0x46ffce
46ffa3:	8b 77 04             	mov    0x4(%edi),%esi
46ffa6:	8b cb                	mov    %ebx,%ecx
46ffa8:	8b 3f                	mov    (%edi),%edi
46ffaa:	e8 ed 9c f9 ff       	call   0x409c9c
46ffaf:	8b 4d fc             	mov    -0x4(%ebp),%ecx
46ffb2:	50                   	push   %eax
46ffb3:	e8 e4 9c f9 ff       	call   0x409c9c
46ffb8:	50                   	push   %eax
46ffb9:	8b ce                	mov    %esi,%ecx
46ffbb:	e8 dc 9c f9 ff       	call   0x409c9c
46ffc0:	50                   	push   %eax
46ffc1:	8b cf                	mov    %edi,%ecx
46ffc3:	e8 d4 9c f9 ff       	call   0x409c9c
46ffc8:	50                   	push   %eax
46ffc9:	e8 0f 7f 01 00       	call   0x487edd
46ffce:	8b 75 0c             	mov    0xc(%ebp),%esi
46ffd1:	8b f8                	mov    %eax,%edi
46ffd3:	8b ce                	mov    %esi,%ecx
46ffd5:	e8 46 9a f9 ff       	call   0x409a20
46ffda:	89 3e                	mov    %edi,(%esi)
46ffdc:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
46ffe3:	5f                   	pop    %edi
46ffe4:	5e                   	pop    %esi
46ffe5:	33 c0                	xor    %eax,%eax
46ffe7:	5b                   	pop    %ebx
46ffe8:	8b e5                	mov    %ebp,%esp
46ffea:	5d                   	pop    %ebp
46ffeb:	c2 08 00             	ret    $0x8
46ffee:	55                   	push   %ebp
46ffef:	8b ec                	mov    %esp,%ebp
46fff1:	83 ec 10             	sub    $0x10,%esp
46fff4:	53                   	push   %ebx
46fff5:	56                   	push   %esi
46fff6:	8b 75 08             	mov    0x8(%ebp),%esi
46fff9:	33 db                	xor    %ebx,%ebx
46fffb:	43                   	inc    %ebx
46fffc:	57                   	push   %edi
46fffd:	33 ff                	xor    %edi,%edi
46ffff:	89 5d fc             	mov    %ebx,-0x4(%ebp)
470002:	89 7d f0             	mov    %edi,-0x10(%ebp)
470005:	89 7d f8             	mov    %edi,-0x8(%ebp)
470008:	39 5e 08             	cmp    %ebx,0x8(%esi)
47000b:	76 0e                	jbe    0x47001b
47000d:	8b 46 04             	mov    0x4(%esi),%eax
470010:	8d 4d f0             	lea    -0x10(%ebp),%ecx
470013:	ff 70 04             	push   0x4(%eax)
470016:	e8 81 9e f9 ff       	call   0x409e9c
47001b:	83 ec 10             	sub    $0x10,%esp
47001e:	8d 45 f0             	lea    -0x10(%ebp),%eax
470021:	8b cc                	mov    %esp,%ecx
470023:	50                   	push   %eax
470024:	89 79 08             	mov    %edi,0x8(%ecx)
470027:	e8 94 9a f9 ff       	call   0x409ac0
47002c:	8b 46 04             	mov    0x4(%esi),%eax
47002f:	8b 08                	mov    (%eax),%ecx
470031:	e8 66 9c f9 ff       	call   0x409c9c
470036:	50                   	push   %eax
470037:	e8 15 88 01 00       	call   0x488851
47003c:	8b 75 0c             	mov    0xc(%ebp),%esi
47003f:	8b f8                	mov    %eax,%edi
470041:	8b ce                	mov    %esi,%ecx
470043:	e8 d8 99 f9 ff       	call   0x409a20
470048:	8d 4d f0             	lea    -0x10(%ebp),%ecx
47004b:	89 5e 0c             	mov    %ebx,0xc(%esi)
47004e:	89 3e                	mov    %edi,(%esi)
470050:	e8 cb 99 f9 ff       	call   0x409a20
470055:	5f                   	pop    %edi
470056:	5e                   	pop    %esi
470057:	33 c0                	xor    %eax,%eax
470059:	5b                   	pop    %ebx
47005a:	8b e5                	mov    %ebp,%esp
47005c:	5d                   	pop    %ebp
47005d:	c2 08 00             	ret    $0x8
470060:	55                   	push   %ebp
470061:	8b ec                	mov    %esp,%ebp
470063:	8b 45 08             	mov    0x8(%ebp),%eax
470066:	53                   	push   %ebx
470067:	56                   	push   %esi
470068:	8b d9                	mov    %ecx,%ebx
47006a:	8b 40 04             	mov    0x4(%eax),%eax
47006d:	57                   	push   %edi
47006e:	8b 48 04             	mov    0x4(%eax),%ecx
470071:	8b 30                	mov    (%eax),%esi
470073:	e8 24 9c f9 ff       	call   0x409c9c
470078:	50                   	push   %eax
470079:	8b ce                	mov    %esi,%ecx
47007b:	e8 1c 9c f9 ff       	call   0x409c9c
470080:	50                   	push   %eax
470081:	e8 2e 88 01 00       	call   0x4888b4
470086:	8b f8                	mov    %eax,%edi
470088:	85 ff                	test   %edi,%edi
47008a:	79 14                	jns    0x4700a0
47008c:	8b 03                	mov    (%ebx),%eax
47008e:	f7 df                	neg    %edi
470090:	6a 00                	push   $0x0
470092:	57                   	push   %edi
470093:	8b 48 04             	mov    0x4(%eax),%ecx
470096:	03 cb                	add    %ebx,%ecx
470098:	e8 c4 fe fa ff       	call   0x41ff61
47009d:	33 ff                	xor    %edi,%edi
47009f:	47                   	inc    %edi
4700a0:	8b 75 0c             	mov    0xc(%ebp),%esi
4700a3:	8b ce                	mov    %esi,%ecx
4700a5:	e8 76 99 f9 ff       	call   0x409a20
4700aa:	89 3e                	mov    %edi,(%esi)
4700ac:	33 c0                	xor    %eax,%eax
4700ae:	5f                   	pop    %edi
4700af:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
4700b6:	5e                   	pop    %esi
4700b7:	5b                   	pop    %ebx
4700b8:	5d                   	pop    %ebp
4700b9:	c2 08 00             	ret    $0x8
4700bc:	55                   	push   %ebp
4700bd:	8b ec                	mov    %esp,%ebp
4700bf:	8b 45 08             	mov    0x8(%ebp),%eax
4700c2:	53                   	push   %ebx
4700c3:	56                   	push   %esi
4700c4:	8b d9                	mov    %ecx,%ebx
4700c6:	8b 40 04             	mov    0x4(%eax),%eax
4700c9:	57                   	push   %edi
4700ca:	8b 48 04             	mov    0x4(%eax),%ecx
4700cd:	8b 30                	mov    (%eax),%esi
4700cf:	e8 c8 9b f9 ff       	call   0x409c9c
4700d4:	50                   	push   %eax
4700d5:	8b ce                	mov    %esi,%ecx
4700d7:	e8 c0 9b f9 ff       	call   0x409c9c
4700dc:	50                   	push   %eax
4700dd:	e8 de 89 01 00       	call   0x488ac0
4700e2:	8b f8                	mov    %eax,%edi
4700e4:	85 ff                	test   %edi,%edi
4700e6:	79 14                	jns    0x4700fc
4700e8:	8b 03                	mov    (%ebx),%eax
4700ea:	f7 df                	neg    %edi
4700ec:	6a 00                	push   $0x0
4700ee:	57                   	push   %edi
4700ef:	8b 48 04             	mov    0x4(%eax),%ecx
4700f2:	03 cb                	add    %ebx,%ecx
4700f4:	e8 68 fe fa ff       	call   0x41ff61
4700f9:	33 ff                	xor    %edi,%edi
4700fb:	47                   	inc    %edi
4700fc:	8b 75 0c             	mov    0xc(%ebp),%esi
4700ff:	8b ce                	mov    %esi,%ecx
470101:	e8 1a 99 f9 ff       	call   0x409a20
470106:	89 3e                	mov    %edi,(%esi)
470108:	33 c0                	xor    %eax,%eax
47010a:	5f                   	pop    %edi
47010b:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
470112:	5e                   	pop    %esi
470113:	5b                   	pop    %ebx
470114:	5d                   	pop    %ebp
470115:	c2 08 00             	ret    $0x8
470118:	55                   	push   %ebp
470119:	8b ec                	mov    %esp,%ebp
47011b:	8b 45 08             	mov    0x8(%ebp),%eax
47011e:	56                   	push   %esi
47011f:	57                   	push   %edi
470120:	8b 40 04             	mov    0x4(%eax),%eax
470123:	8b 48 04             	mov    0x4(%eax),%ecx
470126:	8b 30                	mov    (%eax),%esi
470128:	e8 6f 9b f9 ff       	call   0x409c9c
47012d:	50                   	push   %eax
47012e:	8b ce                	mov    %esi,%ecx
470130:	e8 67 9b f9 ff       	call   0x409c9c
470135:	50                   	push   %eax
470136:	e8 c0 8a 01 00       	call   0x488bfb
47013b:	8b 75 0c             	mov    0xc(%ebp),%esi
47013e:	8b f8                	mov    %eax,%edi
470140:	8b ce                	mov    %esi,%ecx
470142:	e8 d9 98 f9 ff       	call   0x409a20
470147:	89 3e                	mov    %edi,(%esi)
470149:	33 c0                	xor    %eax,%eax
47014b:	5f                   	pop    %edi
47014c:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
470153:	5e                   	pop    %esi
470154:	5d                   	pop    %ebp
470155:	c2 08 00             	ret    $0x8
470158:	55                   	push   %ebp
470159:	8b ec                	mov    %esp,%ebp
47015b:	83 e4 f8             	and    $0xfffffff8,%esp
47015e:	83 ec 10             	sub    $0x10,%esp
470161:	8d 0c 24             	lea    (%esp),%ecx
470164:	56                   	push   %esi
470165:	57                   	push   %edi
470166:	e8 5c 76 f9 ff       	call   0x4077c7
47016b:	8b 7d 08             	mov    0x8(%ebp),%edi
47016e:	83 7f 08 02          	cmpl   $0x2,0x8(%edi)
470172:	76 19                	jbe    0x47018d
470174:	8b 47 04             	mov    0x4(%edi),%eax
470177:	8b 70 08             	mov    0x8(%eax),%esi
47017a:	8b ce                	mov    %esi,%ecx
47017c:	e8 16 98 f9 ff       	call   0x409997
470181:	ff 76 08             	push   0x8(%esi)
470184:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
470188:	e8 1a 80 f9 ff       	call   0x4081a7
47018d:	8b 47 04             	mov    0x4(%edi),%eax
470190:	8b 70 04             	mov    0x4(%eax),%esi
470193:	8b ce                	mov    %esi,%ecx
470195:	e8 fd 97 f9 ff       	call   0x409997
47019a:	8b 46 08             	mov    0x8(%esi),%eax
47019d:	ff 74 24 08          	push   0x8(%esp)
4701a1:	8b 08                	mov    (%eax),%ecx
4701a3:	8b 47 04             	mov    0x4(%edi),%eax
4701a6:	51                   	push   %ecx
4701a7:	8b 08                	mov    (%eax),%ecx
4701a9:	e8 ee 9a f9 ff       	call   0x409c9c
4701ae:	50                   	push   %eax
4701af:	e8 90 8a 01 00       	call   0x488c44
4701b4:	8b 75 0c             	mov    0xc(%ebp),%esi
4701b7:	8b f8                	mov    %eax,%edi
4701b9:	8b ce                	mov    %esi,%ecx
4701bb:	e8 60 98 f9 ff       	call   0x409a20
4701c0:	8d 4c 24 08          	lea    0x8(%esp),%ecx
4701c4:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
4701cb:	89 3e                	mov    %edi,(%esi)
4701cd:	e8 92 58 f9 ff       	call   0x405a64
4701d2:	5f                   	pop    %edi
4701d3:	33 c0                	xor    %eax,%eax
4701d5:	5e                   	pop    %esi
4701d6:	8b e5                	mov    %ebp,%esp
4701d8:	5d                   	pop    %ebp
4701d9:	c2 08 00             	ret    $0x8
4701dc:	55                   	push   %ebp
4701dd:	8b ec                	mov    %esp,%ebp
4701df:	56                   	push   %esi
4701e0:	8b 75 08             	mov    0x8(%ebp),%esi
4701e3:	57                   	push   %edi
4701e4:	33 ff                	xor    %edi,%edi
4701e6:	83 7e 08 01          	cmpl   $0x1,0x8(%esi)
4701ea:	76 0d                	jbe    0x4701f9
4701ec:	8b 46 04             	mov    0x4(%esi),%eax
4701ef:	8b 48 04             	mov    0x4(%eax),%ecx
4701f2:	e8 c4 87 ff ff       	call   0x4689bb
4701f7:	8b f8                	mov    %eax,%edi
4701f9:	8b 4e 04             	mov    0x4(%esi),%ecx
4701fc:	8b 09                	mov    (%ecx),%ecx
4701fe:	e8 99 9a f9 ff       	call   0x409c9c
470203:	50                   	push   %eax
470204:	6a ff                	push   $0xffffffff
470206:	57                   	push   %edi
470207:	6a ff                	push   $0xffffffff
470209:	6a 00                	push   $0x0
47020b:	6a ff                	push   $0xffffffff
47020d:	6a 00                	push   $0x0
47020f:	e8 5e 29 f9 ff       	call   0x402b72