401f3c:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401f3f:	e8 55 33 00 00       	call   0x405299
401f44:	3b d7                	cmp    %edi,%edx
401f46:	7c 16                	jl     0x401f5e
401f48:	7f 05                	jg     0x401f4f
401f4a:	3b 45 e0             	cmp    -0x20(%ebp),%eax
401f4d:	76 0f                	jbe    0x401f5e
401f4f:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401f52:	e8 42 33 00 00       	call   0x405299
401f57:	2b 45 e0             	sub    -0x20(%ebp),%eax
401f5a:	1b d7                	sbb    %edi,%edx
401f5c:	eb 0e                	jmp    0x401f6c
401f5e:	0f 57 c0             	xorps  %xmm0,%xmm0
401f61:	66 0f 13 45 c4       	movlpd %xmm0,-0x3c(%ebp)
401f66:	8b 55 c8             	mov    -0x38(%ebp),%edx
401f69:	8b 45 c4             	mov    -0x3c(%ebp),%eax
401f6c:	53                   	push   %ebx
401f6d:	8d 4d bc             	lea    -0x44(%ebp),%ecx
401f70:	89 45 ec             	mov    %eax,-0x14(%ebp)
401f73:	89 55 e8             	mov    %edx,-0x18(%ebp)
401f76:	e8 36 0e 00 00       	call   0x402db1
401f7b:	8d 4d bc             	lea    -0x44(%ebp),%ecx
401f7e:	89 7d fc             	mov    %edi,-0x4(%ebp)
401f81:	e8 8b 12 00 00       	call   0x403211
401f86:	84 c0                	test   %al,%al
401f88:	75 08                	jne    0x401f92
401f8a:	6a 04                	push   $0x4
401f8c:	5e                   	pop    %esi
401f8d:	e9 d1 01 00 00       	jmp    0x402163
401f92:	8d 45 b4             	lea    -0x4c(%ebp),%eax
401f95:	50                   	push   %eax
401f96:	8b 03                	mov    (%ebx),%eax
401f98:	8b 48 04             	mov    0x4(%eax),%ecx
401f9b:	03 cb                	add    %ebx,%ecx
401f9d:	e8 8a 27 00 00       	call   0x40472c
401fa2:	50                   	push   %eax
401fa3:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
401fa7:	e8 2d 05 00 00       	call   0x4024d9
401fac:	59                   	pop    %ecx
401fad:	8d 4d b4             	lea    -0x4c(%ebp),%ecx
401fb0:	89 45 c8             	mov    %eax,-0x38(%ebp)
401fb3:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
401fb7:	e8 36 11 00 00       	call   0x4030f2
401fbc:	8b 0b                	mov    (%ebx),%ecx
401fbe:	8b 49 04             	mov    0x4(%ecx),%ecx
401fc1:	03 cb                	add    %ebx,%ecx
401fc3:	e8 d3 26 00 00       	call   0x40469b
401fc8:	25 c0 01 00 00       	and    $0x1c0,%eax
401fcd:	83 f8 40             	cmp    $0x40,%eax
401fd0:	74 72                	je     0x402044
401fd2:	8b 45 ec             	mov    -0x14(%ebp),%eax
401fd5:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401fd8:	3b cf                	cmp    %edi,%ecx
401fda:	7c 68                	jl     0x402044
401fdc:	7f 04                	jg     0x401fe2
401fde:	3b c7                	cmp    %edi,%eax
401fe0:	76 62                	jbe    0x402044
401fe2:	8b 03                	mov    (%ebx),%eax
401fe4:	8b 70 04             	mov    0x4(%eax),%esi
401fe7:	03 f3                	add    %ebx,%esi
401fe9:	8b ce                	mov    %esi,%ecx
401feb:	e8 a6 26 00 00       	call   0x404696
401ff0:	0f b7 c0             	movzwl %ax,%eax
401ff3:	8b ce                	mov    %esi,%ecx
401ff5:	50                   	push   %eax
401ff6:	e8 2f 2c 00 00       	call   0x404c2a
401ffb:	8b c8                	mov    %eax,%ecx
401ffd:	e8 b5 30 00 00       	call   0x4050b7
402002:	0f b7 c0             	movzwl %ax,%eax
402005:	89 45 d0             	mov    %eax,-0x30(%ebp)
402008:	e8 75 25 00 00       	call   0x404582
40200d:	0f b7 c0             	movzwl %ax,%eax
402010:	89 45 cc             	mov    %eax,-0x34(%ebp)
402013:	8d 45 d0             	lea    -0x30(%ebp),%eax
402016:	50                   	push   %eax
402017:	8d 45 cc             	lea    -0x34(%ebp),%eax
40201a:	50                   	push   %eax
40201b:	e8 88 25 00 00       	call   0x4045a8
402020:	59                   	pop    %ecx
402021:	59                   	pop    %ecx
402022:	84 c0                	test   %al,%al
402024:	74 08                	je     0x40202e
402026:	6a 04                	push   $0x4
402028:	5e                   	pop    %esi
402029:	e9 89 00 00 00       	jmp    0x4020b7
40202e:	8b 45 ec             	mov    -0x14(%ebp),%eax
402031:	8b f7                	mov    %edi,%esi
402033:	8b 4d e8             	mov    -0x18(%ebp),%ecx
402036:	83 c0 ff             	add    $0xffffffff,%eax
402039:	89 45 ec             	mov    %eax,-0x14(%ebp)
40203c:	83 d1 ff             	adc    $0xffffffff,%ecx
40203f:	89 4d e8             	mov    %ecx,-0x18(%ebp)
402042:	eb 94                	jmp    0x401fd8
402044:	85 f6                	test   %esi,%esi
402046:	0f 85 e0 00 00 00    	jne    0x40212c
40204c:	39 7d dc             	cmp    %edi,-0x24(%ebp)
40204f:	7c 6b                	jl     0x4020bc
402051:	8b 75 e0             	mov    -0x20(%ebp),%esi
402054:	7f 04                	jg     0x40205a
402056:	3b f7                	cmp    %edi,%esi
402058:	76 62                	jbe    0x4020bc
40205a:	8b 45 d8             	mov    -0x28(%ebp),%eax
40205d:	8b 4d c8             	mov    -0x38(%ebp),%ecx
402060:	0f b6 00             	movzbl (%eax),%eax
402063:	50                   	push   %eax
402064:	e8 12 32 00 00       	call   0x40527b
402069:	0f b7 c0             	movzwl %ax,%eax
40206c:	50                   	push   %eax
40206d:	8b 03                	mov    (%ebx),%eax
40206f:	8b 48 04             	mov    0x4(%eax),%ecx
402072:	03 cb                	add    %ebx,%ecx
402074:	e8 b1 2b 00 00       	call   0x404c2a
402079:	8b c8                	mov    %eax,%ecx
40207b:	e8 37 30 00 00       	call   0x4050b7
402080:	0f b7 c0             	movzwl %ax,%eax
402083:	89 45 cc             	mov    %eax,-0x34(%ebp)
402086:	e8 f7 24 00 00       	call   0x404582
40208b:	0f b7 c0             	movzwl %ax,%eax
40208e:	83 c6 ff             	add    $0xffffffff,%esi
402091:	89 45 d0             	mov    %eax,-0x30(%ebp)
402094:	8d 45 cc             	lea    -0x34(%ebp),%eax
402097:	83 55 dc ff          	adcl   $0xffffffff,-0x24(%ebp)
40209b:	ff 45 d8             	incl   -0x28(%ebp)
40209e:	50                   	push   %eax
40209f:	8d 45 d0             	lea    -0x30(%ebp),%eax
4020a2:	89 75 e0             	mov    %esi,-0x20(%ebp)
4020a5:	50                   	push   %eax
4020a6:	e8 fd 24 00 00       	call   0x4045a8
4020ab:	0f b6 f0             	movzbl %al,%esi
4020ae:	f7 de                	neg    %esi
4020b0:	59                   	pop    %ecx
4020b1:	1b f6                	sbb    %esi,%esi
4020b3:	59                   	pop    %ecx
4020b4:	83 e6 04             	and    $0x4,%esi
4020b7:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4020ba:	eb 88                	jmp    0x402044
4020bc:	8b 45 ec             	mov    -0x14(%ebp),%eax
4020bf:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4020c2:	3b cf                	cmp    %edi,%ecx
4020c4:	7c 66                	jl     0x40212c
4020c6:	7f 04                	jg     0x4020cc
4020c8:	3b c7                	cmp    %edi,%eax
4020ca:	76 60                	jbe    0x40212c
4020cc:	8b 03                	mov    (%ebx),%eax
4020ce:	8b 70 04             	mov    0x4(%eax),%esi
4020d1:	03 f3                	add    %ebx,%esi
4020d3:	8b ce                	mov    %esi,%ecx
4020d5:	e8 bc 25 00 00       	call   0x404696
4020da:	0f b7 c0             	movzwl %ax,%eax
4020dd:	8b ce                	mov    %esi,%ecx
4020df:	50                   	push   %eax
4020e0:	e8 45 2b 00 00       	call   0x404c2a
4020e5:	8b c8                	mov    %eax,%ecx
4020e7:	e8 cb 2f 00 00       	call   0x4050b7
4020ec:	0f b7 c0             	movzwl %ax,%eax
4020ef:	89 45 c8             	mov    %eax,-0x38(%ebp)
4020f2:	e8 8b 24 00 00       	call   0x404582
4020f7:	0f b7 c0             	movzwl %ax,%eax
4020fa:	89 45 cc             	mov    %eax,-0x34(%ebp)
4020fd:	8d 45 c8             	lea    -0x38(%ebp),%eax
402100:	50                   	push   %eax
402101:	8d 45 cc             	lea    -0x34(%ebp),%eax
402104:	50                   	push   %eax
402105:	e8 9e 24 00 00       	call   0x4045a8
40210a:	59                   	pop    %ecx
40210b:	59                   	pop    %ecx
40210c:	84 c0                	test   %al,%al
40210e:	74 08                	je     0x402118
402110:	8b 75 e4             	mov    -0x1c(%ebp),%esi
402113:	83 ce 04             	or     $0x4,%esi
402116:	eb 17                	jmp    0x40212f
402118:	8b 45 ec             	mov    -0x14(%ebp),%eax
40211b:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40211e:	83 c0 ff             	add    $0xffffffff,%eax
402121:	89 45 ec             	mov    %eax,-0x14(%ebp)
402124:	83 d1 ff             	adc    $0xffffffff,%ecx
402127:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40212a:	eb 96                	jmp    0x4020c2
40212c:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40212f:	8b 03                	mov    (%ebx),%eax
402131:	57                   	push   %edi
402132:	57                   	push   %edi
402133:	8b 48 04             	mov    0x4(%eax),%ecx
402136:	03 cb                	add    %ebx,%ecx
402138:	e8 43 31 00 00       	call   0x405280
40213d:	eb 21                	jmp    0x402160
40213f:	8b 55 d4             	mov    -0x2c(%ebp),%edx
402142:	6a 01                	push   $0x1
402144:	6a 04                	push   $0x4
402146:	8b 02                	mov    (%edx),%eax
402148:	8b 48 04             	mov    0x4(%eax),%ecx
40214b:	03 ca                	add    %edx,%ecx
40214d:	e8 3d 2f 00 00       	call   0x40508f
402152:	b8 58 21 40 00       	mov    $0x402158,%eax
402157:	c3                   	ret
402158:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
40215b:	33 ff                	xor    %edi,%edi
40215d:	8b 75 e4             	mov    -0x1c(%ebp),%esi
402160:	89 7d fc             	mov    %edi,-0x4(%ebp)
402163:	8b 03                	mov    (%ebx),%eax
402165:	57                   	push   %edi
402166:	56                   	push   %esi
402167:	8b 48 04             	mov    0x4(%eax),%ecx
40216a:	03 cb                	add    %ebx,%ecx
40216c:	e8 1e 2f 00 00       	call   0x40508f
402171:	8d 4d bc             	lea    -0x44(%ebp),%ecx
402174:	e8 bc 0f 00 00       	call   0x403135
402179:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40217c:	8b c3                	mov    %ebx,%eax
40217e:	5f                   	pop    %edi
40217f:	5e                   	pop    %esi
402180:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
402187:	5b                   	pop    %ebx
402188:	8b e5                	mov    %ebp,%esp
40218a:	5d                   	pop    %ebp
40218b:	c3                   	ret
40218c:	b8 4b 69 42 00       	mov    $0x42694b,%eax
402191:	e8 2a 4c 00 00       	call   0x406dc0
402196:	83 ec 30             	sub    $0x30,%esp
402199:	53                   	push   %ebx
40219a:	56                   	push   %esi
40219b:	57                   	push   %edi
40219c:	8b c2                	mov    %edx,%eax
40219e:	89 65 f0             	mov    %esp,-0x10(%ebp)
4021a1:	8b d9                	mov    %ecx,%ebx
4021a3:	89 45 d0             	mov    %eax,-0x30(%ebp)
4021a6:	33 ff                	xor    %edi,%edi
4021a8:	89 5d e0             	mov    %ebx,-0x20(%ebp)
4021ab:	50                   	push   %eax
4021ac:	8b f7                	mov    %edi,%esi
4021ae:	e8 10 26 00 00       	call   0x4047c3
4021b3:	59                   	pop    %ecx
4021b4:	8b 0b                	mov    (%ebx),%ecx
4021b6:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4021b9:	8b 41 04             	mov    0x4(%ecx),%eax
4021bc:	03 c3                	add    %ebx,%eax
4021be:	8b c8                	mov    %eax,%ecx
4021c0:	89 45 e8             	mov    %eax,-0x18(%ebp)
4021c3:	e8 d1 30 00 00       	call   0x405299
4021c8:	3b d7                	cmp    %edi,%edx
4021ca:	7c 2d                	jl     0x4021f9
4021cc:	7f 04                	jg     0x4021d2
4021ce:	3b c7                	cmp    %edi,%eax
4021d0:	76 27                	jbe    0x4021f9
4021d2:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4021d5:	e8 bf 30 00 00       	call   0x405299
4021da:	3b d7                	cmp    %edi,%edx
4021dc:	7c 1b                	jl     0x4021f9
4021de:	7f 05                	jg     0x4021e5
4021e0:	3b 45 e4             	cmp    -0x1c(%ebp),%eax
4021e3:	76 14                	jbe    0x4021f9
4021e5:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4021e8:	e8 ac 30 00 00       	call   0x405299
4021ed:	2b 45 e4             	sub    -0x1c(%ebp),%eax
4021f0:	8b ca                	mov    %edx,%ecx
4021f2:	1b cf                	sbb    %edi,%ecx
4021f4:	89 4d e8             	mov    %ecx,-0x18(%ebp)
4021f7:	eb 11                	jmp    0x40220a
4021f9:	0f 57 c0             	xorps  %xmm0,%xmm0
4021fc:	66 0f 13 45 d4       	movlpd %xmm0,-0x2c(%ebp)
402201:	8b 45 d8             	mov    -0x28(%ebp),%eax
402204:	89 45 e8             	mov    %eax,-0x18(%ebp)
402207:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40220a:	53                   	push   %ebx
40220b:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
40220e:	89 45 ec             	mov    %eax,-0x14(%ebp)
402211:	e8 9b 0b 00 00       	call   0x402db1
402216:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
402219:	89 7d fc             	mov    %edi,-0x4(%ebp)
40221c:	e8 f0 0f 00 00       	call   0x403211
402221:	84 c0                	test   %al,%al
402223:	75 08                	jne    0x40222d
402225:	6a 04                	push   $0x4
402227:	5e                   	pop    %esi
402228:	e9 5b 01 00 00       	jmp    0x402388
40222d:	8b 03                	mov    (%ebx),%eax
40222f:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
402233:	8b 48 04             	mov    0x4(%eax),%ecx
402236:	03 cb                	add    %ebx,%ecx
402238:	e8 5e 24 00 00       	call   0x40469b
40223d:	25 c0 01 00 00       	and    $0x1c0,%eax
402242:	83 f8 40             	cmp    $0x40,%eax
402245:	74 7a                	je     0x4022c1
402247:	8b 45 ec             	mov    -0x14(%ebp),%eax
40224a:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40224d:	3b cf                	cmp    %edi,%ecx
40224f:	7c 68                	jl     0x4022b9
402251:	7f 04                	jg     0x402257
402253:	3b c7                	cmp    %edi,%eax
402255:	76 62                	jbe    0x4022b9
402257:	8b 03                	mov    (%ebx),%eax
402259:	8b 70 04             	mov    0x4(%eax),%esi
40225c:	03 f3                	add    %ebx,%esi
40225e:	8b ce                	mov    %esi,%ecx
402260:	e8 31 24 00 00       	call   0x404696
402265:	0f b7 c0             	movzwl %ax,%eax
402268:	8b ce                	mov    %esi,%ecx
40226a:	50                   	push   %eax
40226b:	e8 ba 29 00 00       	call   0x404c2a
402270:	8b c8                	mov    %eax,%ecx
402272:	e8 40 2e 00 00       	call   0x4050b7
402277:	0f b7 c0             	movzwl %ax,%eax
40227a:	89 45 dc             	mov    %eax,-0x24(%ebp)
40227d:	e8 00 23 00 00       	call   0x404582
402282:	0f b7 c0             	movzwl %ax,%eax
402285:	89 45 d8             	mov    %eax,-0x28(%ebp)
402288:	8d 45 dc             	lea    -0x24(%ebp),%eax
40228b:	50                   	push   %eax
40228c:	8d 45 d8             	lea    -0x28(%ebp),%eax
40228f:	50                   	push   %eax
402290:	e8 13 23 00 00       	call   0x4045a8
402295:	59                   	pop    %ecx
402296:	59                   	pop    %ecx
402297:	84 c0                	test   %al,%al
402299:	74 08                	je     0x4022a3
40229b:	6a 04                	push   $0x4
40229d:	5e                   	pop    %esi
40229e:	e9 b2 00 00 00       	jmp    0x402355
4022a3:	8b 45 ec             	mov    -0x14(%ebp),%eax
4022a6:	8b f7                	mov    %edi,%esi
4022a8:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4022ab:	83 c0 ff             	add    $0xffffffff,%eax
4022ae:	89 45 ec             	mov    %eax,-0x14(%ebp)
4022b1:	83 d1 ff             	adc    $0xffffffff,%ecx
4022b4:	89 4d e8             	mov    %ecx,-0x18(%ebp)
4022b7:	eb 94                	jmp    0x40224d
4022b9:	85 f6                	test   %esi,%esi
4022bb:	0f 85 92 00 00 00    	jne    0x402353
4022c1:	8b 03                	mov    (%ebx),%eax
4022c3:	8b 75 e4             	mov    -0x1c(%ebp),%esi
4022c6:	57                   	push   %edi
4022c7:	56                   	push   %esi
4022c8:	8b 48 04             	mov    0x4(%eax),%ecx
4022cb:	ff 75 d0             	push   -0x30(%ebp)
4022ce:	03 cb                	add    %ebx,%ecx
4022d0:	e8 55 29 00 00       	call   0x404c2a
4022d5:	8b c8                	mov    %eax,%ecx
4022d7:	e8 24 2e 00 00       	call   0x405100
4022dc:	3b c6                	cmp    %esi,%eax
4022de:	75 bb                	jne    0x40229b
4022e0:	3b d7                	cmp    %edi,%edx
4022e2:	75 b7                	jne    0x40229b
4022e4:	8b 45 ec             	mov    -0x14(%ebp),%eax
4022e7:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4022ea:	3b cf                	cmp    %edi,%ecx
4022ec:	7c 65                	jl     0x402353
4022ee:	7f 04                	jg     0x4022f4
4022f0:	3b c7                	cmp    %edi,%eax
4022f2:	76 5f                	jbe    0x402353
4022f4:	8b 03                	mov    (%ebx),%eax