40d0f2:	8d 48 ff             	lea    -0x1(%eax),%ecx
40d0f5:	8b 46 0c             	mov    0xc(%esi),%eax
40d0f8:	f7 d9                	neg    %ecx
40d0fa:	1b c9                	sbb    %ecx,%ecx
40d0fc:	41                   	inc    %ecx
40d0fd:	89 48 08             	mov    %ecx,0x8(%eax)
40d100:	8b ce                	mov    %esi,%ecx
40d102:	e8 21 fc ff ff       	call   0x40cd28
40d107:	68 2b 04 00 00       	push   $0x42b
40d10c:	8d 48 ff             	lea    -0x1(%eax),%ecx
40d10f:	8b 46 0c             	mov    0xc(%esi),%eax
40d112:	f7 d9                	neg    %ecx
40d114:	1b c9                	sbb    %ecx,%ecx
40d116:	41                   	inc    %ecx
40d117:	89 48 14             	mov    %ecx,0x14(%eax)
40d11a:	8b ce                	mov    %esi,%ecx
40d11c:	e8 07 fc ff ff       	call   0x40cd28
40d121:	8d 48 ff             	lea    -0x1(%eax),%ecx
40d124:	8b 46 0c             	mov    0xc(%esi),%eax
40d127:	f7 d9                	neg    %ecx
40d129:	1b c9                	sbb    %ecx,%ecx
40d12b:	41                   	inc    %ecx
40d12c:	89 48 10             	mov    %ecx,0x10(%eax)
40d12f:	a1 18 98 41 00       	mov    0x419818,%eax
40d134:	3d 22 00 10 00       	cmp    $0x100022,%eax
40d139:	74 20                	je     0x40d15b
40d13b:	3d 23 00 10 00       	cmp    $0x100023,%eax
40d140:	74 19                	je     0x40d15b
40d142:	3d 24 00 10 00       	cmp    $0x100024,%eax
40d147:	74 12                	je     0x40d15b
40d149:	3d 31 00 00 04       	cmp    $0x4000031,%eax
40d14e:	74 0b                	je     0x40d15b
40d150:	8b 4e 0c             	mov    0xc(%esi),%ecx
40d153:	8b 41 10             	mov    0x10(%ecx),%eax
40d156:	89 41 0c             	mov    %eax,0xc(%ecx)
40d159:	eb 06                	jmp    0x40d161
40d15b:	8b 46 0c             	mov    0xc(%esi),%eax
40d15e:	89 78 0c             	mov    %edi,0xc(%eax)
40d161:	68 0e 04 00 00       	push   $0x40e
40d166:	ff 76 04             	push   0x4(%esi)
40d169:	ff 15 d0 b1 41 00    	call   *0x41b1d0
40d16f:	8a 4e 10             	mov    0x10(%esi),%cl
40d172:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d175:	fe c9                	dec    %cl
40d177:	8b 46 0c             	mov    0xc(%esi),%eax
40d17a:	88 08                	mov    %cl,(%eax)
40d17c:	8b 4e 0c             	mov    0xc(%esi),%ecx
40d17f:	80 39 00             	cmpb   $0x0,(%ecx)
40d182:	76 7b                	jbe    0x40d1ff
40d184:	33 db                	xor    %ebx,%ebx
40d186:	c7 45 f8 58 03 00 00 	movl   $0x358,-0x8(%ebp)
40d18d:	8b d7                	mov    %edi,%edx
40d18f:	43                   	inc    %ebx
40d190:	89 55 f4             	mov    %edx,-0xc(%ebp)
40d193:	8d 41 18             	lea    0x18(%ecx),%eax
40d196:	89 7d b8             	mov    %edi,-0x48(%ebp)
40d199:	03 c2                	add    %edx,%eax
40d19b:	c7 45 c8 0d 00 00 00 	movl   $0xd,-0x38(%ebp)
40d1a2:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40d1a5:	8d 45 b0             	lea    -0x50(%ebp),%eax
40d1a8:	50                   	push   %eax
40d1a9:	53                   	push   %ebx
40d1aa:	68 73 10 00 00       	push   $0x1073
40d1af:	ff 75 fc             	push   -0x4(%ebp)
40d1b2:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d1b8:	68 00 f0 00 00       	push   $0xf000
40d1bd:	53                   	push   %ebx
40d1be:	68 2c 10 00 00       	push   $0x102c
40d1c3:	ff 75 fc             	push   -0x4(%ebp)
40d1c6:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d1cc:	8b 55 f8             	mov    -0x8(%ebp),%edx
40d1cf:	c1 e8 0c             	shr    $0xc,%eax
40d1d2:	8d 48 ff             	lea    -0x1(%eax),%ecx
40d1d5:	8b 46 0c             	mov    0xc(%esi),%eax
40d1d8:	89 0c 02             	mov    %ecx,(%edx,%eax,1)
40d1db:	83 c2 04             	add    $0x4,%edx
40d1de:	8b 4e 0c             	mov    0xc(%esi),%ecx
40d1e1:	89 55 f8             	mov    %edx,-0x8(%ebp)
40d1e4:	8b 55 f4             	mov    -0xc(%ebp),%edx
40d1e7:	83 c2 1a             	add    $0x1a,%edx
40d1ea:	43                   	inc    %ebx
40d1eb:	0f b6 01             	movzbl (%ecx),%eax
40d1ee:	89 55 f4             	mov    %edx,-0xc(%ebp)
40d1f1:	3b d8                	cmp    %eax,%ebx
40d1f3:	7e 9e                	jle    0x40d193
40d1f5:	8b 5d f0             	mov    -0x10(%ebp),%ebx
40d1f8:	33 c0                	xor    %eax,%eax
40d1fa:	66 3b c3             	cmp    %bx,%ax
40d1fd:	75 0c                	jne    0x40d20b
40d1ff:	ff 75 ec             	push   -0x14(%ebp)
40d202:	ff 76 04             	push   0x4(%esi)
40d205:	ff 15 b8 b2 41 00    	call   *0x41b2b8
40d20b:	8b c7                	mov    %edi,%eax
40d20d:	5f                   	pop    %edi
40d20e:	5e                   	pop    %esi
40d20f:	5b                   	pop    %ebx
40d210:	c9                   	leave
40d211:	c2 08 00             	ret    $0x8
40d214:	cc                   	int3
40d215:	cc                   	int3
40d216:	cc                   	int3
40d217:	cc                   	int3
40d218:	cc                   	int3
40d219:	cc                   	int3
40d21a:	cc                   	int3
40d21b:	cc                   	int3
40d21c:	cc                   	int3
40d21d:	cc                   	int3
40d21e:	cc                   	int3
40d21f:	cc                   	int3
40d220:	8b ff                	mov    %edi,%edi
40d222:	55                   	push   %ebp
40d223:	8b ec                	mov    %esp,%ebp
40d225:	81 ec c0 00 00 00    	sub    $0xc0,%esp
40d22b:	a1 18 51 41 00       	mov    0x415118,%eax
40d230:	33 c5                	xor    %ebp,%eax
40d232:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d235:	53                   	push   %ebx
40d236:	56                   	push   %esi
40d237:	8b 75 08             	mov    0x8(%ebp),%esi
40d23a:	8b d9                	mov    %ecx,%ebx
40d23c:	57                   	push   %edi
40d23d:	68 0e 04 00 00       	push   $0x40e
40d242:	33 ff                	xor    %edi,%edi
40d244:	ff 73 04             	push   0x4(%ebx)
40d247:	ff 15 d0 b1 41 00    	call   *0x41b1d0
40d24d:	8b c8                	mov    %eax,%ecx
40d24f:	89 4d c8             	mov    %ecx,-0x38(%ebp)
40d252:	3b 0e                	cmp    (%esi),%ecx
40d254:	0f 85 87 04 00 00    	jne    0x40d6e1
40d25a:	8b 46 08             	mov    0x8(%esi),%eax
40d25d:	3d 50 ff ff ff       	cmp    $0xffffff50,%eax
40d262:	0f 84 41 02 00 00    	je     0x40d4a9
40d268:	3d 51 ff ff ff       	cmp    $0xffffff51,%eax
40d26d:	0f 84 a5 01 00 00    	je     0x40d418
40d273:	3d 65 ff ff ff       	cmp    $0xffffff65,%eax
40d278:	0f 84 81 01 00 00    	je     0x40d3ff
40d27e:	83 f8 f9             	cmp    $0xfffffff9,%eax
40d281:	0f 84 2e 01 00 00    	je     0x40d3b5
40d287:	83 f8 fb             	cmp    $0xfffffffb,%eax
40d28a:	0f 84 ad 00 00 00    	je     0x40d33d
40d290:	33 d2                	xor    %edx,%edx
40d292:	83 c0 03             	add    $0x3,%eax
40d295:	42                   	inc    %edx
40d296:	3b c2                	cmp    %edx,%eax
40d298:	0f 87 43 04 00 00    	ja     0x40d6e1
40d29e:	8b 46 0c             	mov    0xc(%esi),%eax
40d2a1:	83 f8 ff             	cmp    $0xffffffff,%eax
40d2a4:	0f 84 37 04 00 00    	je     0x40d6e1
40d2aa:	3b 43 10             	cmp    0x10(%ebx),%eax
40d2ad:	0f 8d 2e 04 00 00    	jge    0x40d6e1
40d2b3:	85 c0                	test   %eax,%eax
40d2b5:	75 0d                	jne    0x40d2c4
40d2b7:	57                   	push   %edi
40d2b8:	57                   	push   %edi
40d2b9:	68 76 10 00 00       	push   $0x1076
40d2be:	51                   	push   %ecx
40d2bf:	e9 b7 03 00 00       	jmp    0x40d67b
40d2c4:	89 55 d0             	mov    %edx,-0x30(%ebp)
40d2c7:	8d 55 d0             	lea    -0x30(%ebp),%edx
40d2ca:	52                   	push   %edx
40d2cb:	50                   	push   %eax
40d2cc:	68 0e 10 00 00       	push   $0x100e
40d2d1:	51                   	push   %ecx
40d2d2:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d2d8:	ff 76 24             	push   0x24(%esi)
40d2db:	8d 45 d0             	lea    -0x30(%ebp),%eax
40d2de:	89 7d d0             	mov    %edi,-0x30(%ebp)
40d2e1:	ff 76 20             	push   0x20(%esi)
40d2e4:	50                   	push   %eax
40d2e5:	ff 15 10 b2 41 00    	call   *0x41b210
40d2eb:	85 c0                	test   %eax,%eax
40d2ed:	0f 84 ee 03 00 00    	je     0x40d6e1
40d2f3:	8b 5d c8             	mov    -0x38(%ebp),%ebx
40d2f6:	b8 00 f0 00 00       	mov    $0xf000,%eax
40d2fb:	50                   	push   %eax
40d2fc:	ff 76 0c             	push   0xc(%esi)
40d2ff:	89 45 8c             	mov    %eax,-0x74(%ebp)
40d302:	68 2c 10 00 00       	push   $0x102c
40d307:	53                   	push   %ebx
40d308:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d30e:	b9 00 f0 ff ff       	mov    $0xfffff000,%ecx
40d313:	23 c1                	and    %ecx,%eax
40d315:	2d 00 10 00 00       	sub    $0x1000,%eax
40d31a:	f7 d8                	neg    %eax
40d31c:	1b c0                	sbb    %eax,%eax
40d31e:	23 c1                	and    %ecx,%eax
40d320:	05 00 20 00 00       	add    $0x2000,%eax
40d325:	89 45 88             	mov    %eax,-0x78(%ebp)
40d328:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
40d32e:	50                   	push   %eax
40d32f:	ff 76 0c             	push   0xc(%esi)
40d332:	68 2b 10 00 00       	push   $0x102b
40d337:	53                   	push   %ebx
40d338:	e9 76 03 00 00       	jmp    0x40d6b3
40d33d:	83 7e 0c 01          	cmpl   $0x1,0xc(%esi)
40d341:	0f 8e 9a 03 00 00    	jle    0x40d6e1
40d347:	89 7d c4             	mov    %edi,-0x3c(%ebp)
40d34a:	ff 15 e0 b1 41 00    	call   *0x41b1e0
40d350:	8b f0                	mov    %eax,%esi
40d352:	85 f6                	test   %esi,%esi
40d354:	0f 84 87 03 00 00    	je     0x40d6e1
40d35a:	6a 1f                	push   $0x1f
40d35c:	8d 55 c4             	lea    -0x3c(%ebp),%edx
40d35f:	59                   	pop    %ecx
40d360:	e8 80 26 00 00       	call   0x40f9e5
40d365:	85 c0                	test   %eax,%eax
40d367:	74 40                	je     0x40d3a9
40d369:	39 7d c4             	cmp    %edi,-0x3c(%ebp)
40d36c:	74 3b                	je     0x40d3a9
40d36e:	ff 75 c4             	push   -0x3c(%ebp)
40d371:	68 ff 00 00 00       	push   $0xff
40d376:	68 00 04 00 00       	push   $0x400
40d37b:	57                   	push   %edi
40d37c:	56                   	push   %esi
40d37d:	ff 15 e8 b1 41 00    	call   *0x41b1e8
40d383:	ff 15 48 b2 41 00    	call   *0x41b248
40d389:	57                   	push   %edi
40d38a:	ff 73 04             	push   0x4(%ebx)
40d38d:	0f bf c8             	movswl %ax,%ecx
40d390:	57                   	push   %edi
40d391:	c1 e8 10             	shr    $0x10,%eax
40d394:	98                   	cwtl
40d395:	50                   	push   %eax
40d396:	51                   	push   %ecx
40d397:	57                   	push   %edi
40d398:	56                   	push   %esi
40d399:	ff 15 f0 b1 41 00    	call   *0x41b1f0
40d39f:	ff 75 c4             	push   -0x3c(%ebp)
40d3a2:	ff 15 24 b3 41 00    	call   *0x41b324
40d3a8:	59                   	pop    %ecx
40d3a9:	56                   	push   %esi
40d3aa:	ff 15 f4 b1 41 00    	call   *0x41b1f4
40d3b0:	e9 2c 03 00 00       	jmp    0x40d6e1
40d3b5:	6a 17                	push   $0x17
40d3b7:	8d 55 c0             	lea    -0x40(%ebp),%edx
40d3ba:	89 7d c0             	mov    %edi,-0x40(%ebp)
40d3bd:	59                   	pop    %ecx
40d3be:	e8 22 26 00 00       	call   0x40f9e5
40d3c3:	85 c0                	test   %eax,%eax
40d3c5:	0f 84 16 03 00 00    	je     0x40d6e1
40d3cb:	8b 75 c0             	mov    -0x40(%ebp),%esi
40d3ce:	85 f6                	test   %esi,%esi
40d3d0:	0f 84 0b 03 00 00    	je     0x40d6e1
40d3d6:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
40d3dc:	89 7d 84             	mov    %edi,-0x7c(%ebp)
40d3df:	50                   	push   %eax
40d3e0:	57                   	push   %edi
40d3e1:	68 74 10 00 00       	push   $0x1074
40d3e6:	ff 75 c8             	push   -0x38(%ebp)
40d3e9:	89 75 90             	mov    %esi,-0x70(%ebp)
40d3ec:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d3f2:	56                   	push   %esi
40d3f3:	ff 15 24 b3 41 00    	call   *0x41b324
40d3f9:	59                   	pop    %ecx
40d3fa:	e9 e2 02 00 00       	jmp    0x40d6e1
40d3ff:	6a 2e                	push   $0x2e
40d401:	58                   	pop    %eax
40d402:	66 3b 46 0c          	cmp    0xc(%esi),%ax
40d406:	0f 85 d5 02 00 00    	jne    0x40d6e1
40d40c:	8b cb                	mov    %ebx,%ecx
40d40e:	e8 e1 02 00 00       	call   0x40d6f4
40d413:	e9 c9 02 00 00       	jmp    0x40d6e1
40d418:	8b 46 10             	mov    0x10(%esi),%eax
40d41b:	3b 43 10             	cmp    0x10(%ebx),%eax
40d41e:	0f 8d 95 02 00 00    	jge    0x40d6b9
40d424:	83 7b 10 21          	cmpl   $0x21,0x10(%ebx)
40d428:	0f 84 8b 02 00 00    	je     0x40d6b9
40d42e:	85 c0                	test   %eax,%eax
40d430:	74 09                	je     0x40d43b
40d432:	83 f8 01             	cmp    $0x1,%eax
40d435:	0f 8e 7e 02 00 00    	jle    0x40d6b9
40d43b:	57                   	push   %edi
40d43c:	57                   	push   %edi
40d43d:	68 18 10 00 00       	push   $0x1018
40d442:	51                   	push   %ecx
40d443:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d449:	8b d8                	mov    %eax,%ebx
40d44b:	85 db                	test   %ebx,%ebx
40d44d:	0f 84 8e 02 00 00    	je     0x40d6e1
40d453:	39 7e 10             	cmp    %edi,0x10(%esi)
40d456:	75 27                	jne    0x40d47f
40d458:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
40d45e:	89 7d 84             	mov    %edi,-0x7c(%ebp)
40d461:	50                   	push   %eax
40d462:	57                   	push   %edi
40d463:	68 74 10 00 00       	push   $0x1074
40d468:	ff 75 c8             	push   -0x38(%ebp)
40d46b:	89 7d 90             	mov    %edi,-0x70(%ebp)
40d46e:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d474:	57                   	push   %edi
40d475:	57                   	push   %edi
40d476:	6a 0c                	push   $0xc
40d478:	53                   	push   %ebx
40d479:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d47f:	57                   	push   %edi
40d480:	6a 0c                	push   $0xc
40d482:	68 c5 00 00 00       	push   $0xc5
40d487:	53                   	push   %ebx
40d488:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40d48e:	6a f0                	push   $0xfffffff0
40d490:	53                   	push   %ebx
40d491:	ff 15 20 b2 41 00    	call   *0x41b220
40d497:	83 c8 10             	or     $0x10,%eax
40d49a:	50                   	push   %eax
40d49b:	6a f0                	push   $0xfffffff0
40d49d:	53                   	push   %ebx
40d49e:	ff 15 24 b2 41 00    	call   *0x41b224
40d4a4:	e9 38 02 00 00       	jmp    0x40d6e1
40d4a9:	f6 46 0c 01          	testb  $0x1,0xc(%esi)
40d4ad:	0f 84 2e 02 00 00    	je     0x40d6e1
40d4b3:	8b 4e 20             	mov    0x20(%esi),%ecx
40d4b6:	8d 45 cc             	lea    -0x34(%ebp),%eax
40d4b9:	50                   	push   %eax
40d4ba:	ba 04 01 00 00       	mov    $0x104,%edx
40d4bf:	89 7d cc             	mov    %edi,-0x34(%ebp)
40d4c2:	e8 ac b9 ff ff       	call   0x408e73
40d4c7:	85 c0                	test   %eax,%eax
40d4c9:	0f 88 04 02 00 00    	js     0x40d6d3
40d4cf:	83 7d cc 03          	cmpl   $0x3,-0x34(%ebp)
40d4d3:	0f 82 fa 01 00 00    	jb     0x40d6d3
40d4d9:	ff 76 20             	push   0x20(%esi)
40d4dc:	ff 15 44 b2 41 00    	call   *0x41b244
40d4e2:	8b cf                	mov    %edi,%ecx
40d4e4:	39 4d cc             	cmp    %ecx,-0x34(%ebp)
40d4e7:	76 18                	jbe    0x40d501
40d4e9:	8b 56 20             	mov    0x20(%esi),%edx
40d4ec:	0f b7 02             	movzwl (%edx),%eax
40d4ef:	83 c0 9f             	add    $0xffffff9f,%eax
40d4f2:	66 83 f8 19          	cmp    $0x19,%ax
40d4f6:	77 75                	ja     0x40d56d
40d4f8:	41                   	inc    %ecx
40d4f9:	83 c2 02             	add    $0x2,%edx
40d4fc:	3b 4d cc             	cmp    -0x34(%ebp),%ecx
40d4ff:	72 eb                	jb     0x40d4ec
40d501:	8b 4b 10             	mov    0x10(%ebx),%ecx
40d504:	33 c0                	xor    %eax,%eax
40d506:	40                   	inc    %eax
40d507:	89 45 cc             	mov    %eax,-0x34(%ebp)
40d50a:	3b c8                	cmp    %eax,%ecx
40d50c:	0f 8e 80 00 00 00    	jle    0x40d592
40d512:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40d515:	89 7d 84             	mov    %edi,-0x7c(%ebp)
40d518:	89 4d 90             	mov    %ecx,-0x70(%ebp)
40d51b:	8d 8d 7c ff ff ff    	lea    -0x84(%ebp),%ecx
40d521:	51                   	push   %ecx
40d522:	50                   	push   %eax
40d523:	68 73 10 00 00       	push   $0x1073
40d528:	ff 75 c8             	push   -0x38(%ebp)
40d52b:	c7 45 94 0d 00 00 00 	movl   $0xd,-0x6c(%ebp)