40ae2b:	a1 14 60 41 00       	mov    0x416014,%eax
40ae30:	33 c5                	xor    %ebp,%eax
40ae32:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ae35:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40ae38:	53                   	push   %ebx
40ae39:	8b 5d 14             	mov    0x14(%ebp),%ebx
40ae3c:	56                   	push   %esi
40ae3d:	8b 75 08             	mov    0x8(%ebp),%esi
40ae40:	89 b5 fc fe ff ff    	mov    %esi,-0x104(%ebp)
40ae46:	89 9d f8 fe ff ff    	mov    %ebx,-0x108(%ebp)
40ae4c:	57                   	push   %edi
40ae4d:	8b 7d 10             	mov    0x10(%ebp),%edi
40ae50:	89 bd 00 ff ff ff    	mov    %edi,-0x100(%ebp)
40ae56:	85 f6                	test   %esi,%esi
40ae58:	75 25                	jne    0x40ae7f
40ae5a:	85 c9                	test   %ecx,%ecx
40ae5c:	74 21                	je     0x40ae7f
40ae5e:	e8 ed ca ff ff       	call   0x407950
40ae63:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ae69:	e8 ae ae ff ff       	call   0x405d1c
40ae6e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ae71:	5f                   	pop    %edi
40ae72:	5e                   	pop    %esi
40ae73:	33 cd                	xor    %ebp,%ecx
40ae75:	5b                   	pop    %ebx
40ae76:	e8 ba 87 ff ff       	call   0x403635
40ae7b:	8b e5                	mov    %ebp,%esp
40ae7d:	5d                   	pop    %ebp
40ae7e:	c3                   	ret
40ae7f:	85 ff                	test   %edi,%edi
40ae81:	74 db                	je     0x40ae5e
40ae83:	85 db                	test   %ebx,%ebx
40ae85:	74 d7                	je     0x40ae5e
40ae87:	c7 85 e8 fe ff ff 00 	movl   $0x0,-0x118(%ebp)
40ae8e:	00 00 00
40ae91:	83 f9 02             	cmp    $0x2,%ecx
40ae94:	72 d8                	jb     0x40ae6e
40ae96:	49                   	dec    %ecx
40ae97:	0f af cf             	imul   %edi,%ecx
40ae9a:	03 ce                	add    %esi,%ecx
40ae9c:	89 8d 08 ff ff ff    	mov    %ecx,-0xf8(%ebp)
40aea2:	8b c1                	mov    %ecx,%eax
40aea4:	33 d2                	xor    %edx,%edx
40aea6:	2b c6                	sub    %esi,%eax
40aea8:	f7 f7                	div    %edi
40aeaa:	40                   	inc    %eax
40aeab:	83 f8 08             	cmp    $0x8,%eax
40aeae:	0f 87 b6 00 00 00    	ja     0x40af6a
40aeb4:	3b ce                	cmp    %esi,%ecx
40aeb6:	0f 86 27 04 00 00    	jbe    0x40b2e3
40aebc:	8d 14 37             	lea    (%edi,%esi,1),%edx
40aebf:	89 95 f0 fe ff ff    	mov    %edx,-0x110(%ebp)
40aec5:	8b c6                	mov    %esi,%eax
40aec7:	8b f2                	mov    %edx,%esi
40aec9:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
40aecf:	3b f1                	cmp    %ecx,%esi
40aed1:	77 2f                	ja     0x40af02
40aed3:	50                   	push   %eax
40aed4:	56                   	push   %esi
40aed5:	8b cb                	mov    %ebx,%ecx
40aed7:	ff 15 18 f1 40 00    	call   *0x40f118
40aedd:	ff d3                	call   *%ebx
40aedf:	83 c4 08             	add    $0x8,%esp
40aee2:	85 c0                	test   %eax,%eax
40aee4:	7e 0a                	jle    0x40aef0
40aee6:	8b c6                	mov    %esi,%eax
40aee8:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
40aeee:	eb 06                	jmp    0x40aef6
40aef0:	8b 85 04 ff ff ff    	mov    -0xfc(%ebp),%eax
40aef6:	8b 8d 08 ff ff ff    	mov    -0xf8(%ebp),%ecx
40aefc:	03 f7                	add    %edi,%esi
40aefe:	3b f1                	cmp    %ecx,%esi
40af00:	76 d1                	jbe    0x40aed3
40af02:	89 bd f4 fe ff ff    	mov    %edi,-0x10c(%ebp)
40af08:	8b d1                	mov    %ecx,%edx
40af0a:	3b c1                	cmp    %ecx,%eax
40af0c:	74 3b                	je     0x40af49
40af0e:	2b c1                	sub    %ecx,%eax
40af10:	8b df                	mov    %edi,%ebx
40af12:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
40af18:	eb 06                	jmp    0x40af20
40af1a:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40af20:	8a 0c 10             	mov    (%eax,%edx,1),%cl
40af23:	8d 52 01             	lea    0x1(%edx),%edx
40af26:	8b b5 04 ff ff ff    	mov    -0xfc(%ebp),%esi
40af2c:	8a 42 ff             	mov    -0x1(%edx),%al
40af2f:	88 44 16 ff          	mov    %al,-0x1(%esi,%edx,1)
40af33:	8b c6                	mov    %esi,%eax
40af35:	88 4a ff             	mov    %cl,-0x1(%edx)
40af38:	83 eb 01             	sub    $0x1,%ebx
40af3b:	75 e3                	jne    0x40af20
40af3d:	8b 9d f8 fe ff ff    	mov    -0x108(%ebp),%ebx
40af43:	8b 8d 08 ff ff ff    	mov    -0xf8(%ebp),%ecx
40af49:	8b b5 fc fe ff ff    	mov    -0x104(%ebp),%esi
40af4f:	2b cf                	sub    %edi,%ecx
40af51:	8b 95 f0 fe ff ff    	mov    -0x110(%ebp),%edx
40af57:	89 8d 08 ff ff ff    	mov    %ecx,-0xf8(%ebp)
40af5d:	3b ce                	cmp    %esi,%ecx
40af5f:	0f 87 60 ff ff ff    	ja     0x40aec5
40af65:	e9 79 03 00 00       	jmp    0x40b2e3
40af6a:	d1 e8                	shr    $1,%eax
40af6c:	8b cb                	mov    %ebx,%ecx
40af6e:	0f af c7             	imul   %edi,%eax
40af71:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
40af77:	8d 3c 30             	lea    (%eax,%esi,1),%edi
40af7a:	57                   	push   %edi
40af7b:	56                   	push   %esi
40af7c:	89 bd ec fe ff ff    	mov    %edi,-0x114(%ebp)
40af82:	ff 15 18 f1 40 00    	call   *0x40f118
40af88:	ff d3                	call   *%ebx
40af8a:	8b b5 00 ff ff ff    	mov    -0x100(%ebp),%esi
40af90:	83 c4 08             	add    $0x8,%esp
40af93:	85 c0                	test   %eax,%eax
40af95:	8b 85 fc fe ff ff    	mov    -0x104(%ebp),%eax
40af9b:	7e 4d                	jle    0x40afea
40af9d:	89 b5 f4 fe ff ff    	mov    %esi,-0x10c(%ebp)
40afa3:	89 bd f0 fe ff ff    	mov    %edi,-0x110(%ebp)
40afa9:	3b c7                	cmp    %edi,%eax
40afab:	74 3d                	je     0x40afea
40afad:	8b 9d f4 fe ff ff    	mov    -0x10c(%ebp),%ebx
40afb3:	8b f7                	mov    %edi,%esi
40afb5:	8b bd 04 ff ff ff    	mov    -0xfc(%ebp),%edi
40afbb:	eb 03                	jmp    0x40afc0
40afbd:	8d 49 00             	lea    0x0(%ecx),%ecx
40afc0:	8a 06                	mov    (%esi),%al
40afc2:	8b d6                	mov    %esi,%edx
40afc4:	2b d7                	sub    %edi,%edx
40afc6:	8a 0a                	mov    (%edx),%cl
40afc8:	88 02                	mov    %al,(%edx)
40afca:	88 0e                	mov    %cl,(%esi)
40afcc:	46                   	inc    %esi
40afcd:	83 eb 01             	sub    $0x1,%ebx
40afd0:	75 ee                	jne    0x40afc0
40afd2:	8b bd ec fe ff ff    	mov    -0x114(%ebp),%edi
40afd8:	8b 9d f8 fe ff ff    	mov    -0x108(%ebp),%ebx
40afde:	8b b5 00 ff ff ff    	mov    -0x100(%ebp),%esi
40afe4:	8b 85 fc fe ff ff    	mov    -0x104(%ebp),%eax
40afea:	ff b5 08 ff ff ff    	push   -0xf8(%ebp)
40aff0:	8b cb                	mov    %ebx,%ecx
40aff2:	50                   	push   %eax
40aff3:	ff 15 18 f1 40 00    	call   *0x40f118
40aff9:	ff d3                	call   *%ebx
40affb:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b001:	83 c4 08             	add    $0x8,%esp
40b004:	85 c0                	test   %eax,%eax
40b006:	7e 49                	jle    0x40b051
40b008:	8b 85 fc fe ff ff    	mov    -0x104(%ebp),%eax
40b00e:	89 b5 ec fe ff ff    	mov    %esi,-0x114(%ebp)
40b014:	8b f2                	mov    %edx,%esi
40b016:	3b c2                	cmp    %edx,%eax
40b018:	74 37                	je     0x40b051
40b01a:	8b 9d ec fe ff ff    	mov    -0x114(%ebp),%ebx
40b020:	2b c2                	sub    %edx,%eax
40b022:	89 85 f0 fe ff ff    	mov    %eax,-0x110(%ebp)
40b028:	8b d0                	mov    %eax,%edx
40b02a:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40b030:	8a 06                	mov    (%esi),%al
40b032:	8d 76 01             	lea    0x1(%esi),%esi
40b035:	8a 4c 32 ff          	mov    -0x1(%edx,%esi,1),%cl
40b039:	88 44 32 ff          	mov    %al,-0x1(%edx,%esi,1)
40b03d:	88 4e ff             	mov    %cl,-0x1(%esi)
40b040:	83 eb 01             	sub    $0x1,%ebx
40b043:	75 eb                	jne    0x40b030
40b045:	8b 9d f8 fe ff ff    	mov    -0x108(%ebp),%ebx
40b04b:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b051:	52                   	push   %edx
40b052:	57                   	push   %edi
40b053:	8b cb                	mov    %ebx,%ecx
40b055:	ff 15 18 f1 40 00    	call   *0x40f118
40b05b:	ff d3                	call   *%ebx
40b05d:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b063:	83 c4 08             	add    $0x8,%esp
40b066:	85 c0                	test   %eax,%eax
40b068:	8b 85 00 ff ff ff    	mov    -0x100(%ebp),%eax
40b06e:	7e 35                	jle    0x40b0a5
40b070:	8b d8                	mov    %eax,%ebx
40b072:	8b f2                	mov    %edx,%esi
40b074:	3b fa                	cmp    %edx,%edi
40b076:	74 2d                	je     0x40b0a5
40b078:	8b c7                	mov    %edi,%eax
40b07a:	2b c2                	sub    %edx,%eax
40b07c:	89 85 ec fe ff ff    	mov    %eax,-0x114(%ebp)
40b082:	8b d0                	mov    %eax,%edx
40b084:	8a 06                	mov    (%esi),%al
40b086:	8d 76 01             	lea    0x1(%esi),%esi
40b089:	8a 4c 32 ff          	mov    -0x1(%edx,%esi,1),%cl
40b08d:	88 44 32 ff          	mov    %al,-0x1(%edx,%esi,1)
40b091:	88 4e ff             	mov    %cl,-0x1(%esi)
40b094:	83 eb 01             	sub    $0x1,%ebx
40b097:	75 eb                	jne    0x40b084
40b099:	8b 85 00 ff ff ff    	mov    -0x100(%ebp),%eax
40b09f:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b0a5:	8b b5 fc fe ff ff    	mov    -0x104(%ebp),%esi
40b0ab:	8b da                	mov    %edx,%ebx
40b0ad:	89 95 04 ff ff ff    	mov    %edx,-0xfc(%ebp)
40b0b3:	3b fe                	cmp    %esi,%edi
40b0b5:	76 3e                	jbe    0x40b0f5
40b0b7:	eb 07                	jmp    0x40b0c0
40b0b9:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40b0c0:	03 f0                	add    %eax,%esi
40b0c2:	89 b5 f4 fe ff ff    	mov    %esi,-0x10c(%ebp)
40b0c8:	3b f7                	cmp    %edi,%esi
40b0ca:	73 23                	jae    0x40b0ef
40b0cc:	8b 8d f8 fe ff ff    	mov    -0x108(%ebp),%ecx
40b0d2:	57                   	push   %edi
40b0d3:	56                   	push   %esi
40b0d4:	ff 15 18 f1 40 00    	call   *0x40f118
40b0da:	ff 95 f8 fe ff ff    	call   *-0x108(%ebp)
40b0e0:	83 c4 08             	add    $0x8,%esp
40b0e3:	85 c0                	test   %eax,%eax
40b0e5:	8b 85 00 ff ff ff    	mov    -0x100(%ebp),%eax
40b0eb:	7e d3                	jle    0x40b0c0
40b0ed:	eb 42                	jmp    0x40b131
40b0ef:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b0f5:	8b 9d f8 fe ff ff    	mov    -0x108(%ebp),%ebx
40b0fb:	eb 03                	jmp    0x40b100
40b0fd:	8d 49 00             	lea    0x0(%ecx),%ecx
40b100:	03 f0                	add    %eax,%esi
40b102:	3b f2                	cmp    %edx,%esi
40b104:	77 1f                	ja     0x40b125
40b106:	57                   	push   %edi
40b107:	56                   	push   %esi
40b108:	8b cb                	mov    %ebx,%ecx
40b10a:	ff 15 18 f1 40 00    	call   *0x40f118
40b110:	ff d3                	call   *%ebx
40b112:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b118:	83 c4 08             	add    $0x8,%esp
40b11b:	85 c0                	test   %eax,%eax
40b11d:	8b 85 00 ff ff ff    	mov    -0x100(%ebp),%eax
40b123:	7e db                	jle    0x40b100
40b125:	8b 9d 04 ff ff ff    	mov    -0xfc(%ebp),%ebx
40b12b:	89 b5 f4 fe ff ff    	mov    %esi,-0x10c(%ebp)
40b131:	8b b5 f8 fe ff ff    	mov    -0x108(%ebp),%esi
40b137:	eb 07                	jmp    0x40b140
40b139:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40b140:	8b 85 00 ff ff ff    	mov    -0x100(%ebp),%eax
40b146:	8b cb                	mov    %ebx,%ecx
40b148:	2b d8                	sub    %eax,%ebx
40b14a:	89 8d 04 ff ff ff    	mov    %ecx,-0xfc(%ebp)
40b150:	3b df                	cmp    %edi,%ebx
40b152:	76 1f                	jbe    0x40b173
40b154:	57                   	push   %edi
40b155:	53                   	push   %ebx
40b156:	8b ce                	mov    %esi,%ecx
40b158:	ff 15 18 f1 40 00    	call   *0x40f118
40b15e:	ff d6                	call   *%esi
40b160:	83 c4 08             	add    $0x8,%esp
40b163:	85 c0                	test   %eax,%eax
40b165:	7f d9                	jg     0x40b140
40b167:	8b 85 00 ff ff ff    	mov    -0x100(%ebp),%eax
40b16d:	8b 8d 04 ff ff ff    	mov    -0xfc(%ebp),%ecx
40b173:	8b b5 f4 fe ff ff    	mov    -0x10c(%ebp),%esi
40b179:	89 9d 04 ff ff ff    	mov    %ebx,-0xfc(%ebp)
40b17f:	3b de                	cmp    %esi,%ebx
40b181:	72 4a                	jb     0x40b1cd
40b183:	89 85 f0 fe ff ff    	mov    %eax,-0x110(%ebp)
40b189:	8b d3                	mov    %ebx,%edx
40b18b:	74 2b                	je     0x40b1b8
40b18d:	2b f3                	sub    %ebx,%esi
40b18f:	8b d8                	mov    %eax,%ebx
40b191:	8a 02                	mov    (%edx),%al
40b193:	8d 52 01             	lea    0x1(%edx),%edx
40b196:	8a 4c 16 ff          	mov    -0x1(%esi,%edx,1),%cl
40b19a:	88 44 16 ff          	mov    %al,-0x1(%esi,%edx,1)
40b19e:	88 4a ff             	mov    %cl,-0x1(%edx)
40b1a1:	83 eb 01             	sub    $0x1,%ebx
40b1a4:	75 eb                	jne    0x40b191
40b1a6:	8b b5 f4 fe ff ff    	mov    -0x10c(%ebp),%esi
40b1ac:	8b 9d 04 ff ff ff    	mov    -0xfc(%ebp),%ebx
40b1b2:	8b 85 00 ff ff ff    	mov    -0x100(%ebp),%eax
40b1b8:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b1be:	3b fb                	cmp    %ebx,%edi
40b1c0:	0f 85 ed fe ff ff    	jne    0x40b0b3
40b1c6:	8b fe                	mov    %esi,%edi
40b1c8:	e9 e6 fe ff ff       	jmp    0x40b0b3
40b1cd:	3b f9                	cmp    %ecx,%edi
40b1cf:	73 3c                	jae    0x40b20d
40b1d1:	8b 9d f8 fe ff ff    	mov    -0x108(%ebp),%ebx
40b1d7:	eb 07                	jmp    0x40b1e0
40b1d9:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40b1e0:	2b c8                	sub    %eax,%ecx
40b1e2:	89 8d 04 ff ff ff    	mov    %ecx,-0xfc(%ebp)
40b1e8:	3b cf                	cmp    %edi,%ecx
40b1ea:	76 21                	jbe    0x40b20d
40b1ec:	57                   	push   %edi
40b1ed:	51                   	push   %ecx
40b1ee:	8b cb                	mov    %ebx,%ecx
40b1f0:	ff 15 18 f1 40 00    	call   *0x40f118
40b1f6:	ff d3                	call   *%ebx
40b1f8:	8b 8d 04 ff ff ff    	mov    -0xfc(%ebp),%ecx
40b1fe:	83 c4 08             	add    $0x8,%esp
40b201:	85 c0                	test   %eax,%eax
40b203:	8b 85 00 ff ff ff    	mov    -0x100(%ebp),%eax
40b209:	74 d5                	je     0x40b1e0
40b20b:	eb 44                	jmp    0x40b251
40b20d:	8b 9d f8 fe ff ff    	mov    -0x108(%ebp),%ebx
40b213:	8b b5 fc fe ff ff    	mov    -0x104(%ebp),%esi
40b219:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40b220:	2b c8                	sub    %eax,%ecx
40b222:	89 8d 04 ff ff ff    	mov    %ecx,-0xfc(%ebp)
40b228:	3b ce                	cmp    %esi,%ecx
40b22a:	76 1f                	jbe    0x40b24b
40b22c:	57                   	push   %edi
40b22d:	51                   	push   %ecx
40b22e:	8b cb                	mov    %ebx,%ecx
40b230:	ff 15 18 f1 40 00    	call   *0x40f118
40b236:	ff d3                	call   *%ebx
40b238:	8b 8d 04 ff ff ff    	mov    -0xfc(%ebp),%ecx
40b23e:	83 c4 08             	add    $0x8,%esp
40b241:	85 c0                	test   %eax,%eax
40b243:	8b 85 00 ff ff ff    	mov    -0x100(%ebp),%eax
40b249:	74 d5                	je     0x40b220
40b24b:	8b b5 f4 fe ff ff    	mov    -0x10c(%ebp),%esi
40b251:	8b 95 08 ff ff ff    	mov    -0xf8(%ebp),%edx
40b257:	8b ca                	mov    %edx,%ecx
40b259:	8b bd 04 ff ff ff    	mov    -0xfc(%ebp),%edi
40b25f:	2b ce                	sub    %esi,%ecx
40b261:	8b c7                	mov    %edi,%eax
40b263:	2b 85 fc fe ff ff    	sub    -0x104(%ebp),%eax
40b269:	3b c1                	cmp    %ecx,%eax
40b26b:	7c 3d                	jl     0x40b2aa
40b26d:	8b 85 fc fe ff ff    	mov    -0x104(%ebp),%eax
40b273:	3b c7                	cmp    %edi,%eax
40b275:	73 18                	jae    0x40b28f
40b277:	8b 8d e8 fe ff ff    	mov    -0x118(%ebp),%ecx
40b27d:	89 44 8d 84          	mov    %eax,-0x7c(%ebp,%ecx,4)
40b281:	89 bc 8d 0c ff ff ff 	mov    %edi,-0xf4(%ebp,%ecx,4)
40b288:	41                   	inc    %ecx
40b289:	89 8d e8 fe ff ff    	mov    %ecx,-0x118(%ebp)
40b28f:	8b 8d 08 ff ff ff    	mov    -0xf8(%ebp),%ecx
40b295:	8b bd 00 ff ff ff    	mov    -0x100(%ebp),%edi
40b29b:	3b f1                	cmp    %ecx,%esi
40b29d:	73 44                	jae    0x40b2e3
40b29f:	89 b5 fc fe ff ff    	mov    %esi,-0x104(%ebp)
40b2a5:	e9 f8 fb ff ff       	jmp    0x40aea2
40b2aa:	3b f2                	cmp    %edx,%esi
40b2ac:	73 18                	jae    0x40b2c6
40b2ae:	8b 85 e8 fe ff ff    	mov    -0x118(%ebp),%eax
40b2b4:	89 74 85 84          	mov    %esi,-0x7c(%ebp,%eax,4)
40b2b8:	89 94 85 0c ff ff ff 	mov    %edx,-0xf4(%ebp,%eax,4)
40b2bf:	40                   	inc    %eax
40b2c0:	89 85 e8 fe ff ff    	mov    %eax,-0x118(%ebp)
40b2c6:	8b b5 fc fe ff ff    	mov    -0x104(%ebp),%esi
40b2cc:	3b f7                	cmp    %edi,%esi
40b2ce:	73 0d                	jae    0x40b2dd
40b2d0:	8b cf                	mov    %edi,%ecx
40b2d2:	8b bd 00 ff ff ff    	mov    -0x100(%ebp),%edi
40b2d8:	e9 bf fb ff ff       	jmp    0x40ae9c
40b2dd:	8b bd 00 ff ff ff    	mov    -0x100(%ebp),%edi
40b2e3:	8b 85 e8 fe ff ff    	mov    -0x118(%ebp),%eax