409fe2:	8b ff                	mov    %edi,%edi
409fe4:	55                   	push   %ebp
409fe5:	8b ec                	mov    %esp,%ebp
409fe7:	83 ec 18             	sub    $0x18,%esp
409fea:	a1 44 10 41 00       	mov    0x411044,%eax
409fef:	33 c5                	xor    %ebp,%eax
409ff1:	89 45 fc             	mov    %eax,-0x4(%ebp)
409ff4:	a1 60 18 40 00       	mov    0x401860,%eax
409ff9:	53                   	push   %ebx
409ffa:	56                   	push   %esi
409ffb:	57                   	push   %edi
409ffc:	8b f9                	mov    %ecx,%edi
409ffe:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a001:	66 a1 64 18 40 00    	mov    0x401864,%ax
40a007:	33 db                	xor    %ebx,%ebx
40a009:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a00c:	8b f2                	mov    %edx,%esi
40a00e:	89 75 f0             	mov    %esi,-0x10(%ebp)
40a011:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40a014:	66 89 45 f8          	mov    %ax,-0x8(%ebp)
40a018:	85 ff                	test   %edi,%edi
40a01a:	0f 84 a9 00 00 00    	je     0x40a0c9
40a020:	e8 66 04 00 00       	call   0x40a48b
40a025:	85 c0                	test   %eax,%eax
40a027:	0f 84 9c 00 00 00    	je     0x40a0c9
40a02d:	85 f6                	test   %esi,%esi
40a02f:	74 0b                	je     0x40a03c
40a031:	8b ce                	mov    %esi,%ecx
40a033:	e8 53 04 00 00       	call   0x40a48b
40a038:	85 c0                	test   %eax,%eax
40a03a:	75 06                	jne    0x40a042
40a03c:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a03f:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a042:	0f b7 07             	movzwl (%edi),%eax
40a045:	8b f7                	mov    %edi,%esi
40a047:	66 85 c0             	test   %ax,%ax
40a04a:	74 21                	je     0x40a06d
40a04c:	8b 5d f0             	mov    -0x10(%ebp),%ebx
40a04f:	8b c8                	mov    %eax,%ecx
40a051:	51                   	push   %ecx
40a052:	53                   	push   %ebx
40a053:	ff 15 44 21 41 00    	call   *0x412144
40a059:	85 c0                	test   %eax,%eax
40a05b:	74 0d                	je     0x40a06a
40a05d:	83 c6 02             	add    $0x2,%esi
40a060:	0f b7 06             	movzwl (%esi),%eax
40a063:	8b c8                	mov    %eax,%ecx
40a065:	66 85 c0             	test   %ax,%ax
40a068:	75 e7                	jne    0x40a051
40a06a:	8b 5d ec             	mov    -0x14(%ebp),%ebx
40a06d:	0f b7 06             	movzwl (%esi),%eax
40a070:	89 75 ec             	mov    %esi,-0x14(%ebp)
40a073:	66 85 c0             	test   %ax,%ax
40a076:	74 34                	je     0x40a0ac
40a078:	8b 7d f0             	mov    -0x10(%ebp),%edi
40a07b:	8b c8                	mov    %eax,%ecx
40a07d:	51                   	push   %ecx
40a07e:	57                   	push   %edi
40a07f:	ff 15 44 21 41 00    	call   *0x412144
40a085:	85 c0                	test   %eax,%eax
40a087:	74 08                	je     0x40a091
40a089:	85 db                	test   %ebx,%ebx
40a08b:	75 06                	jne    0x40a093
40a08d:	8b de                	mov    %esi,%ebx
40a08f:	eb 02                	jmp    0x40a093
40a091:	33 db                	xor    %ebx,%ebx
40a093:	83 c6 02             	add    $0x2,%esi
40a096:	0f b7 06             	movzwl (%esi),%eax
40a099:	8b c8                	mov    %eax,%ecx
40a09b:	66 85 c0             	test   %ax,%ax
40a09e:	75 dd                	jne    0x40a07d
40a0a0:	8b 7d e8             	mov    -0x18(%ebp),%edi
40a0a3:	85 db                	test   %ebx,%ebx
40a0a5:	74 05                	je     0x40a0ac
40a0a7:	33 c0                	xor    %eax,%eax
40a0a9:	66 89 03             	mov    %ax,(%ebx)
40a0ac:	8b 5d ec             	mov    -0x14(%ebp),%ebx
40a0af:	3b df                	cmp    %edi,%ebx
40a0b1:	76 12                	jbe    0x40a0c5
40a0b3:	8b cb                	mov    %ebx,%ecx
40a0b5:	e8 d1 03 00 00       	call   0x40a48b
40a0ba:	40                   	inc    %eax
40a0bb:	8b d3                	mov    %ebx,%edx
40a0bd:	50                   	push   %eax
40a0be:	8b cf                	mov    %edi,%ecx
40a0c0:	e8 31 03 00 00       	call   0x40a3f6
40a0c5:	8b c7                	mov    %edi,%eax
40a0c7:	eb 05                	jmp    0x40a0ce
40a0c9:	b8 8c 18 40 00       	mov    $0x40188c,%eax
40a0ce:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a0d1:	5f                   	pop    %edi
40a0d2:	5e                   	pop    %esi
40a0d3:	33 cd                	xor    %ebp,%ecx
40a0d5:	5b                   	pop    %ebx
40a0d6:	e8 f5 4b 00 00       	call   0x40ecd0
40a0db:	c9                   	leave
40a0dc:	c2 04 00             	ret    $0x4
40a0df:	8b ff                	mov    %edi,%edi
40a0e1:	55                   	push   %ebp
40a0e2:	8b ec                	mov    %esp,%ebp
40a0e4:	83 ec 24             	sub    $0x24,%esp
40a0e7:	a1 44 10 41 00       	mov    0x411044,%eax
40a0ec:	33 c5                	xor    %ebp,%eax
40a0ee:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a0f1:	53                   	push   %ebx
40a0f2:	56                   	push   %esi
40a0f3:	57                   	push   %edi
40a0f4:	8b f9                	mov    %ecx,%edi
40a0f6:	33 c0                	xor    %eax,%eax
40a0f8:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40a0fb:	8b f2                	mov    %edx,%esi
40a0fd:	89 75 dc             	mov    %esi,-0x24(%ebp)
40a100:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a103:	66 89 45 f8          	mov    %ax,-0x8(%ebp)
40a107:	85 ff                	test   %edi,%edi
40a109:	75 0e                	jne    0x40a119
40a10b:	ff 15 48 20 41 00    	call   *0x412048
40a111:	85 c0                	test   %eax,%eax
40a113:	75 5a                	jne    0x40a16f
40a115:	6a 57                	push   $0x57
40a117:	eb 50                	jmp    0x40a169
40a119:	e8 9f fe ff ff       	call   0x409fbd
40a11e:	8b d8                	mov    %eax,%ebx
40a120:	3b de                	cmp    %esi,%ebx
40a122:	77 02                	ja     0x40a126
40a124:	8b c6                	mov    %esi,%eax
40a126:	83 c0 0a             	add    $0xa,%eax
40a129:	33 d2                	xor    %edx,%edx
40a12b:	6a 01                	push   $0x1
40a12d:	50                   	push   %eax
40a12e:	33 c9                	xor    %ecx,%ecx
40a130:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a133:	e8 6b f4 ff ff       	call   0x4095a3
40a138:	8b c8                	mov    %eax,%ecx
40a13a:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40a13d:	85 c9                	test   %ecx,%ecx
40a13f:	74 1c                	je     0x40a15d
40a141:	3b de                	cmp    %esi,%ebx
40a143:	73 76                	jae    0x40a1bb
40a145:	6a 01                	push   $0x1
40a147:	ff 75 ec             	push   -0x14(%ebp)
40a14a:	33 c9                	xor    %ecx,%ecx
40a14c:	33 d2                	xor    %edx,%edx
40a14e:	41                   	inc    %ecx
40a14f:	e8 4f f4 ff ff       	call   0x4095a3
40a154:	8b c8                	mov    %eax,%ecx
40a156:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40a159:	85 c9                	test   %ecx,%ecx
40a15b:	75 1c                	jne    0x40a179
40a15d:	ff 15 48 20 41 00    	call   *0x412048
40a163:	85 c0                	test   %eax,%eax
40a165:	75 08                	jne    0x40a16f
40a167:	6a 08                	push   $0x8
40a169:	ff 15 74 20 41 00    	call   *0x412074
40a16f:	b8 8c 18 40 00       	mov    $0x40188c,%eax
40a174:	e9 e8 00 00 00       	jmp    0x40a261
40a179:	ff 75 ec             	push   -0x14(%ebp)
40a17c:	8b c6                	mov    %esi,%eax
40a17e:	ba 68 18 40 00       	mov    $0x401868,%edx
40a183:	2b c3                	sub    %ebx,%eax
40a185:	50                   	push   %eax
40a186:	e8 e7 00 00 00       	call   0x40a272
40a18b:	83 7d 08 01          	cmpl   $0x1,0x8(%ebp)
40a18f:	8b 55 e4             	mov    -0x1c(%ebp),%edx
40a192:	75 05                	jne    0x40a199
40a194:	89 7d f0             	mov    %edi,-0x10(%ebp)
40a197:	eb 05                	jmp    0x40a19e
40a199:	89 55 f0             	mov    %edx,-0x10(%ebp)
40a19c:	8b d7                	mov    %edi,%edx
40a19e:	8b 5d ec             	mov    -0x14(%ebp),%ebx
40a1a1:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40a1a4:	53                   	push   %ebx
40a1a5:	e8 4c 02 00 00       	call   0x40a3f6
40a1aa:	8b 55 f0             	mov    -0x10(%ebp),%edx
40a1ad:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40a1b0:	53                   	push   %ebx
40a1b1:	e8 a0 02 00 00       	call   0x40a456
40a1b6:	e9 96 00 00 00       	jmp    0x40a251
40a1bb:	33 db                	xor    %ebx,%ebx
40a1bd:	85 f6                	test   %esi,%esi
40a1bf:	0f 84 8c 00 00 00    	je     0x40a251
40a1c5:	8b cf                	mov    %edi,%ecx
40a1c7:	8b 7d ec             	mov    -0x14(%ebp),%edi
40a1ca:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a1cd:	8b d1                	mov    %ecx,%edx
40a1cf:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40a1d2:	6a 02                	push   $0x2
40a1d4:	e8 1d 02 00 00       	call   0x40a3f6
40a1d9:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40a1dc:	e8 aa 02 00 00       	call   0x40a48b
40a1e1:	85 c0                	test   %eax,%eax
40a1e3:	74 18                	je     0x40a1fd
40a1e5:	33 c9                	xor    %ecx,%ecx
40a1e7:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a1ea:	51                   	push   %ecx
40a1eb:	51                   	push   %ecx
40a1ec:	51                   	push   %ecx
40a1ed:	51                   	push   %ecx
40a1ee:	6a ff                	push   $0xffffffff
40a1f0:	50                   	push   %eax
40a1f1:	51                   	push   %ecx
40a1f2:	6a 01                	push   $0x1
40a1f4:	ff 15 c4 20 41 00    	call   *0x4120c4
40a1fa:	48                   	dec    %eax
40a1fb:	eb 02                	jmp    0x40a1ff
40a1fd:	33 c0                	xor    %eax,%eax
40a1ff:	03 c3                	add    %ebx,%eax
40a201:	89 45 e0             	mov    %eax,-0x20(%ebp)
40a204:	3b c6                	cmp    %esi,%eax
40a206:	77 1c                	ja     0x40a224
40a208:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40a20b:	8d 55 f4             	lea    -0xc(%ebp),%edx
40a20e:	57                   	push   %edi
40a20f:	e8 42 02 00 00       	call   0x40a456
40a214:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a217:	8b 5d e0             	mov    -0x20(%ebp),%ebx
40a21a:	83 c1 02             	add    $0x2,%ecx
40a21d:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a220:	3b de                	cmp    %esi,%ebx
40a222:	72 a9                	jb     0x40a1cd
40a224:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40a227:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40a22a:	3b de                	cmp    %esi,%ebx
40a22c:	73 23                	jae    0x40a251
40a22e:	8b 7d ec             	mov    -0x14(%ebp),%edi
40a231:	8b de                	mov    %esi,%ebx
40a233:	2b 5d f0             	sub    -0x10(%ebp),%ebx
40a236:	8b 75 e8             	mov    -0x18(%ebp),%esi
40a239:	57                   	push   %edi
40a23a:	ba 68 18 40 00       	mov    $0x401868,%edx
40a23f:	8b ce                	mov    %esi,%ecx
40a241:	e8 10 02 00 00       	call   0x40a456
40a246:	83 eb 01             	sub    $0x1,%ebx
40a249:	75 ee                	jne    0x40a239
40a24b:	8b 75 dc             	mov    -0x24(%ebp),%esi
40a24e:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40a251:	8b 55 e8             	mov    -0x18(%ebp),%edx
40a254:	8d 4e 01             	lea    0x1(%esi),%ecx
40a257:	51                   	push   %ecx
40a258:	8b cf                	mov    %edi,%ecx
40a25a:	e8 97 01 00 00       	call   0x40a3f6
40a25f:	8b c7                	mov    %edi,%eax
40a261:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a264:	5f                   	pop    %edi
40a265:	5e                   	pop    %esi
40a266:	33 cd                	xor    %ebp,%ecx
40a268:	5b                   	pop    %ebx
40a269:	e8 62 4a 00 00       	call   0x40ecd0
40a26e:	c9                   	leave
40a26f:	c2 04 00             	ret    $0x4
40a272:	8b ff                	mov    %edi,%edi
40a274:	55                   	push   %ebp
40a275:	8b ec                	mov    %esp,%ebp
40a277:	53                   	push   %ebx
40a278:	56                   	push   %esi
40a279:	8b f1                	mov    %ecx,%esi
40a27b:	8b da                	mov    %edx,%ebx
40a27d:	85 f6                	test   %esi,%esi
40a27f:	74 34                	je     0x40a2b5
40a281:	85 db                	test   %ebx,%ebx
40a283:	74 30                	je     0x40a2b5
40a285:	57                   	push   %edi
40a286:	ff 75 0c             	push   0xc(%ebp)
40a289:	ba 8c 18 40 00       	mov    $0x40188c,%edx
40a28e:	e8 63 01 00 00       	call   0x40a3f6
40a293:	33 ff                	xor    %edi,%edi
40a295:	39 7d 08             	cmp    %edi,0x8(%ebp)
40a298:	76 16                	jbe    0x40a2b0
40a29a:	ff 75 0c             	push   0xc(%ebp)
40a29d:	8b d3                	mov    %ebx,%edx
40a29f:	8b ce                	mov    %esi,%ecx
40a2a1:	e8 b0 01 00 00       	call   0x40a456
40a2a6:	85 c0                	test   %eax,%eax
40a2a8:	74 06                	je     0x40a2b0
40a2aa:	47                   	inc    %edi
40a2ab:	3b 7d 08             	cmp    0x8(%ebp),%edi
40a2ae:	72 ea                	jb     0x40a29a
40a2b0:	8b c6                	mov    %esi,%eax
40a2b2:	5f                   	pop    %edi
40a2b3:	eb 17                	jmp    0x40a2cc
40a2b5:	ff 15 48 20 41 00    	call   *0x412048
40a2bb:	85 c0                	test   %eax,%eax
40a2bd:	75 08                	jne    0x40a2c7
40a2bf:	6a 57                	push   $0x57
40a2c1:	ff 15 74 20 41 00    	call   *0x412074
40a2c7:	b8 8c 18 40 00       	mov    $0x40188c,%eax
40a2cc:	5e                   	pop    %esi
40a2cd:	5b                   	pop    %ebx
40a2ce:	5d                   	pop    %ebp
40a2cf:	c2 08 00             	ret    $0x8
40a2d2:	8b ff                	mov    %edi,%edi
40a2d4:	56                   	push   %esi
40a2d5:	8b f1                	mov    %ecx,%esi
40a2d7:	57                   	push   %edi
40a2d8:	8b fa                	mov    %edx,%edi
40a2da:	85 f6                	test   %esi,%esi
40a2dc:	74 22                	je     0x40a300
40a2de:	83 fe ff             	cmp    $0xffffffff,%esi
40a2e1:	74 1d                	je     0x40a300
40a2e3:	56                   	push   %esi
40a2e4:	ff 15 c0 20 41 00    	call   *0x4120c0
40a2ea:	83 f8 02             	cmp    $0x2,%eax
40a2ed:	75 11                	jne    0x40a300
40a2ef:	57                   	push   %edi
40a2f0:	56                   	push   %esi
40a2f1:	ff 15 bc 20 41 00    	call   *0x4120bc
40a2f7:	85 c0                	test   %eax,%eax
40a2f9:	74 05                	je     0x40a300
40a2fb:	33 c0                	xor    %eax,%eax
40a2fd:	40                   	inc    %eax
40a2fe:	eb 02                	jmp    0x40a302
40a300:	33 c0                	xor    %eax,%eax
40a302:	5f                   	pop    %edi
40a303:	5e                   	pop    %esi
40a304:	c3                   	ret
40a305:	8b ff                	mov    %edi,%edi
40a307:	55                   	push   %ebp
40a308:	8b ec                	mov    %esp,%ebp
40a30a:	51                   	push   %ecx
40a30b:	53                   	push   %ebx
40a30c:	56                   	push   %esi
40a30d:	57                   	push   %edi
40a30e:	33 ff                	xor    %edi,%edi
40a310:	89 7d fc             	mov    %edi,-0x4(%ebp)
40a313:	85 c9                	test   %ecx,%ecx
40a315:	75 0e                	jne    0x40a325
40a317:	ff 15 48 20 41 00    	call   *0x412048
40a31d:	85 c0                	test   %eax,%eax
40a31f:	75 70                	jne    0x40a391
40a321:	6a 57                	push   $0x57
40a323:	eb 66                	jmp    0x40a38b
40a325:	51                   	push   %ecx
40a326:	ff 15 70 22 41 00    	call   *0x412270
40a32c:	8b f0                	mov    %eax,%esi
40a32e:	ff 15 dc 22 41 00    	call   *0x4122dc
40a334:	56                   	push   %esi
40a335:	89 38                	mov    %edi,(%eax)
40a337:	ff 15 6c 22 41 00    	call   *0x41226c
40a33d:	8b d8                	mov    %eax,%ebx
40a33f:	59                   	pop    %ecx
40a340:	59                   	pop    %ecx
40a341:	83 fb ff             	cmp    $0xffffffff,%ebx
40a344:	74 43                	je     0x40a389
40a346:	ff 15 dc 22 41 00    	call   *0x4122dc
40a34c:	83 38 09             	cmpl   $0x9,(%eax)
40a34f:	74 38                	je     0x40a389
40a351:	53                   	push   %ebx
40a352:	ff 15 c0 20 41 00    	call   *0x4120c0
40a358:	83 f8 02             	cmp    $0x2,%eax
40a35b:	75 34                	jne    0x40a391