405dfb:	2b c1                	sub    %ecx,%eax
405dfd:	c1 f8 02             	sar    $0x2,%eax
405e00:	8b 75 08             	mov    0x8(%ebp),%esi
405e03:	3b f0                	cmp    %eax,%esi
405e05:	76 5a                	jbe    0x405e61
405e07:	81 fe ff ff ff 3f    	cmp    $0x3fffffff,%esi
405e0d:	77 7c                	ja     0x405e8b
405e0f:	56                   	push   %esi
405e10:	8b cf                	mov    %edi,%ecx
405e12:	e8 cc 0e 01 00       	call   0x416ce3
405e17:	89 45 08             	mov    %eax,0x8(%ebp)
405e1a:	50                   	push   %eax
405e1b:	8b cf                	mov    %edi,%ecx
405e1d:	e8 53 95 01 00       	call   0x41f375
405e22:	89 45 ec             	mov    %eax,-0x14(%ebp)
405e25:	8d 0c 98             	lea    (%eax,%ebx,4),%ecx
405e28:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405e2c:	ff 75 0c             	push   0xc(%ebp)
405e2f:	ff 75 10             	push   0x10(%ebp)
405e32:	8b c6                	mov    %esi,%eax
405e34:	2b c3                	sub    %ebx,%eax
405e36:	50                   	push   %eax
405e37:	51                   	push   %ecx
405e38:	e8 48 08 00 00       	call   0x406685
405e3d:	57                   	push   %edi
405e3e:	8b 5d ec             	mov    -0x14(%ebp),%ebx
405e41:	53                   	push   %ebx
405e42:	ff 77 04             	push   0x4(%edi)
405e45:	ff 37                	push   (%edi)
405e47:	e8 5a 08 00 00       	call   0x4066a6
405e4c:	83 c4 20             	add    $0x20,%esp
405e4f:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405e53:	ff 75 08             	push   0x8(%ebp)
405e56:	56                   	push   %esi
405e57:	53                   	push   %ebx
405e58:	8b cf                	mov    %edi,%ecx
405e5a:	e8 f7 10 01 00       	call   0x416f56
405e5f:	eb 22                	jmp    0x405e83
405e61:	3b f3                	cmp    %ebx,%esi
405e63:	76 16                	jbe    0x405e7b
405e65:	ff 75 0c             	push   0xc(%ebp)
405e68:	ff 75 10             	push   0x10(%ebp)
405e6b:	2b f3                	sub    %ebx,%esi
405e6d:	56                   	push   %esi
405e6e:	ff 77 04             	push   0x4(%edi)
405e71:	e8 0f 08 00 00       	call   0x406685
405e76:	83 c4 10             	add    $0x10,%esp
405e79:	eb 05                	jmp    0x405e80
405e7b:	74 06                	je     0x405e83
405e7d:	8d 04 b1             	lea    (%ecx,%esi,4),%eax
405e80:	89 47 04             	mov    %eax,0x4(%edi)
405e83:	e8 8b 9b 03 00       	call   0x43fa13
405e88:	c2 0c 00             	ret    $0xc
405e8b:	e8 a8 78 01 00       	call   0x41d738
405e90:	ff 75 08             	push   0x8(%ebp)
405e93:	ff 75 ec             	push   -0x14(%ebp)
405e96:	8b 4d e8             	mov    -0x18(%ebp),%ecx
405e99:	e8 78 38 01 00       	call   0x419716
405e9e:	8b c8                	mov    %eax,%ecx
405ea0:	e8 6b 9d 01 00       	call   0x41fc10
405ea5:	6a 00                	push   $0x0
405ea7:	6a 00                	push   $0x0
405ea9:	e8 14 e3 03 00       	call   0x4441c2
405eae:	cc                   	int3
405eaf:	6a 0c                	push   $0xc
405eb1:	b8 c3 a4 48 00       	mov    $0x48a4c3,%eax
405eb6:	e8 fa 9b 03 00       	call   0x43fab5
405ebb:	8b f9                	mov    %ecx,%edi
405ebd:	89 7d e8             	mov    %edi,-0x18(%ebp)
405ec0:	8b 47 04             	mov    0x4(%edi),%eax
405ec3:	2b 07                	sub    (%edi),%eax
405ec5:	99                   	cltd
405ec6:	6a 0c                	push   $0xc
405ec8:	59                   	pop    %ecx
405ec9:	f7 f9                	idiv   %ecx
405ecb:	8b d8                	mov    %eax,%ebx
405ecd:	8b 47 08             	mov    0x8(%edi),%eax
405ed0:	2b 07                	sub    (%edi),%eax
405ed2:	99                   	cltd
405ed3:	f7 f9                	idiv   %ecx
405ed5:	8b 75 08             	mov    0x8(%ebp),%esi
405ed8:	3b f0                	cmp    %eax,%esi
405eda:	76 59                	jbe    0x405f35
405edc:	81 fe 55 55 55 15    	cmp    $0x15555555,%esi
405ee2:	77 7a                	ja     0x405f5e
405ee4:	56                   	push   %esi
405ee5:	8b cf                	mov    %edi,%ecx
405ee7:	e8 1a 0f 01 00       	call   0x416e06
405eec:	89 45 08             	mov    %eax,0x8(%ebp)
405eef:	50                   	push   %eax
405ef0:	8b cf                	mov    %edi,%ecx
405ef2:	e8 80 95 01 00       	call   0x41f477
405ef7:	89 45 ec             	mov    %eax,-0x14(%ebp)
405efa:	6b cb 0c             	imul   $0xc,%ebx,%ecx
405efd:	03 c8                	add    %eax,%ecx
405eff:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405f03:	ff 75 0c             	push   0xc(%ebp)
405f06:	8b c6                	mov    %esi,%eax
405f08:	2b c3                	sub    %ebx,%eax
405f0a:	50                   	push   %eax
405f0b:	51                   	push   %ecx
405f0c:	e8 d0 0b 00 00       	call   0x406ae1
405f11:	57                   	push   %edi
405f12:	8b 5d ec             	mov    -0x14(%ebp),%ebx
405f15:	53                   	push   %ebx
405f16:	ff 77 04             	push   0x4(%edi)
405f19:	ff 37                	push   (%edi)
405f1b:	e8 47 08 00 00       	call   0x406767
405f20:	83 c4 1c             	add    $0x1c,%esp
405f23:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405f27:	ff 75 08             	push   0x8(%ebp)
405f2a:	56                   	push   %esi
405f2b:	53                   	push   %ebx
405f2c:	8b cf                	mov    %edi,%ecx
405f2e:	e8 e2 11 01 00       	call   0x417115
405f33:	eb 21                	jmp    0x405f56
405f35:	3b f3                	cmp    %ebx,%esi
405f37:	76 13                	jbe    0x405f4c
405f39:	ff 75 0c             	push   0xc(%ebp)
405f3c:	2b f3                	sub    %ebx,%esi
405f3e:	56                   	push   %esi
405f3f:	ff 77 04             	push   0x4(%edi)
405f42:	e8 9a 0b 00 00       	call   0x406ae1
405f47:	83 c4 0c             	add    $0xc,%esp
405f4a:	eb 07                	jmp    0x405f53
405f4c:	74 08                	je     0x405f56
405f4e:	6b c6 0c             	imul   $0xc,%esi,%eax
405f51:	03 07                	add    (%edi),%eax
405f53:	89 47 04             	mov    %eax,0x4(%edi)
405f56:	e8 b8 9a 03 00       	call   0x43fa13
405f5b:	c2 08 00             	ret    $0x8
405f5e:	e8 2d 78 01 00       	call   0x41d790
405f63:	ff 75 08             	push   0x8(%ebp)
405f66:	ff 75 ec             	push   -0x14(%ebp)
405f69:	8b 4d e8             	mov    -0x18(%ebp),%ecx
405f6c:	e8 b4 37 01 00       	call   0x419725
405f71:	8b c8                	mov    %eax,%ecx
405f73:	e8 3c 9d 01 00       	call   0x41fcb4
405f78:	6a 00                	push   $0x0
405f7a:	6a 00                	push   $0x0
405f7c:	e8 41 e2 03 00       	call   0x4441c2
405f81:	cc                   	int3
405f82:	55                   	push   %ebp
405f83:	8b ec                	mov    %esp,%ebp
405f85:	8b 45 0c             	mov    0xc(%ebp),%eax
405f88:	3b 45 14             	cmp    0x14(%ebp),%eax
405f8b:	75 17                	jne    0x405fa4
405f8d:	50                   	push   %eax
405f8e:	ff 75 10             	push   0x10(%ebp)
405f91:	ff 75 08             	push   0x8(%ebp)
405f94:	e8 39 b6 03 00       	call   0x4415d2
405f99:	83 c4 0c             	add    $0xc,%esp
405f9c:	85 c0                	test   %eax,%eax
405f9e:	75 04                	jne    0x405fa4
405fa0:	b0 01                	mov    $0x1,%al
405fa2:	5d                   	pop    %ebp
405fa3:	c3                   	ret
405fa4:	32 c0                	xor    %al,%al
405fa6:	5d                   	pop    %ebp
405fa7:	c3                   	ret
405fa8:	55                   	push   %ebp
405fa9:	8b ec                	mov    %esp,%ebp
405fab:	8b 45 0c             	mov    0xc(%ebp),%eax
405fae:	3b 45 14             	cmp    0x14(%ebp),%eax
405fb1:	75 17                	jne    0x405fca
405fb3:	50                   	push   %eax
405fb4:	ff 75 10             	push   0x10(%ebp)
405fb7:	ff 75 08             	push   0x8(%ebp)
405fba:	e8 3e 9a 01 00       	call   0x41f9fd
405fbf:	83 c4 0c             	add    $0xc,%esp
405fc2:	85 c0                	test   %eax,%eax
405fc4:	75 04                	jne    0x405fca
405fc6:	b0 01                	mov    $0x1,%al
405fc8:	5d                   	pop    %ebp
405fc9:	c3                   	ret
405fca:	32 c0                	xor    %al,%al
405fcc:	5d                   	pop    %ebp
405fcd:	c3                   	ret
405fce:	55                   	push   %ebp
405fcf:	8b ec                	mov    %esp,%ebp
405fd1:	8b 55 0c             	mov    0xc(%ebp),%edx
405fd4:	53                   	push   %ebx
405fd5:	56                   	push   %esi
405fd6:	57                   	push   %edi
405fd7:	8b 7d 18             	mov    0x18(%ebp),%edi
405fda:	3b fa                	cmp    %edx,%edi
405fdc:	77 5d                	ja     0x40603b
405fde:	8b 75 10             	mov    0x10(%ebp),%esi
405fe1:	8b ca                	mov    %edx,%ecx
405fe3:	2b cf                	sub    %edi,%ecx
405fe5:	3b f1                	cmp    %ecx,%esi
405fe7:	77 52                	ja     0x40603b
405fe9:	85 ff                	test   %edi,%edi
405feb:	75 04                	jne    0x405ff1
405fed:	8b c6                	mov    %esi,%eax
405fef:	eb 4d                	jmp    0x40603e
405ff1:	8b 5d 08             	mov    0x8(%ebp),%ebx
405ff4:	42                   	inc    %edx
405ff5:	8b c3                	mov    %ebx,%eax
405ff7:	2b c7                	sub    %edi,%eax
405ff9:	03 d0                	add    %eax,%edx
405ffb:	8b 45 14             	mov    0x14(%ebp),%eax
405ffe:	8d 0c 33             	lea    (%ebx,%esi,1),%ecx
406001:	89 55 18             	mov    %edx,0x18(%ebp)
406004:	2b d1                	sub    %ecx,%edx
406006:	52                   	push   %edx
406007:	0f be 30             	movsbl (%eax),%esi
40600a:	56                   	push   %esi
40600b:	89 75 0c             	mov    %esi,0xc(%ebp)
40600e:	51                   	push   %ecx
40600f:	eb 1c                	jmp    0x40602d
406011:	57                   	push   %edi
406012:	ff 75 14             	push   0x14(%ebp)
406015:	56                   	push   %esi
406016:	e8 b7 b5 03 00       	call   0x4415d2
40601b:	83 c4 0c             	add    $0xc,%esp
40601e:	85 c0                	test   %eax,%eax
406020:	74 21                	je     0x406043
406022:	8b 45 18             	mov    0x18(%ebp),%eax
406025:	46                   	inc    %esi
406026:	2b c6                	sub    %esi,%eax
406028:	50                   	push   %eax
406029:	ff 75 0c             	push   0xc(%ebp)
40602c:	56                   	push   %esi
40602d:	e8 fe b3 03 00       	call   0x441430
406032:	8b f0                	mov    %eax,%esi
406034:	83 c4 0c             	add    $0xc,%esp
406037:	85 f6                	test   %esi,%esi
406039:	75 d6                	jne    0x406011
40603b:	83 c8 ff             	or     $0xffffffff,%eax
40603e:	5f                   	pop    %edi
40603f:	5e                   	pop    %esi
406040:	5b                   	pop    %ebx
406041:	5d                   	pop    %ebp
406042:	c3                   	ret
406043:	2b f3                	sub    %ebx,%esi
406045:	eb a6                	jmp    0x405fed
406047:	55                   	push   %ebp
406048:	8b ec                	mov    %esp,%ebp
40604a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40604d:	53                   	push   %ebx
40604e:	56                   	push   %esi
40604f:	57                   	push   %edi
406050:	8b 7d 18             	mov    0x18(%ebp),%edi
406053:	3b f9                	cmp    %ecx,%edi
406055:	77 55                	ja     0x4060ac
406057:	8b 45 10             	mov    0x10(%ebp),%eax
40605a:	2b cf                	sub    %edi,%ecx
40605c:	3b c1                	cmp    %ecx,%eax
40605e:	77 4c                	ja     0x4060ac
406060:	85 ff                	test   %edi,%edi
406062:	74 4b                	je     0x4060af
406064:	8b 5d 08             	mov    0x8(%ebp),%ebx
406067:	41                   	inc    %ecx
406068:	ff 75 14             	push   0x14(%ebp)
40606b:	8d 14 4b             	lea    (%ebx,%ecx,2),%edx
40606e:	8d 0c 43             	lea    (%ebx,%eax,2),%ecx
406071:	89 55 18             	mov    %edx,0x18(%ebp)
406074:	8b c2                	mov    %edx,%eax
406076:	2b c1                	sub    %ecx,%eax
406078:	d1 f8                	sar    $1,%eax
40607a:	50                   	push   %eax
40607b:	51                   	push   %ecx
40607c:	eb 20                	jmp    0x40609e
40607e:	57                   	push   %edi
40607f:	ff 75 14             	push   0x14(%ebp)
406082:	56                   	push   %esi
406083:	e8 75 99 01 00       	call   0x41f9fd
406088:	83 c4 0c             	add    $0xc,%esp
40608b:	85 c0                	test   %eax,%eax
40608d:	74 25                	je     0x4060b4
40608f:	8b 45 18             	mov    0x18(%ebp),%eax
406092:	83 c6 02             	add    $0x2,%esi
406095:	ff 75 14             	push   0x14(%ebp)
406098:	2b c6                	sub    %esi,%eax
40609a:	d1 f8                	sar    $1,%eax
40609c:	50                   	push   %eax
40609d:	56                   	push   %esi
40609e:	e8 2d ae 01 00       	call   0x420ed0
4060a3:	8b f0                	mov    %eax,%esi
4060a5:	83 c4 0c             	add    $0xc,%esp
4060a8:	85 f6                	test   %esi,%esi
4060aa:	75 d2                	jne    0x40607e
4060ac:	83 c8 ff             	or     $0xffffffff,%eax
4060af:	5f                   	pop    %edi
4060b0:	5e                   	pop    %esi
4060b1:	5b                   	pop    %ebx
4060b2:	5d                   	pop    %ebp
4060b3:	c3                   	ret
4060b4:	2b f3                	sub    %ebx,%esi
4060b6:	d1 fe                	sar    $1,%esi
4060b8:	8b c6                	mov    %esi,%eax
4060ba:	eb f3                	jmp    0x4060af
4060bc:	55                   	push   %ebp
4060bd:	8b ec                	mov    %esp,%ebp
4060bf:	81 ec 0c 01 00 00    	sub    $0x10c,%esp
4060c5:	a1 94 80 4b 00       	mov    0x4b8094,%eax
4060ca:	33 c5                	xor    %ebp,%eax
4060cc:	89 45 fc             	mov    %eax,-0x4(%ebp)
4060cf:	8b 45 14             	mov    0x14(%ebp),%eax
4060d2:	53                   	push   %ebx
4060d3:	56                   	push   %esi
4060d4:	8b 75 18             	mov    0x18(%ebp),%esi
4060d7:	89 85 f8 fe ff ff    	mov    %eax,-0x108(%ebp)
4060dd:	57                   	push   %edi
4060de:	8b 7d 08             	mov    0x8(%ebp),%edi
4060e1:	85 f6                	test   %esi,%esi
4060e3:	0f 84 8f 00 00 00    	je     0x406178
4060e9:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4060ec:	85 db                	test   %ebx,%ebx
4060ee:	0f 84 84 00 00 00    	je     0x406178
4060f4:	68 00 01 00 00       	push   $0x100
4060f9:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
4060ff:	6a 00                	push   $0x0
406101:	50                   	push   %eax
406102:	e8 59 dd 03 00       	call   0x443e60
406107:	8b 8d f8 fe ff ff    	mov    -0x108(%ebp),%ecx
40610d:	83 c4 0c             	add    $0xc,%esp
406110:	8d 04 71             	lea    (%ecx,%esi,2),%eax
406113:	50                   	push   %eax
406114:	51                   	push   %ecx
406115:	8d 8d fc fe ff ff    	lea    -0x104(%ebp),%ecx
40611b:	e8 64 56 01 00       	call   0x41b784
406120:	84 c0                	test   %al,%al
406122:	75 22                	jne    0x406146
406124:	88 85 f4 fe ff ff    	mov    %al,-0x10c(%ebp)
40612a:	ff b5 f4 fe ff ff    	push   -0x10c(%ebp)
406130:	56                   	push   %esi
406131:	ff b5 f8 fe ff ff    	push   -0x108(%ebp)
406137:	ff 75 10             	push   0x10(%ebp)
40613a:	53                   	push   %ebx
40613b:	57                   	push   %edi
40613c:	e8 49 00 00 00       	call   0x40618a
406141:	83 c4 18             	add    $0x18,%esp
406144:	eb 35                	jmp    0x40617b
406146:	8b 4d 10             	mov    0x10(%ebp),%ecx
406149:	8d 43 ff             	lea    -0x1(%ebx),%eax
40614c:	3b c1                	cmp    %ecx,%eax
40614e:	0f 42 c8             	cmovb  %eax,%ecx
406151:	8d 34 4f             	lea    (%edi,%ecx,2),%esi
406154:	eb 07                	jmp    0x40615d
406156:	3b f7                	cmp    %edi,%esi
406158:	74 1e                	je     0x406178
40615a:	83 ee 02             	sub    $0x2,%esi
40615d:	0f b7 06             	movzwl (%esi),%eax
406160:	8d 8d fc fe ff ff    	lea    -0x104(%ebp),%ecx
406166:	50                   	push   %eax
406167:	e8 48 56 01 00       	call   0x41b7b4
40616c:	84 c0                	test   %al,%al
40616e:	74 e6                	je     0x406156