40501a:	31 ff                	xor    %edi,%edi
40501c:	31 f6                	xor    %esi,%esi
40501e:	d1 e0                	shl    $1,%eax
405020:	d1 d2                	rcl    $1,%edx
405022:	d1 d6                	rcl    $1,%esi
405024:	d1 d7                	rcl    $1,%edi
405026:	39 ef                	cmp    %ebp,%edi
405028:	72 0b                	jb     0x405035
40502a:	77 04                	ja     0x405030
40502c:	39 de                	cmp    %ebx,%esi
40502e:	72 05                	jb     0x405035
405030:	29 de                	sub    %ebx,%esi
405032:	19 ef                	sbb    %ebp,%edi
405034:	40                   	inc    %eax
405035:	e2 e7                	loop   0x40501e
405037:	5b                   	pop    %ebx
405038:	f7 c3 01 00 00 00    	test   $0x1,%ebx
40503e:	74 07                	je     0x405047
405040:	f7 da                	neg    %edx
405042:	f7 d8                	neg    %eax
405044:	83 da 00             	sbb    $0x0,%edx
405047:	5f                   	pop    %edi
405048:	5e                   	pop    %esi
405049:	5b                   	pop    %ebx
40504a:	5d                   	pop    %ebp
40504b:	c2 08 00             	ret    $0x8
40504e:	f7 f3                	div    %ebx
405050:	31 d2                	xor    %edx,%edx
405052:	eb f3                	jmp    0x405047
405054:	c3                   	ret
405055:	8d 40 00             	lea    0x0(%eax),%eax
405058:	55                   	push   %ebp
405059:	53                   	push   %ebx
40505a:	56                   	push   %esi
40505b:	57                   	push   %edi
40505c:	31 ff                	xor    %edi,%edi
40505e:	8b 5c 24 14          	mov    0x14(%esp),%ebx
405062:	8b 4c 24 18          	mov    0x18(%esp),%ecx
405066:	09 c9                	or     %ecx,%ecx
405068:	75 08                	jne    0x405072
40506a:	09 d2                	or     %edx,%edx
40506c:	74 5d                	je     0x4050cb
40506e:	09 db                	or     %ebx,%ebx
405070:	74 59                	je     0x4050cb
405072:	09 d2                	or     %edx,%edx
405074:	79 0a                	jns    0x405080
405076:	f7 da                	neg    %edx
405078:	f7 d8                	neg    %eax
40507a:	83 da 00             	sbb    $0x0,%edx
40507d:	83 cf 01             	or     $0x1,%edi
405080:	09 c9                	or     %ecx,%ecx
405082:	79 07                	jns    0x40508b
405084:	f7 d9                	neg    %ecx
405086:	f7 db                	neg    %ebx
405088:	83 d9 00             	sbb    $0x0,%ecx
40508b:	89 cd                	mov    %ecx,%ebp
40508d:	b9 40 00 00 00       	mov    $0x40,%ecx
405092:	57                   	push   %edi
405093:	31 ff                	xor    %edi,%edi
405095:	31 f6                	xor    %esi,%esi
405097:	d1 e0                	shl    $1,%eax
405099:	d1 d2                	rcl    $1,%edx
40509b:	d1 d6                	rcl    $1,%esi
40509d:	d1 d7                	rcl    $1,%edi
40509f:	39 ef                	cmp    %ebp,%edi
4050a1:	72 0b                	jb     0x4050ae
4050a3:	77 04                	ja     0x4050a9
4050a5:	39 de                	cmp    %ebx,%esi
4050a7:	72 05                	jb     0x4050ae
4050a9:	29 de                	sub    %ebx,%esi
4050ab:	19 ef                	sbb    %ebp,%edi
4050ad:	40                   	inc    %eax
4050ae:	e2 e7                	loop   0x405097
4050b0:	89 f0                	mov    %esi,%eax
4050b2:	89 fa                	mov    %edi,%edx
4050b4:	5b                   	pop    %ebx
4050b5:	f7 c3 01 00 00 00    	test   $0x1,%ebx
4050bb:	74 07                	je     0x4050c4
4050bd:	f7 da                	neg    %edx
4050bf:	f7 d8                	neg    %eax
4050c1:	83 da 00             	sbb    $0x0,%edx
4050c4:	5f                   	pop    %edi
4050c5:	5e                   	pop    %esi
4050c6:	5b                   	pop    %ebx
4050c7:	5d                   	pop    %ebp
4050c8:	c2 08 00             	ret    $0x8
4050cb:	f7 f3                	div    %ebx
4050cd:	92                   	xchg   %eax,%edx
4050ce:	31 d2                	xor    %edx,%edx
4050d0:	eb f2                	jmp    0x4050c4
4050d2:	c3                   	ret
4050d3:	90                   	nop
4050d4:	55                   	push   %ebp
4050d5:	8b ec                	mov    %esp,%ebp
4050d7:	83 c4 dc             	add    $0xffffffdc,%esp
4050da:	53                   	push   %ebx
4050db:	56                   	push   %esi
4050dc:	57                   	push   %edi
4050dd:	8b f2                	mov    %edx,%esi
4050df:	8b f8                	mov    %eax,%edi
4050e1:	33 db                	xor    %ebx,%ebx
4050e3:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
4050e7:	75 09                	jne    0x4050f2
4050e9:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
4050ed:	0f 92 c0             	setb   %al
4050f0:	eb 03                	jmp    0x4050f5
4050f2:	0f 9c c0             	setl   %al
4050f5:	88 45 ff             	mov    %al,-0x1(%ebp)
4050f8:	6a 00                	push   $0x0
4050fa:	6a 0a                	push   $0xa
4050fc:	8b 45 08             	mov    0x8(%ebp),%eax
4050ff:	8b 55 0c             	mov    0xc(%ebp),%edx
405102:	e8 51 ff ff ff       	call   0x405058
405107:	85 d2                	test   %edx,%edx
405109:	7d 07                	jge    0x405112
40510b:	f7 d8                	neg    %eax
40510d:	83 d2 00             	adc    $0x0,%edx
405110:	f7 da                	neg    %edx
405112:	83 c0 30             	add    $0x30,%eax
405115:	83 d2 00             	adc    $0x0,%edx
405118:	88 44 1d df          	mov    %al,-0x21(%ebp,%ebx,1)
40511c:	43                   	inc    %ebx
40511d:	6a 00                	push   $0x0
40511f:	6a 0a                	push   $0xa
405121:	8b 45 08             	mov    0x8(%ebp),%eax
405124:	8b 55 0c             	mov    0xc(%ebp),%edx
405127:	e8 b0 fe ff ff       	call   0x404fdc
40512c:	89 45 08             	mov    %eax,0x8(%ebp)
40512f:	89 55 0c             	mov    %edx,0xc(%ebp)
405132:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
405136:	75 c0                	jne    0x4050f8
405138:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40513c:	75 ba                	jne    0x4050f8
40513e:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
405142:	74 06                	je     0x40514a
405144:	c6 44 1d df 2d       	movb   $0x2d,-0x21(%ebp,%ebx,1)
405149:	43                   	inc    %ebx
40514a:	81 ff ff 00 00 00    	cmp    $0xff,%edi
405150:	7e 05                	jle    0x405157
405152:	bf ff 00 00 00       	mov    $0xff,%edi
405157:	b8 01 00 00 00       	mov    $0x1,%eax
40515c:	8b d7                	mov    %edi,%edx
40515e:	2b d3                	sub    %ebx,%edx
405160:	3b d0                	cmp    %eax,%edx
405162:	7c 09                	jl     0x40516d
405164:	c6 04 06 20          	movb   $0x20,(%esi,%eax,1)
405168:	40                   	inc    %eax
405169:	3b d0                	cmp    %eax,%edx
40516b:	7d f7                	jge    0x405164
40516d:	85 db                	test   %ebx,%ebx
40516f:	7e 0d                	jle    0x40517e
405171:	4b                   	dec    %ebx
405172:	8a 54 1d df          	mov    -0x21(%ebp,%ebx,1),%dl
405176:	88 14 06             	mov    %dl,(%esi,%eax,1)
405179:	40                   	inc    %eax
40517a:	85 db                	test   %ebx,%ebx
40517c:	7f f3                	jg     0x405171
40517e:	8b d0                	mov    %eax,%edx
405180:	4a                   	dec    %edx
405181:	8b c6                	mov    %esi,%eax
405183:	e8 78 d9 ff ff       	call   0x402b00
405188:	5f                   	pop    %edi
405189:	5e                   	pop    %esi
40518a:	5b                   	pop    %ebx
40518b:	8b e5                	mov    %ebp,%esp
40518d:	5d                   	pop    %ebp
40518e:	c2 08 00             	ret    $0x8
405191:	8d 40 00             	lea    0x0(%eax),%eax
405194:	55                   	push   %ebp
405195:	8b ec                	mov    %esp,%ebp
405197:	53                   	push   %ebx
405198:	8b d8                	mov    %eax,%ebx
40519a:	ff 75 0c             	push   0xc(%ebp)
40519d:	ff 75 08             	push   0x8(%ebp)
4051a0:	8b d3                	mov    %ebx,%edx
4051a2:	33 c0                	xor    %eax,%eax
4051a4:	e8 2b ff ff ff       	call   0x4050d4
4051a9:	5b                   	pop    %ebx
4051aa:	5d                   	pop    %ebp
4051ab:	c2 08 00             	ret    $0x8
4051ae:	8b c0                	mov    %eax,%eax
4051b0:	53                   	push   %ebx
4051b1:	56                   	push   %esi
4051b2:	57                   	push   %edi
4051b3:	55                   	push   %ebp
4051b4:	83 c4 ec             	add    $0xffffffec,%esp
4051b7:	89 14 24             	mov    %edx,(%esp)
4051ba:	8b f0                	mov    %eax,%esi
4051bc:	bd 01 00 00 00       	mov    $0x1,%ebp
4051c1:	33 ff                	xor    %edi,%edi
4051c3:	c7 44 24 08 00 00 00 	movl   $0x0,0x8(%esp)
4051ca:	00
4051cb:	c7 44 24 0c 00 00 00 	movl   $0x0,0xc(%esp)
4051d2:	00
4051d3:	85 f6                	test   %esi,%esi
4051d5:	75 0b                	jne    0x4051e2
4051d7:	8b 04 24             	mov    (%esp),%eax
4051da:	89 28                	mov    %ebp,(%eax)
4051dc:	e9 ee 01 00 00       	jmp    0x4053cf
4051e1:	45                   	inc    %ebp
4051e2:	80 7c 2e ff 20       	cmpb   $0x20,-0x1(%esi,%ebp,1)
4051e7:	74 f8                	je     0x4051e1
4051e9:	c6 44 24 10 00       	movb   $0x0,0x10(%esp)
4051ee:	8a 44 2e ff          	mov    -0x1(%esi,%ebp,1),%al
4051f2:	3c 2d                	cmp    $0x2d,%al
4051f4:	75 08                	jne    0x4051fe
4051f6:	c6 44 24 10 01       	movb   $0x1,0x10(%esp)
4051fb:	45                   	inc    %ebp
4051fc:	eb 05                	jmp    0x405203
4051fe:	3c 2b                	cmp    $0x2b,%al
405200:	75 01                	jne    0x405203
405202:	45                   	inc    %ebp
405203:	b3 01                	mov    $0x1,%bl
405205:	80 7c 2e ff 24       	cmpb   $0x24,-0x1(%esi,%ebp,1)
40520a:	74 28                	je     0x405234
40520c:	8a 44 2e ff          	mov    -0x1(%esi,%ebp,1),%al
405210:	e8 ef d8 ff ff       	call   0x402b04
405215:	3c 58                	cmp    $0x58,%al
405217:	74 1b                	je     0x405234
405219:	80 7c 2e ff 30       	cmpb   $0x30,-0x1(%esi,%ebp,1)
40521e:	0f 85 da 00 00 00    	jne    0x4052fe
405224:	8a 04 2e             	mov    (%esi,%ebp,1),%al
405227:	e8 d8 d8 ff ff       	call   0x402b04
40522c:	3c 58                	cmp    $0x58,%al
40522e:	0f 85 ca 00 00 00    	jne    0x4052fe
405234:	80 7c 2e ff 30       	cmpb   $0x30,-0x1(%esi,%ebp,1)
405239:	75 01                	jne    0x40523c
40523b:	45                   	inc    %ebp
40523c:	45                   	inc    %ebp
40523d:	8a 44 2e ff          	mov    -0x1(%esi,%ebp,1),%al
405241:	8b d0                	mov    %eax,%edx
405243:	80 c2 d0             	add    $0xd0,%dl
405246:	80 ea 0a             	sub    $0xa,%dl
405249:	72 12                	jb     0x40525d
40524b:	80 c2 f9             	add    $0xf9,%dl
40524e:	80 ea 06             	sub    $0x6,%dl
405251:	72 17                	jb     0x40526a
405253:	80 c2 e6             	add    $0xe6,%dl
405256:	80 ea 06             	sub    $0x6,%dl
405259:	72 1c                	jb     0x405277
40525b:	eb 7a                	jmp    0x4052d7
40525d:	8b f8                	mov    %eax,%edi
40525f:	81 e7 ff 00 00 00    	and    $0xff,%edi
405265:	83 ef 30             	sub    $0x30,%edi
405268:	eb 18                	jmp    0x405282
40526a:	8b f8                	mov    %eax,%edi
40526c:	81 e7 ff 00 00 00    	and    $0xff,%edi
405272:	83 ef 37             	sub    $0x37,%edi
405275:	eb 0b                	jmp    0x405282
405277:	8b f8                	mov    %eax,%edi
405279:	81 e7 ff 00 00 00    	and    $0xff,%edi
40527f:	83 ef 57             	sub    $0x57,%edi
405282:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
405287:	75 09                	jne    0x405292
405289:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
40528e:	72 47                	jb     0x4052d7
405290:	eb 02                	jmp    0x405294
405292:	7c 43                	jl     0x4052d7
405294:	81 7c 24 0c ff ff ff 	cmpl   $0xfffffff,0xc(%esp)
40529b:	0f
40529c:	75 09                	jne    0x4052a7
40529e:	83 7c 24 08 ff       	cmpl   $0xffffffff,0x8(%esp)
4052a3:	76 04                	jbe    0x4052a9
4052a5:	eb 30                	jmp    0x4052d7
4052a7:	7f 2e                	jg     0x4052d7
4052a9:	8b c7                	mov    %edi,%eax
4052ab:	99                   	cltd
4052ac:	52                   	push   %edx
4052ad:	50                   	push   %eax
4052ae:	8b 44 24 10          	mov    0x10(%esp),%eax
4052b2:	8b 54 24 14          	mov    0x14(%esp),%edx
4052b6:	0f a4 c2 04          	shld   $0x4,%eax,%edx
4052ba:	c1 e0 04             	shl    $0x4,%eax
4052bd:	03 04 24             	add    (%esp),%eax
4052c0:	13 54 24 04          	adc    0x4(%esp),%edx
4052c4:	83 c4 08             	add    $0x8,%esp
4052c7:	89 44 24 08          	mov    %eax,0x8(%esp)
4052cb:	89 54 24 0c          	mov    %edx,0xc(%esp)
4052cf:	45                   	inc    %ebp
4052d0:	33 db                	xor    %ebx,%ebx
4052d2:	e9 66 ff ff ff       	jmp    0x40523d
4052d7:	80 7c 24 10 00       	cmpb   $0x0,0x10(%esp)
4052dc:	0f 84 d3 00 00 00    	je     0x4053b5
4052e2:	8b 44 24 08          	mov    0x8(%esp),%eax
4052e6:	8b 54 24 0c          	mov    0xc(%esp),%edx
4052ea:	f7 d8                	neg    %eax
4052ec:	83 d2 00             	adc    $0x0,%edx
4052ef:	f7 da                	neg    %edx
4052f1:	89 44 24 08          	mov    %eax,0x8(%esp)
4052f5:	89 54 24 0c          	mov    %edx,0xc(%esp)
4052f9:	e9 b7 00 00 00       	jmp    0x4053b5
4052fe:	8a 44 2e ff          	mov    -0x1(%esi,%ebp,1),%al
405302:	8b d0                	mov    %eax,%edx
405304:	80 c2 d0             	add    $0xd0,%dl
405307:	80 ea 0a             	sub    $0xa,%dl
40530a:	73 62                	jae    0x40536e
40530c:	8b f8                	mov    %eax,%edi
40530e:	81 e7 ff 00 00 00    	and    $0xff,%edi
405314:	83 ef 30             	sub    $0x30,%edi
405317:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
40531c:	75 09                	jne    0x405327
40531e:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
405323:	72 49                	jb     0x40536e
405325:	eb 02                	jmp    0x405329
405327:	7c 45                	jl     0x40536e
405329:	81 7c 24 0c cc cc cc 	cmpl   $0xccccccc,0xc(%esp)
405330:	0c
405331:	75 0c                	jne    0x40533f
405333:	81 7c 24 08 cc cc cc 	cmpl   $0xcccccccc,0x8(%esp)
40533a:	cc
40533b:	76 04                	jbe    0x405341
40533d:	eb 2f                	jmp    0x40536e
40533f:	7f 2d                	jg     0x40536e
405341:	6a 00                	push   $0x0
405343:	6a 0a                	push   $0xa
405345:	8b 44 24 10          	mov    0x10(%esp),%eax
405349:	8b 54 24 14          	mov    0x14(%esp),%edx
40534d:	e8 66 fc ff ff       	call   0x404fb8
405352:	52                   	push   %edx
405353:	50                   	push   %eax
405354:	8b c7                	mov    %edi,%eax
405356:	99                   	cltd
405357:	03 04 24             	add    (%esp),%eax
40535a:	13 54 24 04          	adc    0x4(%esp),%edx
40535e:	83 c4 08             	add    $0x8,%esp
405361:	89 44 24 08          	mov    %eax,0x8(%esp)
405365:	89 54 24 0c          	mov    %edx,0xc(%esp)
405369:	45                   	inc    %ebp
40536a:	33 db                	xor    %ebx,%ebx
40536c:	eb 90                	jmp    0x4052fe
40536e:	80 7c 24 10 00       	cmpb   $0x0,0x10(%esp)
405373:	74 17                	je     0x40538c
405375:	8b 44 24 08          	mov    0x8(%esp),%eax
405379:	8b 54 24 0c          	mov    0xc(%esp),%edx
40537d:	f7 d8                	neg    %eax
40537f:	83 d2 00             	adc    $0x0,%edx
405382:	f7 da                	neg    %edx
405384:	89 44 24 08          	mov    %eax,0x8(%esp)
405388:	89 54 24 0c          	mov    %edx,0xc(%esp)
40538c:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
405391:	75 05                	jne    0x405398
405393:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
405398:	74 1b                	je     0x4053b5
40539a:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
40539f:	75 0a                	jne    0x4053ab
4053a1:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
4053a6:	0f 92 c0             	setb   %al
4053a9:	eb 03                	jmp    0x4053ae
4053ab:	0f 9c c0             	setl   %al
4053ae:	3a 44 24 10          	cmp    0x10(%esp),%al