40ced8:	80 38 00             	cmpb   $0x0,(%eax)
40cedb:	0f 86 9c 00 00 00    	jbe    0x40cf7d
40cee1:	33 c9                	xor    %ecx,%ecx
40cee3:	c7 45 e8 58 03 00 00 	movl   $0x358,-0x18(%ebp)
40ceea:	41                   	inc    %ecx
40ceeb:	33 d2                	xor    %edx,%edx
40ceed:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40cef0:	89 55 dc             	mov    %edx,-0x24(%ebp)
40cef3:	8b 47 0c             	mov    0xc(%edi),%eax
40cef6:	83 65 a8 00          	andl   $0x0,-0x58(%ebp)
40cefa:	83 c0 18             	add    $0x18,%eax
40cefd:	03 c2                	add    %edx,%eax
40ceff:	c7 45 a0 01 00 00 00 	movl   $0x1,-0x60(%ebp)
40cf06:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40cf09:	8d 45 a0             	lea    -0x60(%ebp),%eax
40cf0c:	50                   	push   %eax
40cf0d:	6a 00                	push   $0x0
40cf0f:	68 4d 10 00 00       	push   $0x104d
40cf14:	53                   	push   %ebx
40cf15:	89 4d a4             	mov    %ecx,-0x5c(%ebp)
40cf18:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40cf1e:	8b 47 0c             	mov    0xc(%edi),%eax
40cf21:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40cf24:	c7 85 48 ff ff ff 00 	movl   $0xf000,-0xb8(%ebp)
40cf2b:	f0 00 00
40cf2e:	8b 04 01             	mov    (%ecx,%eax,1),%eax
40cf31:	b9 00 10 00 00       	mov    $0x1000,%ecx
40cf36:	f7 d8                	neg    %eax
40cf38:	1b c0                	sbb    %eax,%eax
40cf3a:	23 c1                	and    %ecx,%eax
40cf3c:	03 c1                	add    %ecx,%eax
40cf3e:	89 85 44 ff ff ff    	mov    %eax,-0xbc(%ebp)
40cf44:	8d 85 38 ff ff ff    	lea    -0xc8(%ebp),%eax
40cf4a:	50                   	push   %eax
40cf4b:	ff 75 e4             	push   -0x1c(%ebp)
40cf4e:	68 2b 10 00 00       	push   $0x102b
40cf53:	53                   	push   %ebx
40cf54:	ff 15 d8 b1 41 00    	call   *0x41b1d8
40cf5a:	8b 47 0c             	mov    0xc(%edi),%eax
40cf5d:	46                   	inc    %esi
40cf5e:	8b 55 dc             	mov    -0x24(%ebp),%edx
40cf61:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40cf64:	83 c2 1a             	add    $0x1a,%edx
40cf67:	83 45 e8 04          	addl   $0x4,-0x18(%ebp)
40cf6b:	41                   	inc    %ecx
40cf6c:	0f b6 00             	movzbl (%eax),%eax
40cf6f:	89 55 dc             	mov    %edx,-0x24(%ebp)
40cf72:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40cf75:	3b f0                	cmp    %eax,%esi
40cf77:	0f 8c 76 ff ff ff    	jl     0x40cef3
40cf7d:	8d 46 01             	lea    0x1(%esi),%eax
40cf80:	8b cf                	mov    %edi,%ecx
40cf82:	89 47 10             	mov    %eax,0x10(%edi)
40cf85:	8b 47 0c             	mov    0xc(%edi),%eax
40cf88:	ff 70 04             	push   0x4(%eax)
40cf8b:	68 ec 03 00 00       	push   $0x3ec
40cf90:	e8 67 fd ff ff       	call   0x40ccfc
40cf95:	8b 47 0c             	mov    0xc(%edi),%eax
40cf98:	8b cf                	mov    %edi,%ecx
40cf9a:	ff 70 08             	push   0x8(%eax)
40cf9d:	68 25 04 00 00       	push   $0x425
40cfa2:	e8 55 fd ff ff       	call   0x40ccfc
40cfa7:	8b 47 0c             	mov    0xc(%edi),%eax
40cfaa:	8b cf                	mov    %edi,%ecx
40cfac:	ff 70 14             	push   0x14(%eax)
40cfaf:	68 26 04 00 00       	push   $0x426
40cfb4:	e8 43 fd ff ff       	call   0x40ccfc
40cfb9:	8b 47 0c             	mov    0xc(%edi),%eax
40cfbc:	be 2b 04 00 00       	mov    $0x42b,%esi
40cfc1:	8b cf                	mov    %edi,%ecx
40cfc3:	ff 70 10             	push   0x10(%eax)
40cfc6:	56                   	push   %esi
40cfc7:	e8 30 fd ff ff       	call   0x40ccfc
40cfcc:	a1 18 98 41 00       	mov    0x419818,%eax
40cfd1:	3d 22 00 10 00       	cmp    $0x100022,%eax
40cfd6:	74 29                	je     0x40d001
40cfd8:	3d 23 00 10 00       	cmp    $0x100023,%eax
40cfdd:	74 22                	je     0x40d001
40cfdf:	3d 20 00 04 00       	cmp    $0x40020,%eax
40cfe4:	74 1b                	je     0x40d001
40cfe6:	3d 24 00 10 00       	cmp    $0x100024,%eax
40cfeb:	74 14                	je     0x40d001
40cfed:	3d 31 00 00 04       	cmp    $0x4000031,%eax
40cff2:	74 0d                	je     0x40d001
40cff4:	8b 47 0c             	mov    0xc(%edi),%eax
40cff7:	33 c9                	xor    %ecx,%ecx
40cff9:	39 48 10             	cmp    %ecx,0x10(%eax)
40cffc:	0f 95 c1             	setne  %cl
40cfff:	eb 0c                	jmp    0x40d00d
40d001:	6a 00                	push   $0x0
40d003:	56                   	push   %esi
40d004:	8b cf                	mov    %edi,%ecx
40d006:	e8 61 fc ff ff       	call   0x40cc6c
40d00b:	33 c9                	xor    %ecx,%ecx
40d00d:	51                   	push   %ecx
40d00e:	68 0e 04 00 00       	push   $0x40e
40d013:	8b cf                	mov    %edi,%ecx
40d015:	e8 52 fc ff ff       	call   0x40cc6c
40d01a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d01d:	5f                   	pop    %edi
40d01e:	5e                   	pop    %esi
40d01f:	33 cd                	xor    %ebp,%ecx
40d021:	5b                   	pop    %ebx
40d022:	e8 b9 68 00 00       	call   0x4138e0
40d027:	c9                   	leave
40d028:	c2 04 00             	ret    $0x4
40d02b:	cc                   	int3
40d02c:	cc                   	int3
40d02d:	cc                   	int3
40d02e:	cc                   	int3
40d02f:	cc                   	int3
40d030:	8b ff                	mov    %edi,%edi
40d032:	55                   	push   %ebp
40d033:	8b ec                	mov    %esp,%ebp
40d035:	83 ec 50             	sub    $0x50,%esp
40d038:	53                   	push   %ebx
40d039:	56                   	push   %esi
40d03a:	8b f1                	mov    %ecx,%esi
40d03c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d03f:	0f b7 c1             	movzwl %cx,%eax
40d042:	8b d9                	mov    %ecx,%ebx
40d044:	57                   	push   %edi
40d045:	c1 eb 10             	shr    $0x10,%ebx
40d048:	33 ff                	xor    %edi,%edi
40d04a:	89 45 ec             	mov    %eax,-0x14(%ebp)
40d04d:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40d050:	83 e8 01             	sub    $0x1,%eax
40d053:	74 56                	je     0x40d0ab
40d055:	83 e8 01             	sub    $0x1,%eax
40d058:	0f 84 9a 01 00 00    	je     0x40d1f8
40d05e:	2d 29 04 00 00       	sub    $0x429,%eax
40d063:	74 17                	je     0x40d07c
40d065:	81 f9 ff 00 00 00    	cmp    $0xff,%ecx
40d06b:	75 07                	jne    0x40d074
40d06d:	8b ce                	mov    %esi,%ecx
40d06f:	e8 80 06 00 00       	call   0x40d6f4
40d074:	33 ff                	xor    %edi,%edi
40d076:	47                   	inc    %edi
40d077:	e9 8f 01 00 00       	jmp    0x40d20b
40d07c:	33 c0                	xor    %eax,%eax
40d07e:	66 3b c3             	cmp    %bx,%ax
40d081:	0f 85 84 01 00 00    	jne    0x40d20b
40d087:	68 2b 04 00 00       	push   $0x42b
40d08c:	8b ce                	mov    %esi,%ecx
40d08e:	e8 95 fc ff ff       	call   0x40cd28
40d093:	48                   	dec    %eax
40d094:	8b ce                	mov    %esi,%ecx
40d096:	f7 d8                	neg    %eax
40d098:	1b c0                	sbb    %eax,%eax
40d09a:	40                   	inc    %eax
40d09b:	50                   	push   %eax
40d09c:	68 0e 04 00 00       	push   $0x40e
40d0a1:	e8 c6 fb ff ff       	call   0x40cc6c
40d0a6:	e9 60 01 00 00       	jmp    0x40d20b
40d0ab:	33 c0                	xor    %eax,%eax
40d0ad:	66 3b c3             	cmp    %bx,%ax
40d0b0:	0f 85 55 01 00 00    	jne    0x40d20b
40d0b6:	68 d8 03 00 00       	push   $0x3d8
40d0bb:	57                   	push   %edi
40d0bc:	ff 76 0c             	push   0xc(%esi)
40d0bf:	e8 9d 70 00 00       	call   0x414161
40d0c4:	83 c4 0c             	add    $0xc,%esp
40d0c7:	8b ce                	mov    %esi,%ecx
40d0c9:	68 ec 03 00 00       	push   $0x3ec
40d0ce:	e8 55 fc ff ff       	call   0x40cd28
40d0d3:	68 25 04 00 00       	push   $0x425
40d0d8:	8d 48 ff             	lea    -0x1(%eax),%ecx
40d0db:	8b 46 0c             	mov    0xc(%esi),%eax
40d0de:	f7 d9                	neg    %ecx
40d0e0:	1b c9                	sbb    %ecx,%ecx
40d0e2:	41                   	inc    %ecx
40d0e3:	89 48 04             	mov    %ecx,0x4(%eax)
40d0e6:	8b ce                	mov    %esi,%ecx
40d0e8:	e8 3b fc ff ff       	call   0x40cd28
40d0ed:	68 26 04 00 00       	push   $0x426
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