40ee81:	50                   	push   %eax
40ee82:	57                   	push   %edi
40ee83:	ff 15 60 21 41 00    	call   *0x412160
40ee89:	6a 00                	push   $0x0
40ee8b:	5e                   	pop    %esi
40ee8c:	85 c0                	test   %eax,%eax
40ee8e:	0f 85 d8 fe ff ff    	jne    0x40ed6c
40ee94:	57                   	push   %edi
40ee95:	ff 15 00 22 41 00    	call   *0x412200
40ee9b:	8d 45 d8             	lea    -0x28(%ebp),%eax
40ee9e:	8b cb                	mov    %ebx,%ecx
40eea0:	50                   	push   %eax
40eea1:	e8 14 24 ff ff       	call   0x4012ba
40eea6:	8b 45 d8             	mov    -0x28(%ebp),%eax
40eea9:	85 c0                	test   %eax,%eax
40eeab:	74 1b                	je     0x40eec8
40eead:	8b 70 fc             	mov    -0x4(%eax),%esi
40eeb0:	6b fe 0c             	imul   $0xc,%esi,%edi
40eeb3:	03 f8                	add    %eax,%edi
40eeb5:	85 f6                	test   %esi,%esi
40eeb7:	74 0f                	je     0x40eec8
40eeb9:	83 ef 0c             	sub    $0xc,%edi
40eebc:	8b cf                	mov    %edi,%ecx
40eebe:	e8 f3 24 ff ff       	call   0x4013b6
40eec3:	83 ee 01             	sub    $0x1,%esi
40eec6:	75 f1                	jne    0x40eeb9
40eec8:	5f                   	pop    %edi
40eec9:	5e                   	pop    %esi
40eeca:	8b c3                	mov    %ebx,%eax
40eecc:	5b                   	pop    %ebx
40eecd:	c9                   	leave
40eece:	c3                   	ret
40eecf:	ff 32                	push   (%edx)
40eed1:	68 01 00 00 80       	push   $0x80000001
40eed6:	ff 15 70 20 41 00    	call   *0x412070
40eedc:	f7 d8                	neg    %eax
40eede:	1b c0                	sbb    %eax,%eax
40eee0:	40                   	inc    %eax
40eee1:	c3                   	ret
40eee2:	33 c0                	xor    %eax,%eax
40eee4:	39 01                	cmp    %eax,(%ecx)
40eee6:	0f 95 c0             	setne  %al
40eee9:	c3                   	ret
40eeea:	55                   	push   %ebp
40eeeb:	8b ec                	mov    %esp,%ebp
40eeed:	83 39 00             	cmpl   $0x0,(%ecx)
40eef0:	74 14                	je     0x40ef06
40eef2:	8b 45 08             	mov    0x8(%ebp),%eax
40eef5:	ff 30                	push   (%eax)
40eef7:	ff 31                	push   (%ecx)
40eef9:	ff 15 64 20 41 00    	call   *0x412064
40eeff:	85 c0                	test   %eax,%eax
40ef01:	75 03                	jne    0x40ef06
40ef03:	40                   	inc    %eax
40ef04:	eb 02                	jmp    0x40ef08
40ef06:	33 c0                	xor    %eax,%eax
40ef08:	5d                   	pop    %ebp
40ef09:	c2 04 00             	ret    $0x4
40ef0c:	55                   	push   %ebp
40ef0d:	8b ec                	mov    %esp,%ebp
40ef0f:	51                   	push   %ecx
40ef10:	8b 45 0c             	mov    0xc(%ebp),%eax
40ef13:	8d 55 fc             	lea    -0x4(%ebp),%edx
40ef16:	56                   	push   %esi
40ef17:	52                   	push   %edx
40ef18:	51                   	push   %ecx
40ef19:	33 f6                	xor    %esi,%esi
40ef1b:	56                   	push   %esi
40ef1c:	6a 01                	push   $0x1
40ef1e:	6a 01                	push   $0x1
40ef20:	56                   	push   %esi
40ef21:	56                   	push   %esi
40ef22:	ff 30                	push   (%eax)
40ef24:	89 75 fc             	mov    %esi,-0x4(%ebp)
40ef27:	68 01 00 00 80       	push   $0x80000001
40ef2c:	ff 15 6c 20 41 00    	call   *0x41206c
40ef32:	5e                   	pop    %esi
40ef33:	85 c0                	test   %eax,%eax
40ef35:	75 0a                	jne    0x40ef41
40ef37:	83 7d fc 01          	cmpl   $0x1,-0x4(%ebp)
40ef3b:	0f 94 c0             	sete   %al
40ef3e:	40                   	inc    %eax
40ef3f:	eb 02                	jmp    0x40ef43
40ef41:	33 c0                	xor    %eax,%eax
40ef43:	c9                   	leave
40ef44:	c2 10 00             	ret    $0x10
40ef47:	e9 00 00 00 00       	jmp    0x40ef4c
40ef4c:	56                   	push   %esi
40ef4d:	8b f1                	mov    %ecx,%esi
40ef4f:	83 3e 00             	cmpl   $0x0,(%esi)
40ef52:	74 08                	je     0x40ef5c
40ef54:	ff 36                	push   (%esi)
40ef56:	ff 15 20 20 41 00    	call   *0x412020
40ef5c:	83 26 00             	andl   $0x0,(%esi)
40ef5f:	5e                   	pop    %esi
40ef60:	c3                   	ret
40ef61:	55                   	push   %ebp
40ef62:	8b ec                	mov    %esp,%ebp
40ef64:	51                   	push   %ecx
40ef65:	51                   	push   %ecx
40ef66:	53                   	push   %ebx
40ef67:	8b 5d 08             	mov    0x8(%ebp),%ebx
40ef6a:	8d 45 fc             	lea    -0x4(%ebp),%eax
40ef6d:	56                   	push   %esi
40ef6e:	57                   	push   %edi
40ef6f:	50                   	push   %eax
40ef70:	8b f9                	mov    %ecx,%edi
40ef72:	8d 45 f8             	lea    -0x8(%ebp),%eax
40ef75:	33 c9                	xor    %ecx,%ecx
40ef77:	51                   	push   %ecx
40ef78:	50                   	push   %eax
40ef79:	51                   	push   %ecx
40ef7a:	ff 33                	push   (%ebx)
40ef7c:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40ef7f:	ff 37                	push   (%edi)
40ef81:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40ef84:	ff 15 18 20 41 00    	call   *0x412018
40ef8a:	85 c0                	test   %eax,%eax
40ef8c:	75 34                	jne    0x40efc2
40ef8e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ef91:	e8 45 6b ff ff       	call   0x405adb
40ef96:	8b f0                	mov    %eax,%esi
40ef98:	8d 45 fc             	lea    -0x4(%ebp),%eax
40ef9b:	50                   	push   %eax
40ef9c:	56                   	push   %esi
40ef9d:	8d 45 f8             	lea    -0x8(%ebp),%eax
40efa0:	50                   	push   %eax
40efa1:	6a 00                	push   $0x0
40efa3:	ff 33                	push   (%ebx)
40efa5:	ff 37                	push   (%edi)
40efa7:	ff 15 18 20 41 00    	call   *0x412018
40efad:	85 c0                	test   %eax,%eax
40efaf:	75 11                	jne    0x40efc2
40efb1:	ff 75 fc             	push   -0x4(%ebp)
40efb4:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40efb7:	56                   	push   %esi
40efb8:	e8 04 3e ff ff       	call   0x402dc1
40efbd:	33 c0                	xor    %eax,%eax
40efbf:	40                   	inc    %eax
40efc0:	eb 02                	jmp    0x40efc4
40efc2:	33 c0                	xor    %eax,%eax
40efc4:	5f                   	pop    %edi
40efc5:	5e                   	pop    %esi
40efc6:	5b                   	pop    %ebx
40efc7:	c9                   	leave
40efc8:	c2 08 00             	ret    $0x8
40efcb:	55                   	push   %ebp
40efcc:	8b ec                	mov    %esp,%ebp
40efce:	56                   	push   %esi
40efcf:	8b 31                	mov    (%ecx),%esi
40efd1:	85 f6                	test   %esi,%esi
40efd3:	74 22                	je     0x40eff7
40efd5:	8b 45 0c             	mov    0xc(%ebp),%eax
40efd8:	8b 48 04             	mov    0x4(%eax),%ecx
40efdb:	8b 10                	mov    (%eax),%edx
40efdd:	8b 45 08             	mov    0x8(%ebp),%eax
40efe0:	51                   	push   %ecx
40efe1:	52                   	push   %edx
40efe2:	ff 75 10             	push   0x10(%ebp)
40efe5:	6a 00                	push   $0x0
40efe7:	ff 30                	push   (%eax)
40efe9:	56                   	push   %esi
40efea:	ff 15 38 20 41 00    	call   *0x412038
40eff0:	85 c0                	test   %eax,%eax
40eff2:	75 03                	jne    0x40eff7
40eff4:	40                   	inc    %eax
40eff5:	eb 02                	jmp    0x40eff9
40eff7:	33 c0                	xor    %eax,%eax
40eff9:	5e                   	pop    %esi
40effa:	5d                   	pop    %ebp
40effb:	c2 0c 00             	ret    $0xc
40effe:	55                   	push   %ebp
40efff:	8b ec                	mov    %esp,%ebp
40f001:	53                   	push   %ebx
40f002:	56                   	push   %esi
40f003:	33 db                	xor    %ebx,%ebx
40f005:	8b f1                	mov    %ecx,%esi
40f007:	57                   	push   %edi
40f008:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f00b:	39 5d 14             	cmp    %ebx,0x14(%ebp)
40f00e:	74 33                	je     0x40f043
40f010:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f013:	8b d7                	mov    %edi,%edx
40f015:	e8 07 e7 ff ff       	call   0x40d721
40f01a:	85 c0                	test   %eax,%eax
40f01c:	75 25                	jne    0x40f043
40f01e:	8d 45 14             	lea    0x14(%ebp),%eax
40f021:	89 5d 14             	mov    %ebx,0x14(%ebp)
40f024:	50                   	push   %eax
40f025:	56                   	push   %esi
40f026:	53                   	push   %ebx
40f027:	ff 75 10             	push   0x10(%ebp)
40f02a:	53                   	push   %ebx
40f02b:	53                   	push   %ebx
40f02c:	53                   	push   %ebx
40f02d:	ff 37                	push   (%edi)
40f02f:	ff 75 08             	push   0x8(%ebp)
40f032:	ff 15 6c 20 41 00    	call   *0x41206c
40f038:	85 c0                	test   %eax,%eax
40f03a:	75 1e                	jne    0x40f05a
40f03c:	8b ce                	mov    %esi,%ecx
40f03e:	e8 09 ff ff ff       	call   0x40ef4c
40f043:	56                   	push   %esi
40f044:	ff 75 10             	push   0x10(%ebp)
40f047:	53                   	push   %ebx
40f048:	ff 37                	push   (%edi)
40f04a:	ff 75 08             	push   0x8(%ebp)
40f04d:	ff 15 14 20 41 00    	call   *0x412014
40f053:	85 c0                	test   %eax,%eax
40f055:	75 03                	jne    0x40f05a
40f057:	40                   	inc    %eax
40f058:	eb 02                	jmp    0x40f05c
40f05a:	33 c0                	xor    %eax,%eax
40f05c:	5f                   	pop    %edi
40f05d:	5e                   	pop    %esi
40f05e:	5b                   	pop    %ebx
40f05f:	5d                   	pop    %ebp
40f060:	c2 10 00             	ret    $0x10
40f063:	83 21 00             	andl   $0x0,(%ecx)
40f066:	8b c1                	mov    %ecx,%eax
40f068:	c3                   	ret
40f069:	56                   	push   %esi
40f06a:	8b f1                	mov    %ecx,%esi
40f06c:	57                   	push   %edi
40f06d:	33 ff                	xor    %edi,%edi
40f06f:	39 3e                	cmp    %edi,(%esi)
40f071:	74 05                	je     0x40f078
40f073:	e8 d4 fe ff ff       	call   0x40ef4c
40f078:	8d 4e 30             	lea    0x30(%esi),%ecx
40f07b:	e8 1e 67 ff ff       	call   0x40579e
40f080:	8b 4e 20             	mov    0x20(%esi),%ecx
40f083:	e8 a5 69 ff ff       	call   0x405a2d
40f088:	89 7e 20             	mov    %edi,0x20(%esi)
40f08b:	8b 4e 1c             	mov    0x1c(%esi),%ecx
40f08e:	e8 9a 69 ff ff       	call   0x405a2d
40f093:	89 7e 1c             	mov    %edi,0x1c(%esi)
40f096:	8b 4e 18             	mov    0x18(%esi),%ecx
40f099:	e8 8f 69 ff ff       	call   0x405a2d
40f09e:	89 7e 18             	mov    %edi,0x18(%esi)
40f0a1:	8b 4e 14             	mov    0x14(%esi),%ecx
40f0a4:	e8 84 69 ff ff       	call   0x405a2d
40f0a9:	89 7e 14             	mov    %edi,0x14(%esi)
40f0ac:	8b 4e 10             	mov    0x10(%esi),%ecx
40f0af:	e8 79 69 ff ff       	call   0x405a2d
40f0b4:	8d 4e 04             	lea    0x4(%esi),%ecx
40f0b7:	89 7e 10             	mov    %edi,0x10(%esi)
40f0ba:	e8 8d fe ff ff       	call   0x40ef4c
40f0bf:	5f                   	pop    %edi
40f0c0:	8b ce                	mov    %esi,%ecx
40f0c2:	5e                   	pop    %esi
40f0c3:	e9 84 fe ff ff       	jmp    0x40ef4c
40f0c8:	55                   	push   %ebp
40f0c9:	8b ec                	mov    %esp,%ebp
40f0cb:	83 ec 14             	sub    $0x14,%esp
40f0ce:	53                   	push   %ebx
40f0cf:	56                   	push   %esi
40f0d0:	57                   	push   %edi
40f0d1:	8b f9                	mov    %ecx,%edi
40f0d3:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40f0d6:	e8 4a e3 ff ff       	call   0x40d425
40f0db:	6a 0a                	push   $0xa
40f0dd:	5a                   	pop    %edx
40f0de:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f0e1:	e8 ee 41 ff ff       	call   0x4032d4
40f0e6:	51                   	push   %ecx
40f0e7:	51                   	push   %ecx
40f0e8:	8d 47 10             	lea    0x10(%edi),%eax
40f0eb:	50                   	push   %eax
40f0ec:	51                   	push   %ecx
40f0ed:	8b cf                	mov    %edi,%ecx
40f0ef:	e8 18 fe ff ff       	call   0x40ef0c
40f0f4:	8b cf                	mov    %edi,%ecx
40f0f6:	8b f0                	mov    %eax,%esi
40f0f8:	e8 4f fe ff ff       	call   0x40ef4c
40f0fd:	33 db                	xor    %ebx,%ebx
40f0ff:	85 f6                	test   %esi,%esi
40f101:	0f 84 be 00 00 00    	je     0x40f1c5
40f107:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40f10a:	0f 84 b5 00 00 00    	je     0x40f1c5
40f110:	8b 57 0c             	mov    0xc(%edi),%edx
40f113:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40f116:	8d 77 20             	lea    0x20(%edi),%esi
40f119:	e8 3d e6 ff ff       	call   0x40d75b
40f11e:	50                   	push   %eax
40f11f:	8b ce                	mov    %esi,%ecx
40f121:	e8 3e 41 ff ff       	call   0x403264
40f126:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40f129:	e8 ff 68 ff ff       	call   0x405a2d
40f12e:	8b ce                	mov    %esi,%ecx
40f130:	e8 da e5 ff ff       	call   0x40d70f
40f135:	8d 47 4c             	lea    0x4c(%edi),%eax
40f138:	50                   	push   %eax
40f139:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40f13c:	e8 19 43 ff ff       	call   0x40345a
40f141:	68 44 26 41 00       	push   $0x412644
40f146:	8b ce                	mov    %esi,%ecx
40f148:	e8 4a 41 ff ff       	call   0x403297
40f14d:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40f150:	51                   	push   %ecx
40f151:	8b c8                	mov    %eax,%ecx
40f153:	e8 0a 40 ff ff       	call   0x403162
40f158:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40f15b:	e8 cd 68 ff ff       	call   0x405a2d
40f160:	53                   	push   %ebx
40f161:	ff 36                	push   (%esi)
40f163:	ff 75 fc             	push   -0x4(%ebp)
40f166:	ff 15 34 21 41 00    	call   *0x412134
40f16c:	85 c0                	test   %eax,%eax
40f16e:	0f 84 20 01 00 00    	je     0x40f294
40f174:	51                   	push   %ecx
40f175:	51                   	push   %ecx
40f176:	54                   	push   %esp
40f177:	8b ce                	mov    %esi,%ecx
40f179:	e8 d0 3e ff ff       	call   0x40304e
40f17e:	51                   	push   %ecx
40f17f:	51                   	push   %ecx
40f180:	54                   	push   %esp
40f181:	8d 4f 30             	lea    0x30(%edi),%ecx
40f184:	e8 1c 63 ff ff       	call   0x4054a5
40f189:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40f18c:	e8 a1 6a ff ff       	call   0x405c32
40f191:	83 c4 10             	add    $0x10,%esp
40f194:	8d 77 10             	lea    0x10(%edi),%esi
40f197:	8b cf                	mov    %edi,%ecx
40f199:	53                   	push   %ebx
40f19a:	68 3f 00 0f 00       	push   $0xf003f
40f19f:	56                   	push   %esi
40f1a0:	68 01 00 00 80       	push   $0x80000001
40f1a5:	e8 54 fe ff ff       	call   0x40effe
40f1aa:	6a 03                	push   $0x3
40f1ac:	8d 45 f4             	lea    -0xc(%ebp),%eax
40f1af:	8b cf                	mov    %edi,%ecx
40f1b1:	50                   	push   %eax
40f1b2:	8d 47 18             	lea    0x18(%edi),%eax
40f1b5:	50                   	push   %eax
40f1b6:	e8 10 fe ff ff       	call   0x40efcb
40f1bb:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40f1be:	e8 a3 3c ff ff       	call   0x402e66
40f1c3:	eb 03                	jmp    0x40f1c8
40f1c5:	8d 77 10             	lea    0x10(%edi),%esi
40f1c8:	39 1f                	cmp    %ebx,(%edi)
40f1ca:	75 13                	jne    0x40f1df
40f1cc:	53                   	push   %ebx
40f1cd:	68 3f 00 0f 00       	push   $0xf003f
40f1d2:	56                   	push   %esi
40f1d3:	68 01 00 00 80       	push   $0x80000001
40f1d8:	8b cf                	mov    %edi,%ecx
40f1da:	e8 1f fe ff ff       	call   0x40effe
40f1df:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
40f1e2:	74 73                	je     0x40f257