406045:	8b cf                	mov    %edi,%ecx
406047:	e8 e6 fb ff ff       	call   0x405c32
40604c:	8b 55 fc             	mov    -0x4(%ebp),%edx
40604f:	8b 37                	mov    (%edi),%esi
406051:	8b 4f 04             	mov    0x4(%edi),%ecx
406054:	8d 46 04             	lea    0x4(%esi),%eax
406057:	f7 de                	neg    %esi
406059:	1b f6                	sbb    %esi,%esi
40605b:	23 f0                	and    %eax,%esi
40605d:	8b fe                	mov    %esi,%edi
40605f:	f7 df                	neg    %edi
406061:	1b ff                	sbb    %edi,%edi
406063:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
406066:	23 f8                	and    %eax,%edi
406068:	85 f6                	test   %esi,%esi
40606a:	0f 84 b1 00 00 00    	je     0x406121
406070:	8d 42 0c             	lea    0xc(%edx),%eax
406073:	8b ce                	mov    %esi,%ecx
406075:	50                   	push   %eax
406076:	ff 73 0c             	push   0xc(%ebx)
406079:	8b d7                	mov    %edi,%edx
40607b:	e8 5c 18 00 00       	call   0x4078dc
406080:	8b 75 fc             	mov    -0x4(%ebp),%esi
406083:	8b d7                	mov    %edi,%edx
406085:	8d 4e 14             	lea    0x14(%esi),%ecx
406088:	51                   	push   %ecx
406089:	ff 73 14             	push   0x14(%ebx)
40608c:	8b c8                	mov    %eax,%ecx
40608e:	e8 b3 18 00 00       	call   0x407946
406093:	8d 4e 18             	lea    0x18(%esi),%ecx
406096:	8b d7                	mov    %edi,%edx
406098:	51                   	push   %ecx
406099:	ff 73 18             	push   0x18(%ebx)
40609c:	8b c8                	mov    %eax,%ecx
40609e:	e8 a3 18 00 00       	call   0x407946
4060a3:	8d 4e 1c             	lea    0x1c(%esi),%ecx
4060a6:	8b d7                	mov    %edi,%edx
4060a8:	51                   	push   %ecx
4060a9:	ff 73 1c             	push   0x1c(%ebx)
4060ac:	8b c8                	mov    %eax,%ecx
4060ae:	e8 93 18 00 00       	call   0x407946
4060b3:	8d 4e 28             	lea    0x28(%esi),%ecx
4060b6:	8b d7                	mov    %edi,%edx
4060b8:	51                   	push   %ecx
4060b9:	ff 73 28             	push   0x28(%ebx)
4060bc:	8b c8                	mov    %eax,%ecx
4060be:	e8 83 18 00 00       	call   0x407946
4060c3:	8d 4e 44             	lea    0x44(%esi),%ecx
4060c6:	8b d7                	mov    %edi,%edx
4060c8:	51                   	push   %ecx
4060c9:	ff 73 44             	push   0x44(%ebx)
4060cc:	8b c8                	mov    %eax,%ecx
4060ce:	e8 73 18 00 00       	call   0x407946
4060d3:	8d 4e 3c             	lea    0x3c(%esi),%ecx
4060d6:	8b d7                	mov    %edi,%edx
4060d8:	51                   	push   %ecx
4060d9:	ff 73 3c             	push   0x3c(%ebx)
4060dc:	8b c8                	mov    %eax,%ecx
4060de:	e8 63 18 00 00       	call   0x407946
4060e3:	8d 4e 40             	lea    0x40(%esi),%ecx
4060e6:	8b d7                	mov    %edi,%edx
4060e8:	51                   	push   %ecx
4060e9:	ff 73 40             	push   0x40(%ebx)
4060ec:	8b c8                	mov    %eax,%ecx
4060ee:	e8 e9 17 00 00       	call   0x4078dc
4060f3:	8d 4e 30             	lea    0x30(%esi),%ecx
4060f6:	8b d7                	mov    %edi,%edx
4060f8:	51                   	push   %ecx
4060f9:	ff 73 30             	push   0x30(%ebx)
4060fc:	8b c8                	mov    %eax,%ecx
4060fe:	e8 43 18 00 00       	call   0x407946
406103:	8d 4e 34             	lea    0x34(%esi),%ecx
406106:	8b d7                	mov    %edi,%edx
406108:	51                   	push   %ecx
406109:	ff 73 34             	push   0x34(%ebx)
40610c:	8b c8                	mov    %eax,%ecx
40610e:	e8 c9 17 00 00       	call   0x4078dc
406113:	2b f8                	sub    %eax,%edi
406115:	57                   	push   %edi
406116:	6a 00                	push   $0x0
406118:	50                   	push   %eax
406119:	e8 43 e0 00 00       	call   0x414161
40611e:	83 c4 0c             	add    $0xc,%esp
406121:	5f                   	pop    %edi
406122:	5e                   	pop    %esi
406123:	5b                   	pop    %ebx
406124:	c9                   	leave
406125:	c2 04 00             	ret    $0x4
406128:	8b ff                	mov    %edi,%edi
40612a:	55                   	push   %ebp
40612b:	8b ec                	mov    %esp,%ebp
40612d:	56                   	push   %esi
40612e:	57                   	push   %edi
40612f:	8b f1                	mov    %ecx,%esi
406131:	ff 15 d8 b2 41 00    	call   *0x41b2d8
406137:	ff 75 08             	push   0x8(%ebp)
40613a:	8d 4e 0c             	lea    0xc(%esi),%ecx
40613d:	c7 06 4c 15 40 00    	movl   $0x40154c,(%esi)
406143:	33 ff                	xor    %edi,%edi
406145:	89 79 50             	mov    %edi,0x50(%ecx)
406148:	89 79 54             	mov    %edi,0x54(%ecx)
40614b:	e8 57 fe ff ff       	call   0x405fa7
406150:	89 7e 64             	mov    %edi,0x64(%esi)
406153:	8b c6                	mov    %esi,%eax
406155:	89 7e 68             	mov    %edi,0x68(%esi)
406158:	5f                   	pop    %edi
406159:	5e                   	pop    %esi
40615a:	5d                   	pop    %ebp
40615b:	c2 04 00             	ret    $0x4
40615e:	cc                   	int3
40615f:	cc                   	int3
406160:	8b ff                	mov    %edi,%edi
406162:	55                   	push   %ebp
406163:	8b ec                	mov    %esp,%ebp
406165:	b8 04 14 00 00       	mov    $0x1404,%eax
40616a:	e8 c1 df 00 00       	call   0x414130
40616f:	a1 18 51 41 00       	mov    0x415118,%eax
406174:	33 c5                	xor    %ebp,%eax
406176:	89 45 fc             	mov    %eax,-0x4(%ebp)
406179:	56                   	push   %esi
40617a:	8d 71 64             	lea    0x64(%ecx),%esi
40617d:	8b 06                	mov    (%esi),%eax
40617f:	85 c0                	test   %eax,%eax
406181:	75 5a                	jne    0x4061dd
406183:	8d 41 0c             	lea    0xc(%ecx),%eax
406186:	ba 00 08 00 00       	mov    $0x800,%edx
40618b:	50                   	push   %eax
40618c:	8d 8d fc eb ff ff    	lea    -0x1404(%ebp),%ecx
406192:	e8 ff f7 ff ff       	call   0x405996
406197:	8d 85 fc eb ff ff    	lea    -0x1404(%ebp),%eax
40619d:	50                   	push   %eax
40619e:	68 c4 26 40 00       	push   $0x4026c4
4061a3:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
4061a9:	68 00 04 00 00       	push   $0x400
4061ae:	50                   	push   %eax
4061af:	e8 22 fd ff ff       	call   0x405ed6
4061b4:	8d 8d fc fb ff ff    	lea    -0x404(%ebp),%ecx
4061ba:	83 c4 10             	add    $0x10,%esp
4061bd:	8d 51 01             	lea    0x1(%ecx),%edx
4061c0:	8a 01                	mov    (%ecx),%al
4061c2:	41                   	inc    %ecx
4061c3:	84 c0                	test   %al,%al
4061c5:	75 f9                	jne    0x4061c0
4061c7:	2b ca                	sub    %edx,%ecx
4061c9:	8d 41 01             	lea    0x1(%ecx),%eax
4061cc:	8b ce                	mov    %esi,%ecx
4061ce:	50                   	push   %eax
4061cf:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
4061d5:	50                   	push   %eax
4061d6:	e8 57 fa ff ff       	call   0x405c32
4061db:	8b 06                	mov    (%esi),%eax
4061dd:	8d 48 04             	lea    0x4(%eax),%ecx
4061e0:	f7 d8                	neg    %eax
4061e2:	5e                   	pop    %esi
4061e3:	1b c0                	sbb    %eax,%eax
4061e5:	23 c1                	and    %ecx,%eax
4061e7:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4061ea:	33 cd                	xor    %ebp,%ecx
4061ec:	e8 ef d6 00 00       	call   0x4138e0
4061f1:	c9                   	leave
4061f2:	c3                   	ret
4061f3:	cc                   	int3
4061f4:	cc                   	int3
4061f5:	cc                   	int3
4061f6:	cc                   	int3
4061f7:	cc                   	int3
4061f8:	cc                   	int3
4061f9:	cc                   	int3
4061fa:	cc                   	int3
4061fb:	cc                   	int3
4061fc:	cc                   	int3
4061fd:	cc                   	int3
4061fe:	cc                   	int3
4061ff:	cc                   	int3
406200:	8b ff                	mov    %edi,%edi
406202:	55                   	push   %ebp
406203:	8b ec                	mov    %esp,%ebp
406205:	56                   	push   %esi
406206:	8b f1                	mov    %ecx,%esi
406208:	e8 23 00 00 00       	call   0x406230
40620d:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
406211:	74 08                	je     0x40621b
406213:	56                   	push   %esi
406214:	ff 15 cc b2 41 00    	call   *0x41b2cc
40621a:	59                   	pop    %ecx
40621b:	8b c6                	mov    %esi,%eax
40621d:	5e                   	pop    %esi
40621e:	5d                   	pop    %ebp
40621f:	c2 04 00             	ret    $0x4
406222:	cc                   	int3
406223:	cc                   	int3
406224:	cc                   	int3
406225:	cc                   	int3
406226:	cc                   	int3
406227:	cc                   	int3
406228:	cc                   	int3
406229:	cc                   	int3
40622a:	cc                   	int3
40622b:	cc                   	int3
40622c:	cc                   	int3
40622d:	cc                   	int3
40622e:	cc                   	int3
40622f:	cc                   	int3
406230:	8b ff                	mov    %edi,%edi
406232:	56                   	push   %esi
406233:	8b f1                	mov    %ecx,%esi
406235:	8d 4e 64             	lea    0x64(%esi),%ecx
406238:	e8 c7 f9 ff ff       	call   0x405c04
40623d:	8d 4e 5c             	lea    0x5c(%esi),%ecx
406240:	e8 bf f9 ff ff       	call   0x405c04
406245:	8b ce                	mov    %esi,%ecx
406247:	5e                   	pop    %esi
406248:	ff 25 d4 b2 41 00    	jmp    *0x41b2d4
40624e:	8b ff                	mov    %edi,%edi
406250:	56                   	push   %esi
406251:	8b 35 50 97 41 00    	mov    0x419750,%esi
406257:	85 f6                	test   %esi,%esi
406259:	74 0b                	je     0x406266
40625b:	51                   	push   %ecx
40625c:	8b ce                	mov    %esi,%ecx
40625e:	ff 15 90 b3 41 00    	call   *0x41b390
406264:	ff d6                	call   *%esi
406266:	5e                   	pop    %esi
406267:	c3                   	ret
406268:	cc                   	int3
406269:	cc                   	int3
40626a:	cc                   	int3
40626b:	cc                   	int3
40626c:	cc                   	int3
40626d:	cc                   	int3
40626e:	cc                   	int3
40626f:	cc                   	int3
406270:	6a 00                	push   $0x0
406272:	6a 00                	push   $0x0
406274:	e8 9d d9 00 00       	call   0x413c16
406279:	cc                   	int3
40627a:	cc                   	int3
40627b:	cc                   	int3
40627c:	cc                   	int3
40627d:	cc                   	int3
40627e:	cc                   	int3
40627f:	cc                   	int3
406280:	8b ff                	mov    %edi,%edi
406282:	55                   	push   %ebp
406283:	8b ec                	mov    %esp,%ebp
406285:	83 ec 6c             	sub    $0x6c,%esp
406288:	8d 4d 94             	lea    -0x6c(%ebp),%ecx
40628b:	ff 75 08             	push   0x8(%ebp)
40628e:	e8 95 fe ff ff       	call   0x406128
406293:	68 28 4f 41 00       	push   $0x414f28
406298:	8d 45 94             	lea    -0x6c(%ebp),%eax
40629b:	50                   	push   %eax
40629c:	e8 75 d9 00 00       	call   0x413c16
4062a1:	cc                   	int3
4062a2:	cc                   	int3
4062a3:	cc                   	int3
4062a4:	cc                   	int3
4062a5:	cc                   	int3
4062a6:	cc                   	int3
4062a7:	cc                   	int3
4062a8:	cc                   	int3
4062a9:	cc                   	int3
4062aa:	cc                   	int3
4062ab:	cc                   	int3
4062ac:	cc                   	int3
4062ad:	cc                   	int3
4062ae:	cc                   	int3
4062af:	cc                   	int3
4062b0:	8b ff                	mov    %edi,%edi
4062b2:	55                   	push   %ebp
4062b3:	8b ec                	mov    %esp,%ebp
4062b5:	51                   	push   %ecx
4062b6:	53                   	push   %ebx
4062b7:	8b 5d 08             	mov    0x8(%ebp),%ebx
4062ba:	56                   	push   %esi
4062bb:	57                   	push   %edi
4062bc:	8b f1                	mov    %ecx,%esi
4062be:	53                   	push   %ebx
4062bf:	89 75 fc             	mov    %esi,-0x4(%ebp)
4062c2:	ff 15 dc b2 41 00    	call   *0x41b2dc
4062c8:	8d 56 0c             	lea    0xc(%esi),%edx
4062cb:	c7 06 4c 15 40 00    	movl   $0x40154c,(%esi)
4062d1:	6a 14                	push   $0x14
4062d3:	8d 43 0c             	lea    0xc(%ebx),%eax
4062d6:	8b fa                	mov    %edx,%edi
4062d8:	59                   	pop    %ecx
4062d9:	8b f0                	mov    %eax,%esi
4062db:	83 c0 50             	add    $0x50,%eax
4062de:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
4062e0:	50                   	push   %eax
4062e1:	8d 4a 50             	lea    0x50(%edx),%ecx
4062e4:	e8 e8 f8 ff ff       	call   0x405bd1
4062e9:	8b 75 fc             	mov    -0x4(%ebp),%esi
4062ec:	8d 43 64             	lea    0x64(%ebx),%eax
4062ef:	50                   	push   %eax
4062f0:	8d 4e 64             	lea    0x64(%esi),%ecx
4062f3:	e8 d9 f8 ff ff       	call   0x405bd1
4062f8:	5f                   	pop    %edi
4062f9:	8b c6                	mov    %esi,%eax
4062fb:	5e                   	pop    %esi
4062fc:	5b                   	pop    %ebx
4062fd:	c9                   	leave
4062fe:	c2 04 00             	ret    $0x4
406301:	8b ff                	mov    %edi,%edi
406303:	55                   	push   %ebp
406304:	8b ec                	mov    %esp,%ebp
406306:	83 ec 20             	sub    $0x20,%esp
406309:	8b 45 08             	mov    0x8(%ebp),%eax
40630c:	89 45 f8             	mov    %eax,-0x8(%ebp)
40630f:	8b 45 0c             	mov    0xc(%ebp),%eax
406312:	89 45 f0             	mov    %eax,-0x10(%ebp)
406315:	8b 45 10             	mov    0x10(%ebp),%eax
406318:	89 45 f4             	mov    %eax,-0xc(%ebp)
40631b:	8b 45 14             	mov    0x14(%ebp),%eax
40631e:	53                   	push   %ebx
40631f:	8b 5d 28             	mov    0x28(%ebp),%ebx
406322:	89 45 ec             	mov    %eax,-0x14(%ebp)
406325:	8b 45 30             	mov    0x30(%ebp),%eax
406328:	56                   	push   %esi
406329:	8b 75 38             	mov    0x38(%ebp),%esi
40632c:	57                   	push   %edi
40632d:	33 ff                	xor    %edi,%edi
40632f:	89 45 e0             	mov    %eax,-0x20(%ebp)
406332:	66 89 3b             	mov    %di,(%ebx)
406335:	c6 00 00             	movb   $0x0,(%eax)
406338:	33 c0                	xor    %eax,%eax
40633a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40633d:	8b 45 18             	mov    0x18(%ebp),%eax
406340:	2b c7                	sub    %edi,%eax
406342:	89 55 e8             	mov    %edx,-0x18(%ebp)
406345:	8b 7d 1c             	mov    0x1c(%ebp),%edi
406348:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40634b:	74 46                	je     0x406393
40634d:	83 e8 01             	sub    $0x1,%eax
406350:	74 38                	je     0x40638a
406352:	83 e8 01             	sub    $0x1,%eax
406355:	74 0d                	je     0x406364
406357:	83 e8 01             	sub    $0x1,%eax
40635a:	75 41                	jne    0x40639d
40635c:	57                   	push   %edi
40635d:	e8 7e f9 ff ff       	call   0x405ce0
406362:	eb 36                	jmp    0x40639a
406364:	85 ff                	test   %edi,%edi
406366:	78 19                	js     0x406381
406368:	bf 9c 02 07 80       	mov    $0x8007029c,%edi
40636d:	57                   	push   %edi
40636e:	6a 02                	push   $0x2
406370:	ff 75 ec             	push   -0x14(%ebp)
406373:	ff 75 f4             	push   -0xc(%ebp)
406376:	ff 75 f0             	push   -0x10(%ebp)