408f3f:	8b f1                	mov    %ecx,%esi
408f41:	8d 56 02             	lea    0x2(%esi),%edx
408f44:	66 8b 06             	mov    (%esi),%ax
408f47:	83 c6 02             	add    $0x2,%esi
408f4a:	66 3b c3             	cmp    %bx,%ax
408f4d:	75 f5                	jne    0x408f44
408f4f:	0f b7 01             	movzwl (%ecx),%eax
408f52:	2b f2                	sub    %edx,%esi
408f54:	d1 fe                	sar    $1,%esi
408f56:	8b d9                	mov    %ecx,%ebx
408f58:	89 75 f0             	mov    %esi,-0x10(%ebp)
408f5b:	8b d0                	mov    %eax,%edx
408f5d:	66 85 c0             	test   %ax,%ax
408f60:	74 11                	je     0x408f73
408f62:	33 d2                	xor    %edx,%edx
408f64:	8b c1                	mov    %ecx,%eax
408f66:	8b d9                	mov    %ecx,%ebx
408f68:	83 c1 02             	add    $0x2,%ecx
408f6b:	66 39 11             	cmp    %dx,(%ecx)
408f6e:	75 f4                	jne    0x408f64
408f70:	0f b7 10             	movzwl (%eax),%edx
408f73:	6a 3a                	push   $0x3a
408f75:	58                   	pop    %eax
408f76:	89 5d fc             	mov    %ebx,-0x4(%ebp)
408f79:	89 45 ec             	mov    %eax,-0x14(%ebp)
408f7c:	66 3b d0             	cmp    %ax,%dx
408f7f:	0f 84 29 28 01 00    	je     0x41b7ae
408f85:	b9 50 02 00 00       	mov    $0x250,%ecx
408f8a:	e8 41 4d 00 00       	call   0x40dcd0
408f8f:	85 c0                	test   %eax,%eax
408f91:	0f 84 4f 29 01 00    	je     0x41b8e6
408f97:	89 47 18             	mov    %eax,0x18(%edi)
408f9a:	8b 45 fc             	mov    -0x4(%ebp),%eax
408f9d:	6a 5c                	push   $0x5c
408f9f:	5e                   	pop    %esi
408fa0:	89 75 f4             	mov    %esi,-0xc(%ebp)
408fa3:	0f b7 00             	movzwl (%eax),%eax
408fa6:	66 3b c6             	cmp    %si,%ax
408fa9:	0f 84 3a 01 00 00    	je     0x4090e9
408faf:	8b 0f                	mov    (%edi),%ecx
408fb1:	8b d6                	mov    %esi,%edx
408fb3:	e8 3d 72 00 00       	call   0x4101f5
408fb8:	8b f0                	mov    %eax,%esi
408fba:	85 f6                	test   %esi,%esi
408fbc:	0f 84 af 28 01 00    	je     0x41b871
408fc2:	83 c6 02             	add    $0x2,%esi
408fc5:	33 db                	xor    %ebx,%ebx
408fc7:	68 34 24 40 00       	push   $0x402434
408fcc:	56                   	push   %esi
408fcd:	ff 15 40 a4 44 00    	call   *0x44a440
408fd3:	59                   	pop    %ecx
408fd4:	59                   	pop    %ecx
408fd5:	85 c0                	test   %eax,%eax
408fd7:	0f 84 13 01 00 00    	je     0x4090f0
408fdd:	68 10 25 40 00       	push   $0x402510
408fe2:	56                   	push   %esi
408fe3:	ff 15 40 a4 44 00    	call   *0x44a440
408fe9:	59                   	pop    %ecx
408fea:	59                   	pop    %ecx
408feb:	85 c0                	test   %eax,%eax
408fed:	0f 84 fd 00 00 00    	je     0x4090f0
408ff3:	83 3d d8 e0 42 00 04 	cmpl   $0x4,0x42e0d8
408ffa:	0f 84 c4 00 00 00    	je     0x4090c4
409000:	ff 37                	push   (%edi)
409002:	ff 15 98 a0 44 00    	call   *0x44a098
409008:	8b d8                	mov    %eax,%ebx
40900a:	83 fb ff             	cmp    $0xffffffff,%ebx
40900d:	0f 85 9f 00 00 00    	jne    0x4090b2
409013:	ff 15 80 a0 44 00    	call   *0x44a080
409019:	a3 a8 67 43 00       	mov    %eax,0x4367a8
40901e:	83 fb ff             	cmp    $0xffffffff,%ebx
409021:	0f 85 92 00 00 00    	jne    0x4090b9
409027:	33 db                	xor    %ebx,%ebx
409029:	43                   	inc    %ebx
40902a:	33 c0                	xor    %eax,%eax
40902c:	8b f0                	mov    %eax,%esi
40902e:	8b 07                	mov    (%edi),%eax
409030:	8b d0                	mov    %eax,%edx
409032:	0f b7 0a             	movzwl (%edx),%ecx
409035:	66 85 c9             	test   %cx,%cx
409038:	74 1b                	je     0x409055
40903a:	66 3b 4d f4          	cmp    -0xc(%ebp),%cx
40903e:	74 11                	je     0x409051
409040:	66 3b 4d ec          	cmp    -0x14(%ebp),%cx
409044:	74 06                	je     0x40904c
409046:	83 c2 02             	add    $0x2,%edx
409049:	43                   	inc    %ebx
40904a:	eb e6                	jmp    0x409032
40904c:	83 fb 02             	cmp    $0x2,%ebx
40904f:	75 f5                	jne    0x409046
409051:	8b f2                	mov    %edx,%esi
409053:	eb f1                	jmp    0x409046
409055:	89 77 0c             	mov    %esi,0xc(%edi)
409058:	85 f6                	test   %esi,%esi
40905a:	0f 84 7f 28 01 00    	je     0x41b8df
409060:	33 c0                	xor    %eax,%eax
409062:	66 39 06             	cmp    %ax,(%esi)
409065:	0f 84 6d 28 01 00    	je     0x41b8d8
40906b:	8d 46 02             	lea    0x2(%esi),%eax
40906e:	6a 2a                	push   $0x2a
409070:	5a                   	pop    %edx
409071:	8b ce                	mov    %esi,%ecx
409073:	89 47 10             	mov    %eax,0x10(%edi)
409076:	e8 b4 15 00 00       	call   0x40a62f
40907b:	85 c0                	test   %eax,%eax
40907d:	74 23                	je     0x4090a2
40907f:	83 4f 1c 08          	orl    $0x8,0x1c(%edi)
409083:	c7 05 60 67 43 00 01 	movl   $0x1,0x436760
40908a:	00 00 00
40908d:	6a 2e                	push   $0x2e
40908f:	5a                   	pop    %edx
409090:	8b ce                	mov    %esi,%ecx
409092:	e8 98 15 00 00       	call   0x40a62f
409097:	89 47 14             	mov    %eax,0x14(%edi)
40909a:	33 c0                	xor    %eax,%eax
40909c:	5f                   	pop    %edi
40909d:	5e                   	pop    %esi
40909e:	40                   	inc    %eax
40909f:	5b                   	pop    %ebx
4090a0:	c9                   	leave
4090a1:	c3                   	ret
4090a2:	6a 3f                	push   $0x3f
4090a4:	5a                   	pop    %edx
4090a5:	8b ce                	mov    %esi,%ecx
4090a7:	e8 83 15 00 00       	call   0x40a62f
4090ac:	85 c0                	test   %eax,%eax
4090ae:	74 dd                	je     0x40908d
4090b0:	eb cd                	jmp    0x40907f
4090b2:	33 c0                	xor    %eax,%eax
4090b4:	e9 60 ff ff ff       	jmp    0x409019
4090b9:	f6 c3 10             	test   $0x10,%bl
4090bc:	0f 84 65 ff ff ff    	je     0x409027
4090c2:	eb 2c                	jmp    0x4090f0
4090c4:	83 3d 70 67 43 00 01 	cmpl   $0x1,0x436770
4090cb:	0f 84 2f ff ff ff    	je     0x409000
4090d1:	83 3d d4 e0 42 00 01 	cmpl   $0x1,0x42e0d4
4090d8:	0f 85 49 ff ff ff    	jne    0x409027
4090de:	89 1d d4 e0 42 00    	mov    %ebx,0x42e0d4
4090e4:	e9 17 ff ff ff       	jmp    0x409000
4090e9:	c7 45 f8 6e 20 40 00 	movl   $0x40206e,-0x8(%ebp)
4090f0:	8b 37                	mov    (%edi),%esi
4090f2:	8b ce                	mov    %esi,%ecx
4090f4:	6a 5c                	push   $0x5c
4090f6:	58                   	pop    %eax
4090f7:	8b d0                	mov    %eax,%edx
4090f9:	e8 f7 70 00 00       	call   0x4101f5
4090fe:	85 c0                	test   %eax,%eax
409100:	0f 84 a1 27 01 00    	je     0x41b8a7
409106:	8b 75 f0             	mov    -0x10(%ebp),%esi
409109:	8b 1f                	mov    (%edi),%ebx
40910b:	83 c6 05             	add    $0x5,%esi
40910e:	8d 0c 36             	lea    (%esi,%esi,1),%ecx
409111:	e8 ba 4b 00 00       	call   0x40dcd0
409116:	85 c0                	test   %eax,%eax
409118:	0f 84 c8 27 01 00    	je     0x41b8e6
40911e:	53                   	push   %ebx
40911f:	8b d6                	mov    %esi,%edx
409121:	89 07                	mov    %eax,(%edi)
409123:	8b c8                	mov    %eax,%ecx
409125:	e8 76 62 00 00       	call   0x40f3a0
40912a:	ff 75 f8             	push   -0x8(%ebp)
40912d:	8b 0f                	mov    (%edi),%ecx
40912f:	8b d6                	mov    %esi,%edx
409131:	e8 0a 6b 00 00       	call   0x40fc40
409136:	8b 47 18             	mov    0x18(%edi),%eax
409139:	c7 00 10 00 00 00    	movl   $0x10,(%eax)
40913f:	e9 e3 fe ff ff       	jmp    0x409027
409144:	8b ff                	mov    %edi,%edi
409146:	55                   	push   %ebp
409147:	8b ec                	mov    %esp,%ebp
409149:	83 ec 2c             	sub    $0x2c,%esp
40914c:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
409151:	33 c5                	xor    %ebp,%eax
409153:	89 45 fc             	mov    %eax,-0x4(%ebp)
409156:	53                   	push   %ebx
409157:	56                   	push   %esi
409158:	57                   	push   %edi
409159:	6a 2f                	push   $0x2f
40915b:	58                   	pop    %eax
40915c:	66 89 45 e8          	mov    %ax,-0x18(%ebp)
409160:	8b f2                	mov    %edx,%esi
409162:	33 c0                	xor    %eax,%eax
409164:	8d 55 e8             	lea    -0x18(%ebp),%edx
409167:	6a 02                	push   $0x2
409169:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
40916d:	e8 be 2a 00 00       	call   0x40bc30
409172:	33 c9                	xor    %ecx,%ecx
409174:	8d 5e 4c             	lea    0x4c(%esi),%ebx
409177:	8b f8                	mov    %eax,%edi
409179:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40917c:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40917f:	39 4e 48             	cmp    %ecx,0x48(%esi)
409182:	0f 85 71 27 01 00    	jne    0x41b8f9
409188:	89 4e 0c             	mov    %ecx,0xc(%esi)
40918b:	0f b7 07             	movzwl (%edi),%eax
40918e:	66 85 c0             	test   %ax,%ax
409191:	0f 84 d8 00 00 00    	je     0x40926f
409197:	6a 2d                	push   $0x2d
409199:	5a                   	pop    %edx
40919a:	6a 2f                	push   $0x2f
40919c:	59                   	pop    %ecx
40919d:	66 3b c1             	cmp    %cx,%ax
4091a0:	0f 85 a4 00 00 00    	jne    0x40924a
4091a6:	8d 47 04             	lea    0x4(%edi),%eax
4091a9:	89 45 d8             	mov    %eax,-0x28(%ebp)
4091ac:	0f b7 00             	movzwl (%eax),%eax
4091af:	8b c8                	mov    %eax,%ecx
4091b1:	89 4d e0             	mov    %ecx,-0x20(%ebp)
4091b4:	33 c9                	xor    %ecx,%ecx
4091b6:	66 3b c2             	cmp    %dx,%ax
4091b9:	0f 94 c1             	sete   %cl
4091bc:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
4091bf:	83 c1 02             	add    $0x2,%ecx
4091c2:	8d 1c 4f             	lea    (%edi,%ecx,2),%ebx
4091c5:	0f b7 03             	movzwl (%ebx),%eax
4091c8:	50                   	push   %eax
4091c9:	ff 15 18 a4 44 00    	call   *0x44a418
4091cf:	0f b7 c0             	movzwl %ax,%eax
4091d2:	59                   	pop    %ecx
4091d3:	83 f8 4f             	cmp    $0x4f,%eax
4091d6:	0f 87 a4 00 00 00    	ja     0x409280
4091dc:	6a 2d                	push   $0x2d
4091de:	0f 84 e3 00 00 00    	je     0x4092c7
4091e4:	83 f8 43             	cmp    $0x43,%eax
4091e7:	0f 87 bb 27 01 00    	ja     0x41b9a8
4091ed:	0f 84 97 27 01 00    	je     0x41b98a
4091f3:	5a                   	pop    %edx
4091f4:	2b c2                	sub    %edx,%eax
4091f6:	0f 84 5a 29 01 00    	je     0x41bb56
4091fc:	83 e8 07             	sub    $0x7,%eax
4091ff:	0f 84 67 27 01 00    	je     0x41b96c
409205:	83 e8 0d             	sub    $0xd,%eax
409208:	0f 84 15 27 01 00    	je     0x41b923
40920e:	83 e8 01             	sub    $0x1,%eax
409211:	0f 85 5e 29 01 00    	jne    0x41bb75
409217:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40921a:	66 3b ca             	cmp    %dx,%cx
40921d:	0f 84 f8 26 01 00    	je     0x41b91b
409223:	83 0e 40             	orl    $0x40,(%esi)
409226:	8b 45 e4             	mov    -0x1c(%ebp),%eax
409229:	33 d2                	xor    %edx,%edx
40922b:	66 39 54 47 06       	cmp    %dx,0x6(%edi,%eax,2)
409230:	0f 85 34 28 01 00    	jne    0x41ba6a
409236:	8b 7d d8             	mov    -0x28(%ebp),%edi
409239:	8b 5d dc             	mov    -0x24(%ebp),%ebx
40923c:	8b cf                	mov    %edi,%ecx
40923e:	e8 92 15 00 00       	call   0x40a7d5
409243:	8b f8                	mov    %eax,%edi
409245:	e9 41 ff ff ff       	jmp    0x40918b
40924a:	8b 46 48             	mov    0x48(%esi),%eax
40924d:	85 c0                	test   %eax,%eax
40924f:	0f 85 e0 28 01 00    	jne    0x41bb35
409255:	40                   	inc    %eax
409256:	8b cf                	mov    %edi,%ecx
409258:	89 46 48             	mov    %eax,0x48(%esi)
40925b:	e8 00 6e 00 00       	call   0x410060
409260:	8b c8                	mov    %eax,%ecx
409262:	e8 e4 72 00 00       	call   0x41054b
409267:	89 03                	mov    %eax,(%ebx)
409269:	c6 43 08 01          	movb   $0x1,0x8(%ebx)
40926d:	eb cd                	jmp    0x40923c
40926f:	33 c0                	xor    %eax,%eax
409271:	8b 4d fc             	mov    -0x4(%ebp),%ecx
409274:	5f                   	pop    %edi
409275:	5e                   	pop    %esi
409276:	33 cd                	xor    %ebp,%ecx
409278:	5b                   	pop    %ebx
409279:	e8 b2 d8 00 00       	call   0x416b30
40927e:	c9                   	leave
40927f:	c3                   	ret
409280:	83 e8 50             	sub    $0x50,%eax
409283:	0f 84 91 28 01 00    	je     0x41bb1a
409289:	83 e8 01             	sub    $0x1,%eax
40928c:	0f 84 67 28 01 00    	je     0x41baf9
409292:	83 e8 01             	sub    $0x1,%eax
409295:	0f 84 3d 28 01 00    	je     0x41bad8
40929b:	83 e8 01             	sub    $0x1,%eax
40929e:	0f 85 9a 27 01 00    	jne    0x41ba3e
4092a4:	8b 4d e0             	mov    -0x20(%ebp),%ecx
4092a7:	6a 2d                	push   $0x2d
4092a9:	5b                   	pop    %ebx
4092aa:	66 3b cb             	cmp    %bx,%cx
4092ad:	74 5c                	je     0x40930b
4092af:	83 0e 10             	orl    $0x10,(%esi)
4092b2:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4092b5:	33 d2                	xor    %edx,%edx
4092b7:	66 39 54 47 06       	cmp    %dx,0x6(%edi,%eax,2)
4092bc:	0f 84 74 ff ff ff    	je     0x409236
4092c2:	e9 a6 27 01 00       	jmp    0x41ba6d
4092c7:	8b 45 e0             	mov    -0x20(%ebp),%eax
4092ca:	8b 0e                	mov    (%esi),%ecx
4092cc:	5a                   	pop    %edx
4092cd:	66 3b c2             	cmp    %dx,%ax
4092d0:	74 31                	je     0x409303
4092d2:	81 c9 00 40 00 00    	or     $0x4000,%ecx
4092d8:	89 0e                	mov    %ecx,(%esi)
4092da:	66 3b c2             	cmp    %dx,%ax
4092dd:	0f 84 33 27 01 00    	je     0x41ba16
4092e3:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4092e6:	8b d6                	mov    %esi,%edx
4092e8:	83 c0 03             	add    $0x3,%eax
4092eb:	8d 0c 47             	lea    (%edi,%eax,2),%ecx
4092ee:	e8 ac d3 00 00       	call   0x41669f
4092f3:	85 c0                	test   %eax,%eax
4092f5:	0f 84 3b ff ff ff    	je     0x409236
4092fb:	33 c0                	xor    %eax,%eax
4092fd:	40                   	inc    %eax
4092fe:	e9 6e ff ff ff       	jmp    0x409271
409303:	81 f1 00 40 00 00    	xor    $0x4000,%ecx
409309:	eb cd                	jmp    0x4092d8
40930b:	83 36 10             	xorl   $0x10,(%esi)
40930e:	eb a2                	jmp    0x4092b2
409310:	8b ff                	mov    %edi,%edi
409312:	55                   	push   %ebp
409313:	8b ec                	mov    %esp,%ebp
409315:	81 ec 7c 01 00 00    	sub    $0x17c,%esp
40931b:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
409320:	33 c5                	xor    %ebp,%eax
409322:	89 45 fc             	mov    %eax,-0x4(%ebp)
409325:	53                   	push   %ebx
409326:	56                   	push   %esi
409327:	8b 75 08             	mov    0x8(%ebp),%esi
40932a:	89 b5 98 fe ff ff    	mov    %esi,-0x168(%ebp)
409330:	57                   	push   %edi
409331:	8b fa                	mov    %edx,%edi
409333:	85 c9                	test   %ecx,%ecx
409335:	0f 85 81 28 01 00    	jne    0x41bbbc
40933b:	8d 85 a8 fe ff ff    	lea    -0x158(%ebp),%eax
409341:	50                   	push   %eax
409342:	ff 15 c4 a2 44 00    	call   *0x44a2c4
409348:	8d 85 90 fe ff ff    	lea    -0x170(%ebp),%eax
40934e:	50                   	push   %eax
40934f:	8d 85 a8 fe ff ff    	lea    -0x158(%ebp),%eax
409355:	50                   	push   %eax
409356:	ff 15 f0 a2 44 00    	call   *0x44a2f0
40935c:	8d 85 88 fe ff ff    	lea    -0x178(%ebp),%eax
409362:	50                   	push   %eax
409363:	8d 85 90 fe ff ff    	lea    -0x170(%ebp),%eax
409369:	50                   	push   %eax
40936a:	ff 15 c0 a0 44 00    	call   *0x44a0c0
409370:	8d 85 a8 fe ff ff    	lea    -0x158(%ebp),%eax
409376:	50                   	push   %eax
409377:	8d 85 88 fe ff ff    	lea    -0x178(%ebp),%eax
40937d:	50                   	push   %eax
40937e:	ff 15 ec a2 44 00    	call   *0x44a2ec
409384:	83 ff 01             	cmp    $0x1,%edi
409387:	0f 85 4c 28 01 00    	jne    0x41bbd9
40938d:	0f b7 85 b6 fe ff ff 	movzwl -0x14a(%ebp),%eax
409394:	33 d2                	xor    %edx,%edx
409396:	6a 0a                	push   $0xa