40afd2:	3a e3                	cmp    %bl,%ah
40afd4:	77 02                	ja     0x40afd8
40afd6:	02 e6                	add    %dh,%ah
40afd8:	3a c7                	cmp    %bh,%al
40afda:	72 06                	jb     0x40afe2
40afdc:	3a c3                	cmp    %bl,%al
40afde:	77 02                	ja     0x40afe2
40afe0:	02 c6                	add    %dh,%al
40afe2:	3a e0                	cmp    %al,%ah
40afe4:	75 0b                	jne    0x40aff1
40afe6:	83 e9 01             	sub    $0x1,%ecx
40afe9:	75 d1                	jne    0x40afbc
40afeb:	33 c9                	xor    %ecx,%ecx
40afed:	3a e0                	cmp    %al,%ah
40afef:	74 09                	je     0x40affa
40aff1:	b9 ff ff ff ff       	mov    $0xffffffff,%ecx
40aff6:	72 02                	jb     0x40affa
40aff8:	f7 d9                	neg    %ecx
40affa:	8b c1                	mov    %ecx,%eax
40affc:	5b                   	pop    %ebx
40affd:	5e                   	pop    %esi
40affe:	5f                   	pop    %edi
40afff:	c9                   	leave
40b000:	c3                   	ret
40b001:	cc                   	int3
40b002:	cc                   	int3
40b003:	cc                   	int3
40b004:	cc                   	int3
40b005:	cc                   	int3
40b006:	cc                   	int3
40b007:	cc                   	int3
40b008:	cc                   	int3
40b009:	cc                   	int3
40b00a:	cc                   	int3
40b00b:	cc                   	int3
40b00c:	cc                   	int3
40b00d:	cc                   	int3
40b00e:	cc                   	int3
40b00f:	cc                   	int3
40b010:	56                   	push   %esi
40b011:	8b 44 24 14          	mov    0x14(%esp),%eax
40b015:	0b c0                	or     %eax,%eax
40b017:	75 28                	jne    0x40b041
40b019:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40b01d:	8b 44 24 0c          	mov    0xc(%esp),%eax
40b021:	33 d2                	xor    %edx,%edx
40b023:	f7 f1                	div    %ecx
40b025:	8b d8                	mov    %eax,%ebx
40b027:	8b 44 24 08          	mov    0x8(%esp),%eax
40b02b:	f7 f1                	div    %ecx
40b02d:	8b f0                	mov    %eax,%esi
40b02f:	8b c3                	mov    %ebx,%eax
40b031:	f7 64 24 10          	mull   0x10(%esp)
40b035:	8b c8                	mov    %eax,%ecx
40b037:	8b c6                	mov    %esi,%eax
40b039:	f7 64 24 10          	mull   0x10(%esp)
40b03d:	03 d1                	add    %ecx,%edx
40b03f:	eb 47                	jmp    0x40b088
40b041:	8b c8                	mov    %eax,%ecx
40b043:	8b 5c 24 10          	mov    0x10(%esp),%ebx
40b047:	8b 54 24 0c          	mov    0xc(%esp),%edx
40b04b:	8b 44 24 08          	mov    0x8(%esp),%eax
40b04f:	d1 e9                	shr    $1,%ecx
40b051:	d1 db                	rcr    $1,%ebx
40b053:	d1 ea                	shr    $1,%edx
40b055:	d1 d8                	rcr    $1,%eax
40b057:	0b c9                	or     %ecx,%ecx
40b059:	75 f4                	jne    0x40b04f
40b05b:	f7 f3                	div    %ebx
40b05d:	8b f0                	mov    %eax,%esi
40b05f:	f7 64 24 14          	mull   0x14(%esp)
40b063:	8b c8                	mov    %eax,%ecx
40b065:	8b 44 24 10          	mov    0x10(%esp),%eax
40b069:	f7 e6                	mul    %esi
40b06b:	03 d1                	add    %ecx,%edx
40b06d:	72 0e                	jb     0x40b07d
40b06f:	3b 54 24 0c          	cmp    0xc(%esp),%edx
40b073:	77 08                	ja     0x40b07d
40b075:	72 0f                	jb     0x40b086
40b077:	3b 44 24 08          	cmp    0x8(%esp),%eax
40b07b:	76 09                	jbe    0x40b086
40b07d:	4e                   	dec    %esi
40b07e:	2b 44 24 10          	sub    0x10(%esp),%eax
40b082:	1b 54 24 14          	sbb    0x14(%esp),%edx
40b086:	33 db                	xor    %ebx,%ebx
40b088:	2b 44 24 08          	sub    0x8(%esp),%eax
40b08c:	1b 54 24 0c          	sbb    0xc(%esp),%edx
40b090:	f7 da                	neg    %edx
40b092:	f7 d8                	neg    %eax
40b094:	83 da 00             	sbb    $0x0,%edx
40b097:	8b ca                	mov    %edx,%ecx
40b099:	8b d3                	mov    %ebx,%edx
40b09b:	8b d9                	mov    %ecx,%ebx
40b09d:	8b c8                	mov    %eax,%ecx
40b09f:	8b c6                	mov    %esi,%eax
40b0a1:	5e                   	pop    %esi
40b0a2:	c2 10 00             	ret    $0x10
40b0a5:	8b ff                	mov    %edi,%edi
40b0a7:	55                   	push   %ebp
40b0a8:	8b ec                	mov    %esp,%ebp
40b0aa:	83 ec 18             	sub    $0x18,%esp
40b0ad:	a1 04 f0 41 00       	mov    0x41f004,%eax
40b0b2:	33 c5                	xor    %ebp,%eax
40b0b4:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b0b7:	8b 45 10             	mov    0x10(%ebp),%eax
40b0ba:	53                   	push   %ebx
40b0bb:	56                   	push   %esi
40b0bc:	33 f6                	xor    %esi,%esi
40b0be:	57                   	push   %edi
40b0bf:	c7 45 e8 4e 40 00 00 	movl   $0x404e,-0x18(%ebp)
40b0c6:	89 30                	mov    %esi,(%eax)
40b0c8:	89 70 04             	mov    %esi,0x4(%eax)
40b0cb:	89 70 08             	mov    %esi,0x8(%eax)
40b0ce:	39 75 0c             	cmp    %esi,0xc(%ebp)
40b0d1:	0f 86 46 01 00 00    	jbe    0x40b21d
40b0d7:	8b 10                	mov    (%eax),%edx
40b0d9:	8b 58 04             	mov    0x4(%eax),%ebx
40b0dc:	8b f0                	mov    %eax,%esi
40b0de:	8d 7d f0             	lea    -0x10(%ebp),%edi
40b0e1:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40b0e2:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40b0e3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40b0e4:	8b ca                	mov    %edx,%ecx
40b0e6:	c1 e9 1f             	shr    $0x1f,%ecx
40b0e9:	8d 3c 12             	lea    (%edx,%edx,1),%edi
40b0ec:	8d 14 1b             	lea    (%ebx,%ebx,1),%edx
40b0ef:	0b d1                	or     %ecx,%edx
40b0f1:	8b 48 08             	mov    0x8(%eax),%ecx
40b0f4:	8b f3                	mov    %ebx,%esi
40b0f6:	c1 ee 1f             	shr    $0x1f,%esi
40b0f9:	03 c9                	add    %ecx,%ecx
40b0fb:	0b ce                	or     %esi,%ecx
40b0fd:	89 7d ec             	mov    %edi,-0x14(%ebp)
40b100:	8b f7                	mov    %edi,%esi
40b102:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
40b106:	8b da                	mov    %edx,%ebx
40b108:	c1 eb 1f             	shr    $0x1f,%ebx
40b10b:	03 c9                	add    %ecx,%ecx
40b10d:	c1 ef 1f             	shr    $0x1f,%edi
40b110:	0b cb                	or     %ebx,%ecx
40b112:	8b 5d f0             	mov    -0x10(%ebp),%ebx
40b115:	03 f6                	add    %esi,%esi
40b117:	03 d2                	add    %edx,%edx
40b119:	0b d7                	or     %edi,%edx
40b11b:	8d 3c 1e             	lea    (%esi,%ebx,1),%edi
40b11e:	89 30                	mov    %esi,(%eax)
40b120:	89 50 04             	mov    %edx,0x4(%eax)
40b123:	89 48 08             	mov    %ecx,0x8(%eax)
40b126:	3b fe                	cmp    %esi,%edi
40b128:	72 04                	jb     0x40b12e
40b12a:	3b fb                	cmp    %ebx,%edi
40b12c:	73 07                	jae    0x40b135
40b12e:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
40b135:	33 db                	xor    %ebx,%ebx
40b137:	89 38                	mov    %edi,(%eax)
40b139:	39 5d ec             	cmp    %ebx,-0x14(%ebp)
40b13c:	74 1a                	je     0x40b158
40b13e:	8d 72 01             	lea    0x1(%edx),%esi
40b141:	3b f2                	cmp    %edx,%esi
40b143:	72 05                	jb     0x40b14a
40b145:	83 fe 01             	cmp    $0x1,%esi
40b148:	73 03                	jae    0x40b14d
40b14a:	33 db                	xor    %ebx,%ebx
40b14c:	43                   	inc    %ebx
40b14d:	89 70 04             	mov    %esi,0x4(%eax)
40b150:	85 db                	test   %ebx,%ebx
40b152:	74 04                	je     0x40b158
40b154:	41                   	inc    %ecx
40b155:	89 48 08             	mov    %ecx,0x8(%eax)
40b158:	8b 48 04             	mov    0x4(%eax),%ecx
40b15b:	8b 55 f4             	mov    -0xc(%ebp),%edx
40b15e:	8d 1c 11             	lea    (%ecx,%edx,1),%ebx
40b161:	33 f6                	xor    %esi,%esi
40b163:	3b d9                	cmp    %ecx,%ebx
40b165:	72 04                	jb     0x40b16b
40b167:	3b da                	cmp    %edx,%ebx
40b169:	73 03                	jae    0x40b16e
40b16b:	33 f6                	xor    %esi,%esi
40b16d:	46                   	inc    %esi
40b16e:	89 58 04             	mov    %ebx,0x4(%eax)
40b171:	85 f6                	test   %esi,%esi
40b173:	74 03                	je     0x40b178
40b175:	ff 40 08             	incl   0x8(%eax)
40b178:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40b17b:	01 48 08             	add    %ecx,0x8(%eax)
40b17e:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
40b182:	8d 0c 3f             	lea    (%edi,%edi,1),%ecx
40b185:	8b d7                	mov    %edi,%edx
40b187:	c1 ea 1f             	shr    $0x1f,%edx
40b18a:	8d 3c 1b             	lea    (%ebx,%ebx,1),%edi
40b18d:	0b fa                	or     %edx,%edi
40b18f:	8b 50 08             	mov    0x8(%eax),%edx
40b192:	8b f3                	mov    %ebx,%esi
40b194:	c1 ee 1f             	shr    $0x1f,%esi
40b197:	8d 1c 12             	lea    (%edx,%edx,1),%ebx
40b19a:	8b 55 08             	mov    0x8(%ebp),%edx
40b19d:	0b de                	or     %esi,%ebx
40b19f:	89 08                	mov    %ecx,(%eax)
40b1a1:	89 78 04             	mov    %edi,0x4(%eax)
40b1a4:	89 58 08             	mov    %ebx,0x8(%eax)
40b1a7:	0f be 12             	movsbl (%edx),%edx
40b1aa:	8d 34 11             	lea    (%ecx,%edx,1),%esi
40b1ad:	89 55 f0             	mov    %edx,-0x10(%ebp)
40b1b0:	3b f1                	cmp    %ecx,%esi
40b1b2:	72 04                	jb     0x40b1b8
40b1b4:	3b f2                	cmp    %edx,%esi
40b1b6:	73 07                	jae    0x40b1bf
40b1b8:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
40b1bf:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
40b1c3:	89 30                	mov    %esi,(%eax)
40b1c5:	74 1c                	je     0x40b1e3
40b1c7:	8d 4f 01             	lea    0x1(%edi),%ecx
40b1ca:	33 d2                	xor    %edx,%edx
40b1cc:	3b cf                	cmp    %edi,%ecx
40b1ce:	72 05                	jb     0x40b1d5
40b1d0:	83 f9 01             	cmp    $0x1,%ecx
40b1d3:	73 03                	jae    0x40b1d8
40b1d5:	33 d2                	xor    %edx,%edx
40b1d7:	42                   	inc    %edx
40b1d8:	89 48 04             	mov    %ecx,0x4(%eax)
40b1db:	85 d2                	test   %edx,%edx
40b1dd:	74 04                	je     0x40b1e3
40b1df:	43                   	inc    %ebx
40b1e0:	89 58 08             	mov    %ebx,0x8(%eax)
40b1e3:	ff 4d 0c             	decl   0xc(%ebp)
40b1e6:	ff 45 08             	incl   0x8(%ebp)
40b1e9:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40b1ed:	0f 87 e4 fe ff ff    	ja     0x40b0d7
40b1f3:	33 f6                	xor    %esi,%esi
40b1f5:	eb 26                	jmp    0x40b21d
40b1f7:	8b 48 04             	mov    0x4(%eax),%ecx
40b1fa:	8b d1                	mov    %ecx,%edx
40b1fc:	c1 ea 10             	shr    $0x10,%edx
40b1ff:	89 50 08             	mov    %edx,0x8(%eax)
40b202:	8b 10                	mov    (%eax),%edx
40b204:	8b fa                	mov    %edx,%edi
40b206:	c1 e1 10             	shl    $0x10,%ecx
40b209:	c1 ef 10             	shr    $0x10,%edi
40b20c:	0b cf                	or     %edi,%ecx
40b20e:	c1 e2 10             	shl    $0x10,%edx
40b211:	81 45 e8 f0 ff 00 00 	addl   $0xfff0,-0x18(%ebp)
40b218:	89 48 04             	mov    %ecx,0x4(%eax)
40b21b:	89 10                	mov    %edx,(%eax)
40b21d:	39 70 08             	cmp    %esi,0x8(%eax)
40b220:	74 d5                	je     0x40b1f7
40b222:	bb 00 80 00 00       	mov    $0x8000,%ebx
40b227:	85 58 08             	test   %ebx,0x8(%eax)
40b22a:	75 30                	jne    0x40b25c
40b22c:	8b 30                	mov    (%eax),%esi
40b22e:	8b 78 04             	mov    0x4(%eax),%edi
40b231:	81 45 e8 ff ff 00 00 	addl   $0xffff,-0x18(%ebp)
40b238:	8b ce                	mov    %esi,%ecx
40b23a:	03 f6                	add    %esi,%esi
40b23c:	c1 e9 1f             	shr    $0x1f,%ecx
40b23f:	89 30                	mov    %esi,(%eax)
40b241:	8d 34 3f             	lea    (%edi,%edi,1),%esi
40b244:	0b f1                	or     %ecx,%esi
40b246:	8b 48 08             	mov    0x8(%eax),%ecx
40b249:	8b d7                	mov    %edi,%edx
40b24b:	c1 ea 1f             	shr    $0x1f,%edx
40b24e:	03 c9                	add    %ecx,%ecx
40b250:	0b ca                	or     %edx,%ecx
40b252:	89 70 04             	mov    %esi,0x4(%eax)
40b255:	89 48 08             	mov    %ecx,0x8(%eax)
40b258:	85 cb                	test   %ecx,%ebx
40b25a:	74 d0                	je     0x40b22c
40b25c:	66 8b 4d e8          	mov    -0x18(%ebp),%cx
40b260:	66 89 48 0a          	mov    %cx,0xa(%eax)
40b264:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b267:	5f                   	pop    %edi
40b268:	5e                   	pop    %esi
40b269:	33 cd                	xor    %ebp,%ecx
40b26b:	5b                   	pop    %ebx
40b26c:	e8 8f 5d ff ff       	call   0x401000
40b271:	c9                   	leave
40b272:	c3                   	ret
40b273:	cc                   	int3
40b274:	cc                   	int3
40b275:	cc                   	int3
40b276:	cc                   	int3
40b277:	cc                   	int3
40b278:	cc                   	int3
40b279:	cc                   	int3
40b27a:	cc                   	int3
40b27b:	cc                   	int3
40b27c:	cc                   	int3
40b27d:	cc                   	int3
40b27e:	cc                   	int3
40b27f:	cc                   	int3
40b280:	8b 44 24 08          	mov    0x8(%esp),%eax
40b284:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40b288:	0b c8                	or     %eax,%ecx
40b28a:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40b28e:	75 09                	jne    0x40b299
40b290:	8b 44 24 04          	mov    0x4(%esp),%eax
40b294:	f7 e1                	mul    %ecx
40b296:	c2 10 00             	ret    $0x10
40b299:	53                   	push   %ebx
40b29a:	f7 e1                	mul    %ecx
40b29c:	8b d8                	mov    %eax,%ebx
40b29e:	8b 44 24 08          	mov    0x8(%esp),%eax
40b2a2:	f7 64 24 14          	mull   0x14(%esp)
40b2a6:	03 d8                	add    %eax,%ebx
40b2a8:	8b 44 24 08          	mov    0x8(%esp),%eax
40b2ac:	f7 e1                	mul    %ecx
40b2ae:	03 d3                	add    %ebx,%edx
40b2b0:	5b                   	pop    %ebx
40b2b1:	c2 10 00             	ret    $0x10
40b2b4:	cc                   	int3
40b2b5:	cc                   	int3
40b2b6:	cc                   	int3
40b2b7:	cc                   	int3
40b2b8:	cc                   	int3
40b2b9:	cc                   	int3
40b2ba:	cc                   	int3
40b2bb:	cc                   	int3
40b2bc:	cc                   	int3
40b2bd:	cc                   	int3
40b2be:	cc                   	int3
40b2bf:	cc                   	int3
40b2c0:	8d 42 ff             	lea    -0x1(%edx),%eax
40b2c3:	5b                   	pop    %ebx
40b2c4:	c3                   	ret
40b2c5:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40b2cc:	8d 64 24 00          	lea    0x0(%esp),%esp
40b2d0:	33 c0                	xor    %eax,%eax
40b2d2:	8a 44 24 08          	mov    0x8(%esp),%al
40b2d6:	53                   	push   %ebx
40b2d7:	8b d8                	mov    %eax,%ebx
40b2d9:	c1 e0 08             	shl    $0x8,%eax
40b2dc:	8b 54 24 08          	mov    0x8(%esp),%edx
40b2e0:	f7 c2 03 00 00 00    	test   $0x3,%edx
40b2e6:	74 15                	je     0x40b2fd
40b2e8:	8a 0a                	mov    (%edx),%cl
40b2ea:	83 c2 01             	add    $0x1,%edx
40b2ed:	3a cb                	cmp    %bl,%cl
40b2ef:	74 cf                	je     0x40b2c0
40b2f1:	84 c9                	test   %cl,%cl
40b2f3:	74 51                	je     0x40b346
40b2f5:	f7 c2 03 00 00 00    	test   $0x3,%edx
40b2fb:	75 eb                	jne    0x40b2e8
40b2fd:	0b d8                	or     %eax,%ebx
40b2ff:	57                   	push   %edi
40b300:	8b c3                	mov    %ebx,%eax
40b302:	c1 e3 10             	shl    $0x10,%ebx
40b305:	56                   	push   %esi
40b306:	0b d8                	or     %eax,%ebx
40b308:	8b 0a                	mov    (%edx),%ecx
40b30a:	bf ff fe fe 7e       	mov    $0x7efefeff,%edi
40b30f:	8b c1                	mov    %ecx,%eax