40adc3:	8b c8                	mov    %eax,%ecx
40adc5:	8b 44 24 10          	mov    0x10(%esp),%eax
40adc9:	f7 e6                	mul    %esi
40adcb:	03 d1                	add    %ecx,%edx
40adcd:	72 0e                	jb     0x40addd
40adcf:	3b 54 24 0c          	cmp    0xc(%esp),%edx
40add3:	77 08                	ja     0x40addd
40add5:	72 0f                	jb     0x40ade6
40add7:	3b 44 24 08          	cmp    0x8(%esp),%eax
40addb:	76 09                	jbe    0x40ade6
40addd:	4e                   	dec    %esi
40adde:	2b 44 24 10          	sub    0x10(%esp),%eax
40ade2:	1b 54 24 14          	sbb    0x14(%esp),%edx
40ade6:	33 db                	xor    %ebx,%ebx
40ade8:	2b 44 24 08          	sub    0x8(%esp),%eax
40adec:	1b 54 24 0c          	sbb    0xc(%esp),%edx
40adf0:	f7 da                	neg    %edx
40adf2:	f7 d8                	neg    %eax
40adf4:	83 da 00             	sbb    $0x0,%edx
40adf7:	8b ca                	mov    %edx,%ecx
40adf9:	8b d3                	mov    %ebx,%edx
40adfb:	8b d9                	mov    %ecx,%ebx
40adfd:	8b c8                	mov    %eax,%ecx
40adff:	8b c6                	mov    %esi,%eax
40ae01:	5e                   	pop    %esi
40ae02:	c2 10 00             	ret    $0x10
40ae05:	8b ff                	mov    %edi,%edi
40ae07:	55                   	push   %ebp
40ae08:	8b ec                	mov    %esp,%ebp
40ae0a:	83 ec 10             	sub    $0x10,%esp
40ae0d:	a1 84 22 41 00       	mov    0x412284,%eax
40ae12:	33 c5                	xor    %ebp,%eax
40ae14:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ae17:	8b 55 18             	mov    0x18(%ebp),%edx
40ae1a:	53                   	push   %ebx
40ae1b:	33 db                	xor    %ebx,%ebx
40ae1d:	56                   	push   %esi
40ae1e:	57                   	push   %edi
40ae1f:	3b d3                	cmp    %ebx,%edx
40ae21:	7e 1f                	jle    0x40ae42
40ae23:	8b 45 14             	mov    0x14(%ebp),%eax
40ae26:	8b ca                	mov    %edx,%ecx
40ae28:	49                   	dec    %ecx
40ae29:	38 18                	cmp    %bl,(%eax)
40ae2b:	74 08                	je     0x40ae35
40ae2d:	40                   	inc    %eax
40ae2e:	3b cb                	cmp    %ebx,%ecx
40ae30:	75 f6                	jne    0x40ae28
40ae32:	83 c9 ff             	or     $0xffffffff,%ecx
40ae35:	8b c2                	mov    %edx,%eax
40ae37:	2b c1                	sub    %ecx,%eax
40ae39:	48                   	dec    %eax
40ae3a:	3b c2                	cmp    %edx,%eax
40ae3c:	7d 01                	jge    0x40ae3f
40ae3e:	40                   	inc    %eax
40ae3f:	89 45 18             	mov    %eax,0x18(%ebp)
40ae42:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40ae45:	39 5d 24             	cmp    %ebx,0x24(%ebp)
40ae48:	75 0b                	jne    0x40ae55
40ae4a:	8b 45 08             	mov    0x8(%ebp),%eax
40ae4d:	8b 00                	mov    (%eax),%eax
40ae4f:	8b 40 04             	mov    0x4(%eax),%eax
40ae52:	89 45 24             	mov    %eax,0x24(%ebp)
40ae55:	8b 35 30 f0 40 00    	mov    0x40f030,%esi
40ae5b:	33 c0                	xor    %eax,%eax
40ae5d:	39 5d 28             	cmp    %ebx,0x28(%ebp)
40ae60:	53                   	push   %ebx
40ae61:	53                   	push   %ebx
40ae62:	ff 75 18             	push   0x18(%ebp)
40ae65:	0f 95 c0             	setne  %al
40ae68:	ff 75 14             	push   0x14(%ebp)
40ae6b:	8d 04 c5 01 00 00 00 	lea    0x1(,%eax,8),%eax
40ae72:	50                   	push   %eax
40ae73:	ff 75 24             	push   0x24(%ebp)
40ae76:	ff d6                	call   *%esi
40ae78:	8b f8                	mov    %eax,%edi
40ae7a:	89 7d f0             	mov    %edi,-0x10(%ebp)
40ae7d:	3b fb                	cmp    %ebx,%edi
40ae7f:	75 07                	jne    0x40ae88
40ae81:	33 c0                	xor    %eax,%eax
40ae83:	e9 52 01 00 00       	jmp    0x40afda
40ae88:	7e 43                	jle    0x40aecd
40ae8a:	6a e0                	push   $0xffffffe0
40ae8c:	33 d2                	xor    %edx,%edx
40ae8e:	58                   	pop    %eax
40ae8f:	f7 f7                	div    %edi
40ae91:	83 f8 02             	cmp    $0x2,%eax
40ae94:	72 37                	jb     0x40aecd
40ae96:	8d 44 3f 08          	lea    0x8(%edi,%edi,1),%eax
40ae9a:	3d 00 04 00 00       	cmp    $0x400,%eax
40ae9f:	77 13                	ja     0x40aeb4
40aea1:	e8 5a c1 ff ff       	call   0x407000
40aea6:	8b c4                	mov    %esp,%eax
40aea8:	3b c3                	cmp    %ebx,%eax
40aeaa:	74 1c                	je     0x40aec8
40aeac:	c7 00 cc cc 00 00    	movl   $0xcccc,(%eax)
40aeb2:	eb 11                	jmp    0x40aec5
40aeb4:	50                   	push   %eax
40aeb5:	e8 35 73 ff ff       	call   0x4021ef
40aeba:	59                   	pop    %ecx
40aebb:	3b c3                	cmp    %ebx,%eax
40aebd:	74 09                	je     0x40aec8
40aebf:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
40aec5:	83 c0 08             	add    $0x8,%eax
40aec8:	89 45 f4             	mov    %eax,-0xc(%ebp)
40aecb:	eb 03                	jmp    0x40aed0
40aecd:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40aed0:	39 5d f4             	cmp    %ebx,-0xc(%ebp)
40aed3:	74 ac                	je     0x40ae81
40aed5:	57                   	push   %edi
40aed6:	ff 75 f4             	push   -0xc(%ebp)
40aed9:	ff 75 18             	push   0x18(%ebp)
40aedc:	ff 75 14             	push   0x14(%ebp)
40aedf:	6a 01                	push   $0x1
40aee1:	ff 75 24             	push   0x24(%ebp)
40aee4:	ff d6                	call   *%esi
40aee6:	85 c0                	test   %eax,%eax
40aee8:	0f 84 e0 00 00 00    	je     0x40afce
40aeee:	8b 35 f8 f0 40 00    	mov    0x40f0f8,%esi
40aef4:	53                   	push   %ebx
40aef5:	53                   	push   %ebx
40aef6:	57                   	push   %edi
40aef7:	ff 75 f4             	push   -0xc(%ebp)
40aefa:	ff 75 10             	push   0x10(%ebp)
40aefd:	ff 75 0c             	push   0xc(%ebp)
40af00:	ff d6                	call   *%esi
40af02:	89 45 f8             	mov    %eax,-0x8(%ebp)
40af05:	3b c3                	cmp    %ebx,%eax
40af07:	0f 84 c1 00 00 00    	je     0x40afce
40af0d:	b9 00 04 00 00       	mov    $0x400,%ecx
40af12:	85 4d 10             	test   %ecx,0x10(%ebp)
40af15:	74 29                	je     0x40af40
40af17:	8b 45 20             	mov    0x20(%ebp),%eax
40af1a:	3b c3                	cmp    %ebx,%eax
40af1c:	0f 84 ac 00 00 00    	je     0x40afce
40af22:	39 45 f8             	cmp    %eax,-0x8(%ebp)
40af25:	0f 8f a3 00 00 00    	jg     0x40afce
40af2b:	50                   	push   %eax
40af2c:	ff 75 1c             	push   0x1c(%ebp)
40af2f:	57                   	push   %edi
40af30:	ff 75 f4             	push   -0xc(%ebp)
40af33:	ff 75 10             	push   0x10(%ebp)
40af36:	ff 75 0c             	push   0xc(%ebp)
40af39:	ff d6                	call   *%esi
40af3b:	e9 8e 00 00 00       	jmp    0x40afce
40af40:	8b 7d f8             	mov    -0x8(%ebp),%edi
40af43:	3b fb                	cmp    %ebx,%edi
40af45:	7e 42                	jle    0x40af89
40af47:	6a e0                	push   $0xffffffe0
40af49:	33 d2                	xor    %edx,%edx
40af4b:	58                   	pop    %eax
40af4c:	f7 f7                	div    %edi
40af4e:	83 f8 02             	cmp    $0x2,%eax
40af51:	72 36                	jb     0x40af89
40af53:	8d 44 3f 08          	lea    0x8(%edi,%edi,1),%eax
40af57:	3b c1                	cmp    %ecx,%eax
40af59:	77 16                	ja     0x40af71
40af5b:	e8 a0 c0 ff ff       	call   0x407000
40af60:	8b fc                	mov    %esp,%edi
40af62:	3b fb                	cmp    %ebx,%edi
40af64:	74 68                	je     0x40afce
40af66:	c7 07 cc cc 00 00    	movl   $0xcccc,(%edi)
40af6c:	83 c7 08             	add    $0x8,%edi
40af6f:	eb 1a                	jmp    0x40af8b
40af71:	50                   	push   %eax
40af72:	e8 78 72 ff ff       	call   0x4021ef
40af77:	59                   	pop    %ecx
40af78:	3b c3                	cmp    %ebx,%eax
40af7a:	74 09                	je     0x40af85
40af7c:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
40af82:	83 c0 08             	add    $0x8,%eax
40af85:	8b f8                	mov    %eax,%edi
40af87:	eb 02                	jmp    0x40af8b
40af89:	33 ff                	xor    %edi,%edi
40af8b:	3b fb                	cmp    %ebx,%edi
40af8d:	74 3f                	je     0x40afce
40af8f:	ff 75 f8             	push   -0x8(%ebp)
40af92:	57                   	push   %edi
40af93:	ff 75 f0             	push   -0x10(%ebp)
40af96:	ff 75 f4             	push   -0xc(%ebp)
40af99:	ff 75 10             	push   0x10(%ebp)
40af9c:	ff 75 0c             	push   0xc(%ebp)
40af9f:	ff d6                	call   *%esi
40afa1:	85 c0                	test   %eax,%eax
40afa3:	74 22                	je     0x40afc7
40afa5:	53                   	push   %ebx
40afa6:	53                   	push   %ebx
40afa7:	39 5d 20             	cmp    %ebx,0x20(%ebp)
40afaa:	75 04                	jne    0x40afb0
40afac:	53                   	push   %ebx
40afad:	53                   	push   %ebx
40afae:	eb 06                	jmp    0x40afb6
40afb0:	ff 75 20             	push   0x20(%ebp)
40afb3:	ff 75 1c             	push   0x1c(%ebp)
40afb6:	ff 75 f8             	push   -0x8(%ebp)
40afb9:	57                   	push   %edi
40afba:	53                   	push   %ebx
40afbb:	ff 75 24             	push   0x24(%ebp)
40afbe:	ff 15 10 f1 40 00    	call   *0x40f110
40afc4:	89 45 f8             	mov    %eax,-0x8(%ebp)
40afc7:	57                   	push   %edi
40afc8:	e8 20 75 ff ff       	call   0x4024ed
40afcd:	59                   	pop    %ecx
40afce:	ff 75 f4             	push   -0xc(%ebp)
40afd1:	e8 17 75 ff ff       	call   0x4024ed
40afd6:	8b 45 f8             	mov    -0x8(%ebp),%eax
40afd9:	59                   	pop    %ecx
40afda:	8d 65 e4             	lea    -0x1c(%ebp),%esp
40afdd:	5f                   	pop    %edi
40afde:	5e                   	pop    %esi
40afdf:	5b                   	pop    %ebx
40afe0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40afe3:	33 cd                	xor    %ebp,%ecx
40afe5:	e8 ba 6d ff ff       	call   0x401da4
40afea:	c9                   	leave
40afeb:	c3                   	ret
40afec:	8b ff                	mov    %edi,%edi
40afee:	55                   	push   %ebp
40afef:	8b ec                	mov    %esp,%ebp
40aff1:	83 ec 10             	sub    $0x10,%esp
40aff4:	ff 75 08             	push   0x8(%ebp)
40aff7:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40affa:	e8 e6 6f ff ff       	call   0x401fe5
40afff:	ff 75 28             	push   0x28(%ebp)
40b002:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b005:	ff 75 24             	push   0x24(%ebp)
40b008:	ff 75 20             	push   0x20(%ebp)
40b00b:	ff 75 1c             	push   0x1c(%ebp)
40b00e:	ff 75 18             	push   0x18(%ebp)
40b011:	ff 75 14             	push   0x14(%ebp)
40b014:	ff 75 10             	push   0x10(%ebp)
40b017:	ff 75 0c             	push   0xc(%ebp)
40b01a:	50                   	push   %eax
40b01b:	e8 e5 fd ff ff       	call   0x40ae05
40b020:	83 c4 24             	add    $0x24,%esp
40b023:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40b027:	74 07                	je     0x40b030
40b029:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40b02c:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40b030:	c9                   	leave
40b031:	c3                   	ret
40b032:	8b ff                	mov    %edi,%edi
40b034:	55                   	push   %ebp
40b035:	8b ec                	mov    %esp,%ebp
40b037:	51                   	push   %ecx
40b038:	51                   	push   %ecx
40b039:	a1 84 22 41 00       	mov    0x412284,%eax
40b03e:	33 c5                	xor    %ebp,%eax
40b040:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b043:	53                   	push   %ebx
40b044:	33 db                	xor    %ebx,%ebx
40b046:	56                   	push   %esi
40b047:	57                   	push   %edi
40b048:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40b04b:	39 5d 1c             	cmp    %ebx,0x1c(%ebp)
40b04e:	75 0b                	jne    0x40b05b
40b050:	8b 45 08             	mov    0x8(%ebp),%eax
40b053:	8b 00                	mov    (%eax),%eax
40b055:	8b 40 04             	mov    0x4(%eax),%eax
40b058:	89 45 1c             	mov    %eax,0x1c(%ebp)
40b05b:	8b 35 30 f0 40 00    	mov    0x40f030,%esi
40b061:	33 c0                	xor    %eax,%eax
40b063:	39 5d 20             	cmp    %ebx,0x20(%ebp)
40b066:	53                   	push   %ebx
40b067:	53                   	push   %ebx
40b068:	ff 75 14             	push   0x14(%ebp)
40b06b:	0f 95 c0             	setne  %al
40b06e:	ff 75 10             	push   0x10(%ebp)
40b071:	8d 04 c5 01 00 00 00 	lea    0x1(,%eax,8),%eax
40b078:	50                   	push   %eax
40b079:	ff 75 1c             	push   0x1c(%ebp)
40b07c:	ff d6                	call   *%esi
40b07e:	8b f8                	mov    %eax,%edi
40b080:	3b fb                	cmp    %ebx,%edi
40b082:	75 04                	jne    0x40b088
40b084:	33 c0                	xor    %eax,%eax
40b086:	eb 7f                	jmp    0x40b107
40b088:	7e 3c                	jle    0x40b0c6
40b08a:	81 ff f0 ff ff 7f    	cmp    $0x7ffffff0,%edi
40b090:	77 34                	ja     0x40b0c6
40b092:	8d 44 3f 08          	lea    0x8(%edi,%edi,1),%eax
40b096:	3d 00 04 00 00       	cmp    $0x400,%eax
40b09b:	77 13                	ja     0x40b0b0
40b09d:	e8 5e bf ff ff       	call   0x407000
40b0a2:	8b c4                	mov    %esp,%eax
40b0a4:	3b c3                	cmp    %ebx,%eax
40b0a6:	74 1c                	je     0x40b0c4
40b0a8:	c7 00 cc cc 00 00    	movl   $0xcccc,(%eax)
40b0ae:	eb 11                	jmp    0x40b0c1
40b0b0:	50                   	push   %eax
40b0b1:	e8 39 71 ff ff       	call   0x4021ef
40b0b6:	59                   	pop    %ecx
40b0b7:	3b c3                	cmp    %ebx,%eax
40b0b9:	74 09                	je     0x40b0c4
40b0bb:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
40b0c1:	83 c0 08             	add    $0x8,%eax
40b0c4:	8b d8                	mov    %eax,%ebx
40b0c6:	85 db                	test   %ebx,%ebx
40b0c8:	74 ba                	je     0x40b084
40b0ca:	8d 04 3f             	lea    (%edi,%edi,1),%eax
40b0cd:	50                   	push   %eax
40b0ce:	6a 00                	push   $0x0
40b0d0:	53                   	push   %ebx
40b0d1:	e8 0a c9 ff ff       	call   0x4079e0
40b0d6:	83 c4 0c             	add    $0xc,%esp
40b0d9:	57                   	push   %edi
40b0da:	53                   	push   %ebx
40b0db:	ff 75 14             	push   0x14(%ebp)
40b0de:	ff 75 10             	push   0x10(%ebp)
40b0e1:	6a 01                	push   $0x1
40b0e3:	ff 75 1c             	push   0x1c(%ebp)
40b0e6:	ff d6                	call   *%esi
40b0e8:	85 c0                	test   %eax,%eax
40b0ea:	74 11                	je     0x40b0fd
40b0ec:	ff 75 18             	push   0x18(%ebp)
40b0ef:	50                   	push   %eax
40b0f0:	53                   	push   %ebx
40b0f1:	ff 75 0c             	push   0xc(%ebp)
40b0f4:	ff 15 7c f0 40 00    	call   *0x40f07c
40b0fa:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b0fd:	53                   	push   %ebx
40b0fe:	e8 ea 73 ff ff       	call   0x4024ed
40b103:	8b 45 f8             	mov    -0x8(%ebp),%eax
40b106:	59                   	pop    %ecx
40b107:	8d 65 ec             	lea    -0x14(%ebp),%esp
40b10a:	5f                   	pop    %edi
40b10b:	5e                   	pop    %esi
40b10c:	5b                   	pop    %ebx
40b10d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b110:	33 cd                	xor    %ebp,%ecx
40b112:	e8 8d 6c ff ff       	call   0x401da4
40b117:	c9                   	leave
40b118:	c3                   	ret
40b119:	8b ff                	mov    %edi,%edi
40b11b:	55                   	push   %ebp
40b11c:	8b ec                	mov    %esp,%ebp
40b11e:	83 ec 10             	sub    $0x10,%esp
40b121:	ff 75 08             	push   0x8(%ebp)
40b124:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40b127:	e8 b9 6e ff ff       	call   0x401fe5
40b12c:	ff 75 24             	push   0x24(%ebp)
40b12f:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b132:	ff 75 1c             	push   0x1c(%ebp)
40b135:	ff 75 18             	push   0x18(%ebp)
40b138:	ff 75 14             	push   0x14(%ebp)
40b13b:	ff 75 10             	push   0x10(%ebp)
40b13e:	ff 75 0c             	push   0xc(%ebp)
40b141:	50                   	push   %eax
40b142:	e8 eb fe ff ff       	call   0x40b032
40b147:	83 c4 1c             	add    $0x1c,%esp