405f5a:	0f 84 b9 3d 01 00    	je     0x419d19
405f60:	8b cf                	mov    %edi,%ecx
405f62:	e8 6e 48 00 00       	call   0x40a7d5
405f67:	0f b7 00             	movzwl (%eax),%eax
405f6a:	8b c8                	mov    %eax,%ecx
405f6c:	89 4c 24 20          	mov    %ecx,0x20(%esp)
405f70:	33 c9                	xor    %ecx,%ecx
405f72:	66 85 c0             	test   %ax,%ax
405f75:	0f 95 c1             	setne  %cl
405f78:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
405f7c:	83 3d 9c 25 43 00 00 	cmpl   $0x0,0x43259c
405f83:	0f 85 ac 3e 01 00    	jne    0x419e35
405f89:	8b cf                	mov    %edi,%ecx
405f8b:	e8 d0 a0 00 00       	call   0x410060
405f90:	8b c8                	mov    %eax,%ecx
405f92:	e8 19 4d 00 00       	call   0x40acb0
405f97:	8b f0                	mov    %eax,%esi
405f99:	85 f6                	test   %esi,%esi
405f9b:	0f 84 88 3e 01 00    	je     0x419e29
405fa1:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
405fa5:	75 6f                	jne    0x406016
405fa7:	8b 44 24 1c          	mov    0x1c(%esp),%eax
405fab:	8b 4c 24 08          	mov    0x8(%esp),%ecx
405faf:	09 05 60 67 43 00    	or     %eax,0x436760
405fb5:	56                   	push   %esi
405fb6:	ff 15 c4 a4 44 00    	call   *0x44a4c4
405fbc:	ff 54 24 0c          	call   *0xc(%esp)
405fc0:	89 44 24 10          	mov    %eax,0x10(%esp)
405fc4:	85 c0                	test   %eax,%eax
405fc6:	0f 85 00 3e 01 00    	jne    0x419dcc
405fcc:	8b cf                	mov    %edi,%ecx
405fce:	e8 02 48 00 00       	call   0x40a7d5
405fd3:	8b f8                	mov    %eax,%edi
405fd5:	89 44 24 24          	mov    %eax,0x24(%esp)
405fd9:	33 c0                	xor    %eax,%eax
405fdb:	66 39 07             	cmp    %ax,(%edi)
405fde:	75 9c                	jne    0x405f7c
405fe0:	8b 74 24 0c          	mov    0xc(%esp),%esi
405fe4:	8b 8c 24 58 02 00 00 	mov    0x258(%esp),%ecx
405feb:	89 84 24 58 02 00 00 	mov    %eax,0x258(%esp)
405ff2:	85 c9                	test   %ecx,%ecx
405ff4:	74 08                	je     0x405ffe
405ff6:	51                   	push   %ecx
405ff7:	ff 15 e0 a3 44 00    	call   *0x44a3e0
405ffd:	59                   	pop    %ecx
405ffe:	8b 8c 24 bc 04 00 00 	mov    0x4bc(%esp),%ecx
406005:	8b c6                	mov    %esi,%eax
406007:	5f                   	pop    %edi
406008:	5e                   	pop    %esi
406009:	33 cc                	xor    %esp,%ecx
40600b:	e8 20 0b 01 00       	call   0x416b30
406010:	8b e5                	mov    %ebp,%esp
406012:	5d                   	pop    %ebp
406013:	c2 04 00             	ret    $0x4
406016:	33 c0                	xor    %eax,%eax
406018:	8d 4c 24 18          	lea    0x18(%esp),%ecx
40601c:	83 3d d8 e0 42 00 03 	cmpl   $0x3,0x42e0d8
406023:	51                   	push   %ecx
406024:	0f 95 c0             	setne  %al
406027:	8d 8c 24 6c 02 00 00 	lea    0x26c(%esp),%ecx
40602e:	48                   	dec    %eax
40602f:	33 d2                	xor    %edx,%edx
406031:	51                   	push   %ecx
406032:	25 ea ef ff ff       	and    $0xffffefea,%eax
406037:	89 15 a8 67 43 00    	mov    %edx,0x4367a8
40603d:	05 37 10 00 00       	add    $0x1037,%eax
406042:	b9 d0 59 41 00       	mov    $0x4159d0,%ecx
406047:	52                   	push   %edx
406048:	50                   	push   %eax
406049:	8b d6                	mov    %esi,%edx
40604b:	89 44 24 20          	mov    %eax,0x20(%esp)
40604f:	e8 46 f8 00 00       	call   0x41589a
406054:	84 c0                	test   %al,%al
406056:	0f 84 e9 3c 01 00    	je     0x419d45
40605c:	f6 84 24 68 02 00 00 	testb  $0x10,0x268(%esp)
406063:	10
406064:	0f 85 ab 3d 01 00    	jne    0x419e15
40606a:	8d 4c 24 2c          	lea    0x2c(%esp),%ecx
40606e:	89 74 24 2c          	mov    %esi,0x2c(%esp)
406072:	e8 aa 2e 00 00       	call   0x408f21
406077:	8b 44 24 3c          	mov    0x3c(%esp),%eax
40607b:	2b c6                	sub    %esi,%eax
40607d:	d1 f8                	sar    $1,%eax
40607f:	89 44 24 28          	mov    %eax,0x28(%esp)
406083:	3b 84 24 60 02 00 00 	cmp    0x260(%esp),%eax
40608a:	0f 83 85 3d 01 00    	jae    0x419e15
406090:	56                   	push   %esi
406091:	8d 4c 24 54          	lea    0x54(%esp),%ecx
406095:	e8 a7 45 00 00       	call   0x40a641
40609a:	8b 7c 24 10          	mov    0x10(%esp),%edi
40609e:	8b 8c 24 58 02 00 00 	mov    0x258(%esp),%ecx
4060a5:	85 c9                	test   %ecx,%ecx
4060a7:	0f 84 85 00 00 00    	je     0x406132
4060ad:	8b 44 24 28          	mov    0x28(%esp),%eax
4060b1:	33 d2                	xor    %edx,%edx
4060b3:	66 89 14 41          	mov    %dx,(%ecx,%eax,2)
4060b7:	8d 4c 24 50          	lea    0x50(%esp),%ecx
4060bb:	8b 44 24 1c          	mov    0x1c(%esp),%eax
4060bf:	09 05 60 67 43 00    	or     %eax,0x436760
4060c5:	8d 84 24 94 02 00 00 	lea    0x294(%esp),%eax
4060cc:	50                   	push   %eax
4060cd:	e8 5a c2 00 00       	call   0x41232c
4060d2:	8b 84 24 58 02 00 00 	mov    0x258(%esp),%eax
4060d9:	85 c0                	test   %eax,%eax
4060db:	74 5e                	je     0x40613b
4060dd:	8b 4c 24 08          	mov    0x8(%esp),%ecx
4060e1:	50                   	push   %eax
4060e2:	ff 15 c4 a4 44 00    	call   *0x44a4c4
4060e8:	ff 54 24 0c          	call   *0xc(%esp)
4060ec:	89 44 24 10          	mov    %eax,0x10(%esp)
4060f0:	85 c0                	test   %eax,%eax
4060f2:	0f 85 c2 3c 01 00    	jne    0x419dba
4060f8:	ff 74 24 18          	push   0x18(%esp)
4060fc:	8d 94 24 6c 02 00 00 	lea    0x26c(%esp),%edx
406103:	b9 d0 59 41 00       	mov    $0x4159d0,%ecx
406108:	57                   	push   %edi
406109:	e8 43 f7 00 00       	call   0x415851
40610e:	84 c0                	test   %al,%al
406110:	75 8c                	jne    0x40609e
406112:	8b 4c 24 18          	mov    0x18(%esp),%ecx
406116:	e8 32 2a 00 00       	call   0x408b4d
40611b:	8b 7c 24 24          	mov    0x24(%esp),%edi
40611f:	33 c0                	xor    %eax,%eax
406121:	40                   	inc    %eax
406122:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
406127:	0f 84 9f fe ff ff    	je     0x405fcc
40612d:	e9 ac 3c 01 00       	jmp    0x419dde
406132:	8d 4c 24 50          	lea    0x50(%esp),%ecx
406136:	e9 72 ff ff ff       	jmp    0x4060ad
40613b:	8d 44 24 50          	lea    0x50(%esp),%eax
40613f:	eb 9c                	jmp    0x4060dd
406141:	cc                   	int3
406142:	cc                   	int3
406143:	cc                   	int3
406144:	cc                   	int3
406145:	cc                   	int3
406146:	cc                   	int3
406147:	cc                   	int3
406148:	cc                   	int3
406149:	cc                   	int3
40614a:	cc                   	int3
40614b:	cc                   	int3
40614c:	cc                   	int3
40614d:	cc                   	int3
40614e:	cc                   	int3
40614f:	cc                   	int3
406150:	8b ff                	mov    %edi,%edi
406152:	53                   	push   %ebx
406153:	8b dc                	mov    %esp,%ebx
406155:	51                   	push   %ecx
406156:	51                   	push   %ecx
406157:	83 e4 f8             	and    $0xfffffff8,%esp
40615a:	83 c4 04             	add    $0x4,%esp
40615d:	55                   	push   %ebp
40615e:	8b 6b 04             	mov    0x4(%ebx),%ebp
406161:	89 6c 24 04          	mov    %ebp,0x4(%esp)
406165:	8b ec                	mov    %esp,%ebp
406167:	6a fe                	push   $0xfffffffe
406169:	68 90 c9 42 00       	push   $0x42c990
40616e:	68 00 6e 41 00       	push   $0x416e00
406173:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
406179:	50                   	push   %eax
40617a:	51                   	push   %ecx
40617b:	51                   	push   %ecx
40617c:	53                   	push   %ebx
40617d:	83 ec 48             	sub    $0x48,%esp
406180:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
406185:	31 45 f8             	xor    %eax,-0x8(%ebp)
406188:	33 c5                	xor    %ebp,%eax
40618a:	89 45 dc             	mov    %eax,-0x24(%ebp)
40618d:	56                   	push   %esi
40618e:	57                   	push   %edi
40618f:	50                   	push   %eax
406190:	8d 45 f0             	lea    -0x10(%ebp),%eax
406193:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
406199:	89 65 e8             	mov    %esp,-0x18(%ebp)
40619c:	8b 4b 08             	mov    0x8(%ebx),%ecx
40619f:	33 c0                	xor    %eax,%eax
4061a1:	38 05 55 67 43 00    	cmp    %al,0x436755
4061a7:	0f 95 c0             	setne  %al
4061aa:	50                   	push   %eax
4061ab:	33 d2                	xor    %edx,%edx
4061ad:	8b 49 3c             	mov    0x3c(%ecx),%ecx
4061b0:	e8 7b 5a 00 00       	call   0x40bc30
4061b5:	8b f0                	mov    %eax,%esi
4061b7:	89 75 cc             	mov    %esi,-0x34(%ebp)
4061ba:	89 75 c8             	mov    %esi,-0x38(%ebp)
4061bd:	33 ff                	xor    %edi,%edi
4061bf:	80 3d 55 67 43 00 00 	cmpb   $0x0,0x436755
4061c6:	74 2b                	je     0x4061f3
4061c8:	8b ce                	mov    %esi,%ecx
4061ca:	66 39 3e             	cmp    %di,(%esi)
4061cd:	eb 08                	jmp    0x4061d7
4061cf:	8b c1                	mov    %ecx,%eax
4061d1:	83 c1 02             	add    $0x2,%ecx
4061d4:	66 39 39             	cmp    %di,(%ecx)
4061d7:	89 45 d0             	mov    %eax,-0x30(%ebp)
4061da:	75 f3                	jne    0x4061cf
4061dc:	3b c6                	cmp    %esi,%eax
4061de:	76 13                	jbe    0x4061f3
4061e0:	0f b7 00             	movzwl (%eax),%eax
4061e3:	50                   	push   %eax
4061e4:	ff 15 ac a3 44 00    	call   *0x44a3ac
4061ea:	59                   	pop    %ecx
4061eb:	85 c0                	test   %eax,%eax
4061ed:	0f 85 56 3c 01 00    	jne    0x419e49
4061f3:	8b ce                	mov    %esi,%ecx
4061f5:	8d 51 02             	lea    0x2(%ecx),%edx
4061f8:	66 8b 01             	mov    (%ecx),%ax
4061fb:	83 c1 02             	add    $0x2,%ecx
4061fe:	66 3b c7             	cmp    %di,%ax
406201:	75 f5                	jne    0x4061f8
406203:	2b ca                	sub    %edx,%ecx
406205:	d1 f9                	sar    $1,%ecx
406207:	89 4d d0             	mov    %ecx,-0x30(%ebp)
40620a:	8b ce                	mov    %esi,%ecx
40620c:	e8 4f 9e 00 00       	call   0x410060
406211:	50                   	push   %eax
406212:	8b 55 d0             	mov    -0x30(%ebp),%edx
406215:	42                   	inc    %edx
406216:	8b ce                	mov    %esi,%ecx
406218:	e8 83 91 00 00       	call   0x40f3a0
40621d:	89 3d dc 65 43 00    	mov    %edi,0x4365dc
406223:	66 39 3e             	cmp    %di,(%esi)
406226:	0f 84 30 3c 01 00    	je     0x419e5c
40622c:	e8 97 00 00 00       	call   0x4062c8
406231:	84 c0                	test   %al,%al
406233:	0f 84 ea 3d 01 00    	je     0x41a023
406239:	80 3d 55 67 43 00 00 	cmpb   $0x0,0x436755
406240:	74 0c                	je     0x40624e
406242:	6a 5c                	push   $0x5c
406244:	5a                   	pop    %edx
406245:	66 39 16             	cmp    %dx,(%esi)
406248:	0f 84 18 3c 01 00    	je     0x419e66
40624e:	83 3d dc 65 43 00 00 	cmpl   $0x0,0x4365dc
406255:	0f 85 ab 3d 01 00    	jne    0x41a006
40625b:	33 d2                	xor    %edx,%edx
40625d:	8b ce                	mov    %esi,%ecx
40625f:	e8 63 29 00 00       	call   0x408bc7
406264:	a3 dc 65 43 00       	mov    %eax,0x4365dc
406269:	85 c0                	test   %eax,%eax
40626b:	75 22                	jne    0x40628f
40626d:	6a 3a                	push   $0x3a
40626f:	58                   	pop    %eax
406270:	66 39 46 02          	cmp    %ax,0x2(%esi)
406274:	75 19                	jne    0x40628f
406276:	8b 0d f8 8d 44 00    	mov    0x448df8,%ecx
40627c:	85 c9                	test   %ecx,%ecx
40627e:	74 41                	je     0x4062c1
406280:	0f b7 06             	movzwl (%esi),%eax
406283:	50                   	push   %eax
406284:	8b 15 00 8e 44 00    	mov    0x448e00,%edx
40628a:	e8 0f 2c 00 00       	call   0x408e9e
40628f:	83 3d dc 65 43 00 00 	cmpl   $0x0,0x4365dc
406296:	0f 85 6a 3d 01 00    	jne    0x41a006
40629c:	a1 dc 65 43 00       	mov    0x4365dc,%eax
4062a1:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4062a4:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4062ab:	59                   	pop    %ecx
4062ac:	5f                   	pop    %edi
4062ad:	5e                   	pop    %esi
4062ae:	8b 4d dc             	mov    -0x24(%ebp),%ecx
4062b1:	33 cd                	xor    %ebp,%ecx
4062b3:	e8 78 08 01 00       	call   0x416b30
4062b8:	8b e5                	mov    %ebp,%esp
4062ba:	5d                   	pop    %ebp
4062bb:	8b e3                	mov    %ebx,%esp
4062bd:	5b                   	pop    %ebx
4062be:	c2 04 00             	ret    $0x4
4062c1:	b9 f0 8b 44 00       	mov    $0x448bf0,%ecx
4062c6:	eb b8                	jmp    0x406280
4062c8:	8b ff                	mov    %edi,%edi
4062ca:	56                   	push   %esi
4062cb:	8b 35 f8 8d 44 00    	mov    0x448df8,%esi
4062d1:	8b ce                	mov    %esi,%ecx
4062d3:	57                   	push   %edi
4062d4:	85 f6                	test   %esi,%esi
4062d6:	0f 84 63 3d 01 00    	je     0x41a03f
4062dc:	8d 51 02             	lea    0x2(%ecx),%edx
4062df:	33 ff                	xor    %edi,%edi
4062e1:	66 8b 01             	mov    (%ecx),%ax
4062e4:	83 c1 02             	add    $0x2,%ecx
4062e7:	66 3b c7             	cmp    %di,%ax
4062ea:	75 f5                	jne    0x4062e1
4062ec:	2b ca                	sub    %edx,%ecx
4062ee:	d1 f9                	sar    $1,%ecx
4062f0:	8d 79 01             	lea    0x1(%ecx),%edi
4062f3:	85 f6                	test   %esi,%esi
4062f5:	74 50                	je     0x406347
4062f7:	8b 15 00 8e 44 00    	mov    0x448e00,%edx
4062fd:	8b ce                	mov    %esi,%ecx
4062ff:	6a 00                	push   $0x0
406301:	e8 98 2b 00 00       	call   0x408e9e
406306:	8d 04 3f             	lea    (%edi,%edi,1),%eax
406309:	50                   	push   %eax
40630a:	6a 00                	push   $0x0
40630c:	ff 15 34 a1 44 00    	call   *0x44a134
406312:	50                   	push   %eax
406313:	ff 15 28 a1 44 00    	call   *0x44a128
406319:	8b f0                	mov    %eax,%esi
40631b:	85 f6                	test   %esi,%esi
40631d:	74 36                	je     0x406355
40631f:	8b 0d f8 8d 44 00    	mov    0x448df8,%ecx
406325:	85 c9                	test   %ecx,%ecx
406327:	74 25                	je     0x40634e
406329:	51                   	push   %ecx
40632a:	8b d7                	mov    %edi,%edx
40632c:	8b ce                	mov    %esi,%ecx
40632e:	e8 6d 90 00 00       	call   0x40f3a0
406333:	8b ce                	mov    %esi,%ecx
406335:	e8 1f 00 00 00       	call   0x406359
40633a:	85 c0                	test   %eax,%eax
40633c:	0f 84 07 3d 01 00    	je     0x41a049
406342:	b0 01                	mov    $0x1,%al
406344:	5f                   	pop    %edi
406345:	5e                   	pop    %esi
406346:	c3                   	ret
406347:	be f0 8b 44 00       	mov    $0x448bf0,%esi
40634c:	eb a9                	jmp    0x4062f7
40634e:	b9 f0 8b 44 00       	mov    $0x448bf0,%ecx
406353:	eb d4                	jmp    0x406329
406355:	32 c0                	xor    %al,%al
406357:	eb eb                	jmp    0x406344
406359:	a1 94 67 43 00       	mov    0x436794,%eax
40635e:	53                   	push   %ebx
40635f:	56                   	push   %esi
406360:	8b 35 98 67 43 00    	mov    0x436798,%esi
406366:	8b d9                	mov    %ecx,%ebx
406368:	57                   	push   %edi
406369:	3b f0                	cmp    %eax,%esi
40636b:	74 1d                	je     0x40638a
40636d:	a1 9c 67 43 00       	mov    0x43679c,%eax
406372:	89 1c f0             	mov    %ebx,(%eax,%esi,8)
406375:	33 c9                	xor    %ecx,%ecx
406377:	66 89 4c f0 04       	mov    %cx,0x4(%eax,%esi,8)
40637c:	46                   	inc    %esi
40637d:	33 c0                	xor    %eax,%eax
40637f:	89 35 98 67 43 00    	mov    %esi,0x436798
406385:	40                   	inc    %eax
406386:	5f                   	pop    %edi
406387:	5e                   	pop    %esi
406388:	5b                   	pop    %ebx
406389:	c3                   	ret
40638a:	3d e6 ff ff 7f       	cmp    $0x7fffffe6,%eax
40638f:	7f 28                	jg     0x4063b9
406391:	8d 78 19             	lea    0x19(%eax),%edi
406394:	8b c7                	mov    %edi,%eax
406396:	c1 e0 03             	shl    $0x3,%eax
406399:	50                   	push   %eax
40639a:	ff 35 9c 67 43 00    	push   0x43679c