40bfe4:	e8 5a 08 00 00       	call   0x40c843
40bfe9:	8b 45 bc             	mov    -0x44(%ebp),%eax
40bfec:	8b c8                	mov    %eax,%ecx
40bfee:	0f b7 00             	movzwl (%eax),%eax
40bff1:	66 85 c0             	test   %ax,%ax
40bff4:	0f 84 10 fd ff ff    	je     0x40bd0a
40bffa:	8b d0                	mov    %eax,%edx
40bffc:	66 83 fa 2f          	cmp    $0x2f,%dx
40c000:	75 05                	jne    0x40c007
40c002:	33 c0                	xor    %eax,%eax
40c004:	66 89 01             	mov    %ax,(%ecx)
40c007:	83 c1 02             	add    $0x2,%ecx
40c00a:	0f b7 01             	movzwl (%ecx),%eax
40c00d:	8b d0                	mov    %eax,%edx
40c00f:	66 85 c0             	test   %ax,%ax
40c012:	75 e8                	jne    0x40bffc
40c014:	e9 f1 fc ff ff       	jmp    0x40bd0a
40c019:	68 18 44 40 00       	push   $0x404418
40c01e:	ff 76 fc             	push   -0x4(%esi)
40c021:	ff 15 28 f1 40 00    	call   *0x40f128
40c027:	59                   	pop    %ecx
40c028:	59                   	pop    %ecx
40c029:	85 c0                	test   %eax,%eax
40c02b:	75 12                	jne    0x40c03f
40c02d:	8b 45 0c             	mov    0xc(%ebp),%eax
40c030:	39 45 dc             	cmp    %eax,-0x24(%ebp)
40c033:	73 0a                	jae    0x40c03f
40c035:	8b 06                	mov    (%esi),%eax
40c037:	89 45 ac             	mov    %eax,-0x54(%ebp)
40c03a:	e9 ce fc ff ff       	jmp    0x40bd0d
40c03f:	68 24 44 40 00       	push   $0x404424
40c044:	ff 76 fc             	push   -0x4(%esi)
40c047:	ff 15 28 f1 40 00    	call   *0x40f128
40c04d:	59                   	pop    %ecx
40c04e:	59                   	pop    %ecx
40c04f:	85 c0                	test   %eax,%eax
40c051:	75 12                	jne    0x40c065
40c053:	8b 45 0c             	mov    0xc(%ebp),%eax
40c056:	39 45 dc             	cmp    %eax,-0x24(%ebp)
40c059:	73 0a                	jae    0x40c065
40c05b:	8b 06                	mov    (%esi),%eax
40c05d:	89 45 b0             	mov    %eax,-0x50(%ebp)
40c060:	e9 a8 fc ff ff       	jmp    0x40bd0d
40c065:	68 38 44 40 00       	push   $0x404438
40c06a:	ff 76 fc             	push   -0x4(%esi)
40c06d:	ff 15 28 f1 40 00    	call   *0x40f128
40c073:	59                   	pop    %ecx
40c074:	59                   	pop    %ecx
40c075:	85 c0                	test   %eax,%eax
40c077:	75 2d                	jne    0x40c0a6
40c079:	8b 45 0c             	mov    0xc(%ebp),%eax
40c07c:	39 45 dc             	cmp    %eax,-0x24(%ebp)
40c07f:	73 25                	jae    0x40c0a6
40c081:	8b 06                	mov    (%esi),%eax
40c083:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40c086:	e9 82 fc ff ff       	jmp    0x40bd0d
40c08b:	80 3d c4 eb 40 00 01 	cmpb   $0x1,0x40ebc4
40c092:	75 12                	jne    0x40c0a6
40c094:	c7 45 d4 b4 11 40 00 	movl   $0x4011b4,-0x2c(%ebp)
40c09b:	6a 69                	push   $0x69
40c09d:	8d 55 d4             	lea    -0x2c(%ebp),%edx
40c0a0:	59                   	pop    %ecx
40c0a1:	e8 09 e5 ff ff       	call   0x40a5af
40c0a6:	e8 1c db ff ff       	call   0x409bc7
40c0ab:	e9 af 01 00 00       	jmp    0x40c25f
40c0b0:	80 3d c4 eb 40 00 01 	cmpb   $0x1,0x40ebc4
40c0b7:	75 ed                	jne    0x40c0a6
40c0b9:	c7 45 d4 dc 42 40 00 	movl   $0x4042dc,-0x2c(%ebp)
40c0c0:	eb d9                	jmp    0x40c09b
40c0c2:	80 3d c4 eb 40 00 01 	cmpb   $0x1,0x40ebc4
40c0c9:	75 db                	jne    0x40c0a6
40c0cb:	c7 45 d4 48 43 40 00 	movl   $0x404348,-0x2c(%ebp)
40c0d2:	eb c7                	jmp    0x40c09b
40c0d4:	ff 15 40 f0 40 00    	call   *0x40f040
40c0da:	b9 d8 43 40 00       	mov    $0x4043d8,%ecx
40c0df:	8b d0                	mov    %eax,%edx
40c0e1:	e8 9a c8 ff ff       	call   0x408980
40c0e6:	e9 74 01 00 00       	jmp    0x40c25f
40c0eb:	8b 75 e0             	mov    -0x20(%ebp),%esi
40c0ee:	83 fe ff             	cmp    $0xffffffff,%esi
40c0f1:	74 7d                	je     0x40c170
40c0f3:	8d 4d cc             	lea    -0x34(%ebp),%ecx
40c0f6:	51                   	push   %ecx
40c0f7:	6a 04                	push   $0x4
40c0f9:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40c0fc:	51                   	push   %ecx
40c0fd:	6a 03                	push   $0x3
40c0ff:	50                   	push   %eax
40c100:	ff 15 54 00 41 00    	call   *0x410054
40c106:	85 c0                	test   %eax,%eax
40c108:	75 2b                	jne    0x40c135
40c10a:	ff 15 40 f0 40 00    	call   *0x40f040
40c110:	8b f0                	mov    %eax,%esi
40c112:	83 fe 7c             	cmp    $0x7c,%esi
40c115:	75 0b                	jne    0x40c122
40c117:	83 7d c4 01          	cmpl   $0x1,-0x3c(%ebp)
40c11b:	74 05                	je     0x40c122
40c11d:	8b 75 e0             	mov    -0x20(%ebp),%esi
40c120:	eb 4e                	jmp    0x40c170
40c122:	8b d6                	mov    %esi,%edx
40c124:	b9 58 44 40 00       	mov    $0x404458,%ecx
40c129:	e8 52 c8 ff ff       	call   0x408980
40c12e:	8b c6                	mov    %esi,%eax
40c130:	e9 2a 01 00 00       	jmp    0x40c25f
40c135:	8b 45 c4             	mov    -0x3c(%ebp),%eax
40c138:	3b 45 d8             	cmp    -0x28(%ebp),%eax
40c13b:	74 33                	je     0x40c170
40c13d:	89 45 d8             	mov    %eax,-0x28(%ebp)
40c140:	8d 45 d8             	lea    -0x28(%ebp),%eax
40c143:	50                   	push   %eax
40c144:	8b 45 c0             	mov    -0x40(%ebp),%eax
40c147:	6a 03                	push   $0x3
40c149:	ff 30                	push   (%eax)
40c14b:	ff 15 68 00 41 00    	call   *0x410068
40c151:	85 c0                	test   %eax,%eax
40c153:	75 10                	jne    0x40c165
40c155:	ff 15 40 f0 40 00    	call   *0x40f040
40c15b:	8b f8                	mov    %eax,%edi
40c15d:	85 ff                	test   %edi,%edi
40c15f:	0f 85 95 00 00 00    	jne    0x40c1fa
40c165:	33 c0                	xor    %eax,%eax
40c167:	39 45 c4             	cmp    %eax,-0x3c(%ebp)
40c16a:	0f 94 c0             	sete   %al
40c16d:	89 45 d8             	mov    %eax,-0x28(%ebp)
40c170:	ff 75 b4             	push   -0x4c(%ebp)
40c173:	8b 45 c0             	mov    -0x40(%ebp),%eax
40c176:	ff 75 b0             	push   -0x50(%ebp)
40c179:	ff 75 ac             	push   -0x54(%ebp)
40c17c:	ff 75 bc             	push   -0x44(%ebp)
40c17f:	ff 75 b8             	push   -0x48(%ebp)
40c182:	ff 75 a8             	push   -0x58(%ebp)
40c185:	ff 75 a4             	push   -0x5c(%ebp)
40c188:	ff 75 d0             	push   -0x30(%ebp)
40c18b:	56                   	push   %esi
40c18c:	53                   	push   %ebx
40c18d:	ff 30                	push   (%eax)
40c18f:	ff 15 5c 00 41 00    	call   *0x41005c
40c195:	85 c0                	test   %eax,%eax
40c197:	75 6f                	jne    0x40c208
40c199:	ff 15 40 f0 40 00    	call   *0x40f040
40c19f:	8b f8                	mov    %eax,%edi
40c1a1:	85 ff                	test   %edi,%edi
40c1a3:	74 63                	je     0x40c208
40c1a5:	8b d7                	mov    %edi,%edx
40c1a7:	b9 14 45 40 00       	mov    $0x404514,%ecx
40c1ac:	e8 cf c7 ff ff       	call   0x408980
40c1b1:	83 fe ff             	cmp    $0xffffffff,%esi
40c1b4:	0f 84 a3 00 00 00    	je     0x40c25d
40c1ba:	83 fe 04             	cmp    $0x4,%esi
40c1bd:	74 12                	je     0x40c1d1
40c1bf:	81 ff b7 00 00 00    	cmp    $0xb7,%edi
40c1c5:	75 0a                	jne    0x40c1d1
40c1c7:	33 d2                	xor    %edx,%edx
40c1c9:	8d 4f f0             	lea    -0x10(%edi),%ecx
40c1cc:	e8 de e3 ff ff       	call   0x40a5af
40c1d1:	8b 45 c4             	mov    -0x3c(%ebp),%eax
40c1d4:	3b 45 d8             	cmp    -0x28(%ebp),%eax
40c1d7:	0f 84 80 00 00 00    	je     0x40c25d
40c1dd:	8d 45 d8             	lea    -0x28(%ebp),%eax
40c1e0:	50                   	push   %eax
40c1e1:	8b 45 c0             	mov    -0x40(%ebp),%eax
40c1e4:	6a 03                	push   $0x3
40c1e6:	ff 30                	push   (%eax)
40c1e8:	ff 15 68 00 41 00    	call   *0x410068
40c1ee:	85 c0                	test   %eax,%eax
40c1f0:	75 6b                	jne    0x40c25d
40c1f2:	ff 15 40 f0 40 00    	call   *0x40f040
40c1f8:	8b f8                	mov    %eax,%edi
40c1fa:	8b d7                	mov    %edi,%edx
40c1fc:	b9 b8 44 40 00       	mov    $0x4044b8,%ecx
40c201:	e8 7a c7 ff ff       	call   0x408980
40c206:	eb 55                	jmp    0x40c25d
40c208:	6a 64                	push   $0x64
40c20a:	8d 55 cc             	lea    -0x34(%ebp),%edx
40c20d:	c7 45 cc 14 45 40 00 	movl   $0x404514,-0x34(%ebp)
40c214:	59                   	pop    %ecx
40c215:	e8 95 e3 ff ff       	call   0x40a5af
40c21a:	8b 45 b8             	mov    -0x48(%ebp),%eax
40c21d:	85 c0                	test   %eax,%eax
40c21f:	74 22                	je     0x40c243
40c221:	6a 0a                	push   $0xa
40c223:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40c226:	51                   	push   %ecx
40c227:	ff 30                	push   (%eax)
40c229:	ff 15 20 f1 40 00    	call   *0x40f120
40c22f:	83 c4 0c             	add    $0xc,%esp
40c232:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40c235:	8d 55 cc             	lea    -0x34(%ebp),%edx
40c238:	89 45 cc             	mov    %eax,-0x34(%ebp)
40c23b:	6a 29                	push   $0x29
40c23d:	59                   	pop    %ecx
40c23e:	e8 6c e3 ff ff       	call   0x40a5af
40c243:	83 fb ff             	cmp    $0xffffffff,%ebx
40c246:	74 15                	je     0x40c25d
40c248:	f7 c3 00 01 00 00    	test   $0x100,%ebx
40c24e:	74 0d                	je     0x40c25d
40c250:	8d 55 a0             	lea    -0x60(%ebp),%edx
40c253:	b9 84 00 00 00       	mov    $0x84,%ecx
40c258:	e8 52 e3 ff ff       	call   0x40a5af
40c25d:	8b c7                	mov    %edi,%eax
40c25f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c262:	5f                   	pop    %edi
40c263:	5e                   	pop    %esi
40c264:	33 cd                	xor    %ebp,%ecx
40c266:	5b                   	pop    %ebx
40c267:	e8 b4 9d ff ff       	call   0x406020
40c26c:	c9                   	leave
40c26d:	c2 0c 00             	ret    $0xc
40c270:	8b ff                	mov    %edi,%edi
40c272:	55                   	push   %ebp
40c273:	8b ec                	mov    %esp,%ebp
40c275:	83 ec 5c             	sub    $0x5c,%esp
40c278:	a1 04 e0 40 00       	mov    0x40e004,%eax
40c27d:	33 c5                	xor    %ebp,%eax
40c27f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c282:	8b 45 0c             	mov    0xc(%ebp),%eax
40c285:	53                   	push   %ebx
40c286:	56                   	push   %esi
40c287:	89 45 ac             	mov    %eax,-0x54(%ebp)
40c28a:	33 f6                	xor    %esi,%esi
40c28c:	8b 45 10             	mov    0x10(%ebp),%eax
40c28f:	8b da                	mov    %edx,%ebx
40c291:	57                   	push   %edi
40c292:	89 45 a4             	mov    %eax,-0x5c(%ebp)
40c295:	8b 45 14             	mov    0x14(%ebp),%eax
40c298:	6a 2c                	push   $0x2c
40c29a:	89 45 b0             	mov    %eax,-0x50(%ebp)
40c29d:	8d 45 b4             	lea    -0x4c(%ebp),%eax
40c2a0:	56                   	push   %esi
40c2a1:	50                   	push   %eax
40c2a2:	89 4d a8             	mov    %ecx,-0x58(%ebp)
40c2a5:	e8 5f a5 ff ff       	call   0x406809
40c2aa:	8b 7d 08             	mov    0x8(%ebp),%edi
40c2ad:	83 c4 0c             	add    $0xc,%esp
40c2b0:	83 ff 01             	cmp    $0x1,%edi
40c2b3:	74 28                	je     0x40c2dd
40c2b5:	76 14                	jbe    0x40c2cb
40c2b7:	83 ff 03             	cmp    $0x3,%edi
40c2ba:	76 1d                	jbe    0x40c2d9
40c2bc:	83 ff 04             	cmp    $0x4,%edi
40c2bf:	74 11                	je     0x40c2d2
40c2c1:	83 ff 05             	cmp    $0x5,%edi
40c2c4:	76 05                	jbe    0x40c2cb
40c2c6:	83 ff 0a             	cmp    $0xa,%edi
40c2c9:	76 0e                	jbe    0x40c2d9
40c2cb:	b8 00 01 00 00       	mov    $0x100,%eax
40c2d0:	eb 0e                	jmp    0x40c2e0
40c2d2:	b8 80 00 00 00       	mov    $0x80,%eax
40c2d7:	eb 07                	jmp    0x40c2e0
40c2d9:	6a 40                	push   $0x40
40c2db:	eb 02                	jmp    0x40c2df
40c2dd:	6a 20                	push   $0x20
40c2df:	58                   	pop    %eax
40c2e0:	50                   	push   %eax
40c2e1:	53                   	push   %ebx
40c2e2:	ff 75 a8             	push   -0x58(%ebp)
40c2e5:	ff 15 3c 00 41 00    	call   *0x41003c
40c2eb:	8b 4d b0             	mov    -0x50(%ebp),%ecx
40c2ee:	89 01                	mov    %eax,(%ecx)
40c2f0:	85 c0                	test   %eax,%eax
40c2f2:	75 19                	jne    0x40c30d
40c2f4:	ff 15 40 f0 40 00    	call   *0x40f040
40c2fa:	8b d0                	mov    %eax,%edx
40c2fc:	b9 88 14 40 00       	mov    $0x401488,%ecx
40c301:	e8 7a c6 ff ff       	call   0x408980
40c306:	8b f0                	mov    %eax,%esi
40c308:	e9 89 00 00 00       	jmp    0x40c396
40c30d:	8b 45 a4             	mov    -0x5c(%ebp),%eax
40c310:	8b 4d ac             	mov    -0x54(%ebp),%ecx
40c313:	89 45 b8             	mov    %eax,-0x48(%ebp)
40c316:	e8 a6 f4 ff ff       	call   0x40b7c1
40c31b:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40c31e:	39 75 ac             	cmp    %esi,-0x54(%ebp)
40c321:	74 37                	je     0x40c35a
40c323:	8d 45 b4             	lea    -0x4c(%ebp),%eax
40c326:	50                   	push   %eax
40c327:	8b 45 b0             	mov    -0x50(%ebp),%eax
40c32a:	6a 01                	push   $0x1
40c32c:	57                   	push   %edi
40c32d:	ff 30                	push   (%eax)
40c32f:	ff 15 34 00 41 00    	call   *0x410034
40c335:	85 c0                	test   %eax,%eax
40c337:	75 1a                	jne    0x40c353
40c339:	ff 15 40 f0 40 00    	call   *0x40f040
40c33f:	8b f0                	mov    %eax,%esi
40c341:	85 f6                	test   %esi,%esi
40c343:	74 0e                	je     0x40c353
40c345:	b9 60 42 40 00       	mov    $0x404260,%ecx
40c34a:	8b d6                	mov    %esi,%edx
40c34c:	e8 2f c6 ff ff       	call   0x408980
40c351:	eb 43                	jmp    0x40c396
40c353:	8d 45 bc             	lea    -0x44(%ebp),%eax
40c356:	6a 00                	push   $0x0
40c358:	eb 2c                	jmp    0x40c386
40c35a:	8d 45 e0             	lea    -0x20(%ebp),%eax
40c35d:	50                   	push   %eax
40c35e:	8b 45 b0             	mov    -0x50(%ebp),%eax
40c361:	57                   	push   %edi
40c362:	ff 30                	push   (%eax)
40c364:	ff 15 8c 00 41 00    	call   *0x41008c
40c36a:	85 c0                	test   %eax,%eax
40c36c:	75 13                	jne    0x40c381
40c36e:	ff 15 40 f0 40 00    	call   *0x40f040
40c374:	8b f0                	mov    %eax,%esi
40c376:	85 f6                	test   %esi,%esi
40c378:	74 07                	je     0x40c381
40c37a:	b9 84 42 40 00       	mov    $0x404284,%ecx
40c37f:	eb c9                	jmp    0x40c34a
40c381:	8d 45 e0             	lea    -0x20(%ebp),%eax
40c384:	6a 01                	push   $0x1
40c386:	89 45 b0             	mov    %eax,-0x50(%ebp)
40c389:	33 d2                	xor    %edx,%edx
40c38b:	8d 45 b0             	lea    -0x50(%ebp),%eax
40c38e:	8b cb                	mov    %ebx,%ecx
40c390:	50                   	push   %eax
40c391:	e8 fa 96 ff ff       	call   0x405a90
40c396:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c399:	8b c6                	mov    %esi,%eax
40c39b:	5f                   	pop    %edi
40c39c:	5e                   	pop    %esi
40c39d:	33 cd                	xor    %ebp,%ecx
40c39f:	5b                   	pop    %ebx
40c3a0:	e8 7b 9c ff ff       	call   0x406020
40c3a5:	c9                   	leave
40c3a6:	c2 10 00             	ret    $0x10
40c3a9:	8b ff                	mov    %edi,%edi
40c3ab:	55                   	push   %ebp
40c3ac:	8b ec                	mov    %esp,%ebp
40c3ae:	83 ec 20             	sub    $0x20,%esp
40c3b1:	56                   	push   %esi
40c3b2:	57                   	push   %edi
40c3b3:	68 04 47 40 00       	push   $0x404704
40c3b8:	ff 75 08             	push   0x8(%ebp)
40c3bb:	89 55 e8             	mov    %edx,-0x18(%ebp)
40c3be:	33 ff                	xor    %edi,%edi
40c3c0:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40c3c3:	c7 45 f0 01 00 00 c0 	movl   $0xc0000001,-0x10(%ebp)
40c3ca:	ff 15 28 f1 40 00    	call   *0x40f128
40c3d0:	59                   	pop    %ecx
40c3d1:	f7 d8                	neg    %eax
40c3d3:	59                   	pop    %ecx
40c3d4:	1b f6                	sbb    %esi,%esi
40c3d6:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c3d9:	57                   	push   %edi
40c3da:	50                   	push   %eax
40c3db:	6a 01                	push   $0x1
40c3dd:	ff 75 0c             	push   0xc(%ebp)
40c3e0:	46                   	inc    %esi
40c3e1:	ff 15 14 00 41 00    	call   *0x410014
40c3e7:	85 c0                	test   %eax,%eax