404e7c:	ff 35 30 81 42 00    	push   0x428130
404e82:	e8 44 db ff ff       	call   0x4029cb
404e87:	8b 44 24 04          	mov    0x4(%esp),%eax
404e8b:	c2 20 00             	ret    $0x20
404e8e:	53                   	push   %ebx
404e8f:	55                   	push   %ebp
404e90:	56                   	push   %esi
404e91:	57                   	push   %edi
404e92:	8b f9                	mov    %ecx,%edi
404e94:	8d 4c 24 18          	lea    0x18(%esp),%ecx
404e98:	e8 31 e3 ff ff       	call   0x4031ce
404e9d:	8b cf                	mov    %edi,%ecx
404e9f:	8b d8                	mov    %eax,%ebx
404ea1:	8b ea                	mov    %edx,%ebp
404ea3:	e8 77 fd ff ff       	call   0x404c1f
404ea8:	85 c0                	test   %eax,%eax
404eaa:	74 16                	je     0x404ec2
404eac:	8b cf                	mov    %edi,%ecx
404eae:	e8 6c fd ff ff       	call   0x404c1f
404eb3:	39 47 38             	cmp    %eax,0x38(%edi)
404eb6:	73 0a                	jae    0x404ec2
404eb8:	8b cf                	mov    %edi,%ecx
404eba:	e8 60 fd ff ff       	call   0x404c1f
404ebf:	89 47 38             	mov    %eax,0x38(%edi)
404ec2:	8b 35 34 81 42 00    	mov    0x428134,%esi
404ec8:	3b 1d 30 81 42 00    	cmp    0x428130,%ebx
404ece:	75 08                	jne    0x404ed8
404ed0:	3b ee                	cmp    %esi,%ebp
404ed2:	0f 84 07 01 00 00    	je     0x404fdf
404ed8:	f6 44 24 30 01       	testb  $0x1,0x30(%esp)
404edd:	0f 84 9d 00 00 00    	je     0x404f80
404ee3:	8b cf                	mov    %edi,%ecx
404ee5:	e8 6a f8 ff ff       	call   0x404754
404eea:	85 c0                	test   %eax,%eax
404eec:	0f 84 8e 00 00 00    	je     0x404f80
404ef2:	85 ed                	test   %ebp,%ebp
404ef4:	0f 8c dd 00 00 00    	jl     0x404fd7
404efa:	7f 08                	jg     0x404f04
404efc:	85 db                	test   %ebx,%ebx
404efe:	0f 82 d3 00 00 00    	jb     0x404fd7
404f04:	8b cf                	mov    %edi,%ecx
404f06:	e8 57 f6 ff ff       	call   0x404562
404f0b:	8b 4f 38             	mov    0x38(%edi),%ecx
404f0e:	2b c8                	sub    %eax,%ecx
404f10:	d1 f9                	sar    $1,%ecx
404f12:	8b c1                	mov    %ecx,%eax
404f14:	99                   	cltd
404f15:	3b ea                	cmp    %edx,%ebp
404f17:	0f 8f ba 00 00 00    	jg     0x404fd7
404f1d:	7c 08                	jl     0x404f27
404f1f:	3b d8                	cmp    %eax,%ebx
404f21:	0f 87 b0 00 00 00    	ja     0x404fd7
404f27:	8b cf                	mov    %edi,%ecx
404f29:	e8 34 f6 ff ff       	call   0x404562
404f2e:	8b cf                	mov    %edi,%ecx
404f30:	8b f0                	mov    %eax,%esi
404f32:	e8 1d f8 ff ff       	call   0x404754
404f37:	2b f0                	sub    %eax,%esi
404f39:	8b cf                	mov    %edi,%ecx
404f3b:	d1 fe                	sar    $1,%esi
404f3d:	03 f3                	add    %ebx,%esi
404f3f:	56                   	push   %esi
404f40:	e8 d3 f7 ff ff       	call   0x404718
404f45:	f6 44 24 30 02       	testb  $0x2,0x30(%esp)
404f4a:	0f 84 8f 00 00 00    	je     0x404fdf
404f50:	8b cf                	mov    %edi,%ecx
404f52:	e8 c8 fc ff ff       	call   0x404c1f
404f57:	85 c0                	test   %eax,%eax
404f59:	0f 84 80 00 00 00    	je     0x404fdf
404f5f:	8b cf                	mov    %edi,%ecx
404f61:	e8 22 f6 ff ff       	call   0x404588
404f66:	50                   	push   %eax
404f67:	8b cf                	mov    %edi,%ecx
404f69:	e8 e6 f7 ff ff       	call   0x404754
404f6e:	50                   	push   %eax
404f6f:	8b cf                	mov    %edi,%ecx
404f71:	e8 62 fc ff ff       	call   0x404bd8
404f76:	50                   	push   %eax
404f77:	8b cf                	mov    %edi,%ecx
404f79:	e8 cd 00 00 00       	call   0x40504b
404f7e:	eb 5f                	jmp    0x404fdf
404f80:	f6 44 24 30 02       	testb  $0x2,0x30(%esp)
404f85:	74 50                	je     0x404fd7
404f87:	8b cf                	mov    %edi,%ecx
404f89:	e8 91 fc ff ff       	call   0x404c1f
404f8e:	85 c0                	test   %eax,%eax
404f90:	74 45                	je     0x404fd7
404f92:	85 ed                	test   %ebp,%ebp
404f94:	7c 41                	jl     0x404fd7
404f96:	7f 04                	jg     0x404f9c
404f98:	85 db                	test   %ebx,%ebx
404f9a:	72 3b                	jb     0x404fd7
404f9c:	8b cf                	mov    %edi,%ecx
404f9e:	e8 bf f5 ff ff       	call   0x404562
404fa3:	8b 4f 38             	mov    0x38(%edi),%ecx
404fa6:	2b c8                	sub    %eax,%ecx
404fa8:	d1 f9                	sar    $1,%ecx
404faa:	8b c1                	mov    %ecx,%eax
404fac:	99                   	cltd
404fad:	3b ea                	cmp    %edx,%ebp
404faf:	7f 26                	jg     0x404fd7
404fb1:	7c 04                	jl     0x404fb7
404fb3:	3b d8                	cmp    %eax,%ebx
404fb5:	77 20                	ja     0x404fd7
404fb7:	8b cf                	mov    %edi,%ecx
404fb9:	e8 a4 f5 ff ff       	call   0x404562
404fbe:	8b cf                	mov    %edi,%ecx
404fc0:	8b f0                	mov    %eax,%esi
404fc2:	e8 58 fc ff ff       	call   0x404c1f
404fc7:	2b f0                	sub    %eax,%esi
404fc9:	8b cf                	mov    %edi,%ecx
404fcb:	d1 fe                	sar    $1,%esi
404fcd:	03 f3                	add    %ebx,%esi
404fcf:	56                   	push   %esi
404fd0:	e8 09 fc ff ff       	call   0x404bde
404fd5:	eb 08                	jmp    0x404fdf
404fd7:	8b 1d 30 81 42 00    	mov    0x428130,%ebx
404fdd:	8b ee                	mov    %esi,%ebp
404fdf:	8b 4c 24 14          	mov    0x14(%esp),%ecx
404fe3:	55                   	push   %ebp
404fe4:	53                   	push   %ebx
404fe5:	e8 e1 d9 ff ff       	call   0x4029cb
404fea:	8b 44 24 14          	mov    0x14(%esp),%eax
404fee:	5f                   	pop    %edi
404fef:	5e                   	pop    %esi
404ff0:	5d                   	pop    %ebp
404ff1:	5b                   	pop    %ebx
404ff2:	c2 20 00             	ret    $0x20
404ff5:	55                   	push   %ebp
404ff6:	8b ec                	mov    %esp,%ebp
404ff8:	51                   	push   %ecx
404ff9:	8b d1                	mov    %ecx,%edx
404ffb:	8d 4d ff             	lea    -0x1(%ebp),%ecx
404ffe:	e8 12 00 00 00       	call   0x405015
405003:	8b 4d 08             	mov    0x8(%ebp),%ecx
405006:	50                   	push   %eax
405007:	e8 c3 ce ff ff       	call   0x401ecf
40500c:	8b 45 08             	mov    0x8(%ebp),%eax
40500f:	8b e5                	mov    %ebp,%esp
405011:	5d                   	pop    %ebp
405012:	c2 08 00             	ret    $0x8
405015:	56                   	push   %esi
405016:	52                   	push   %edx
405017:	8b f1                	mov    %ecx,%esi
405019:	e8 08 d6 ff ff       	call   0x402626
40501e:	8b c6                	mov    %esi,%eax
405020:	5e                   	pop    %esi
405021:	c3                   	ret
405022:	8b c1                	mov    %ecx,%eax
405024:	c2 0c 00             	ret    $0xc
405027:	8b 51 0c             	mov    0xc(%ecx),%edx
40502a:	8b 44 24 04          	mov    0x4(%esp),%eax
40502e:	56                   	push   %esi
40502f:	8b 74 24 10          	mov    0x10(%esp),%esi
405033:	89 02                	mov    %eax,(%edx)
405035:	8b 41 1c             	mov    0x1c(%ecx),%eax
405038:	8b 54 24 0c          	mov    0xc(%esp),%edx
40503c:	2b f2                	sub    %edx,%esi
40503e:	d1 fe                	sar    $1,%esi
405040:	89 10                	mov    %edx,(%eax)
405042:	8b 41 2c             	mov    0x2c(%ecx),%eax
405045:	89 30                	mov    %esi,(%eax)
405047:	5e                   	pop    %esi
405048:	c2 0c 00             	ret    $0xc
40504b:	8b 51 10             	mov    0x10(%ecx),%edx
40504e:	8b 44 24 04          	mov    0x4(%esp),%eax
405052:	56                   	push   %esi
405053:	8b 74 24 10          	mov    0x10(%esp),%esi
405057:	89 02                	mov    %eax,(%edx)
405059:	8b 41 20             	mov    0x20(%ecx),%eax
40505c:	8b 54 24 0c          	mov    0xc(%esp),%edx
405060:	2b f2                	sub    %edx,%esi
405062:	d1 fe                	sar    $1,%esi
405064:	89 10                	mov    %edx,(%eax)
405066:	8b 41 30             	mov    0x30(%ecx),%eax
405069:	89 30                	mov    %esi,(%eax)
40506b:	5e                   	pop    %esi
40506c:	c2 0c 00             	ret    $0xc
40506f:	8b 41 10             	mov    0x10(%ecx),%eax
405072:	8b 54 24 08          	mov    0x8(%esp),%edx
405076:	56                   	push   %esi
405077:	8b 74 24 08          	mov    0x8(%esp),%esi
40507b:	2b d6                	sub    %esi,%edx
40507d:	89 30                	mov    %esi,(%eax)
40507f:	8b 41 20             	mov    0x20(%ecx),%eax
405082:	d1 fa                	sar    $1,%edx
405084:	89 30                	mov    %esi,(%eax)
405086:	8b 41 30             	mov    0x30(%ecx),%eax
405089:	5e                   	pop    %esi
40508a:	89 10                	mov    %edx,(%eax)
40508c:	c2 08 00             	ret    $0x8
40508f:	83 7c 24 04 00       	cmpl   $0x0,0x4(%esp)
405094:	56                   	push   %esi
405095:	8b f1                	mov    %ecx,%esi
405097:	74 15                	je     0x4050ae
405099:	ff 74 24 0c          	push   0xc(%esp)
40509d:	e8 8c fb ff ff       	call   0x404c2e
4050a2:	0b 44 24 0c          	or     0xc(%esp),%eax
4050a6:	8b ce                	mov    %esi,%ecx
4050a8:	50                   	push   %eax
4050a9:	e8 ba f1 ff ff       	call   0x404268
4050ae:	5e                   	pop    %esi
4050af:	c2 08 00             	ret    $0x8
4050b2:	33 c0                	xor    %eax,%eax
4050b4:	33 d2                	xor    %edx,%edx
4050b6:	c3                   	ret
4050b7:	57                   	push   %edi
4050b8:	8b f9                	mov    %ecx,%edi
4050ba:	e8 2f ed ff ff       	call   0x403dee
4050bf:	85 d2                	test   %edx,%edx
4050c1:	7c 1e                	jl     0x4050e1
4050c3:	7f 04                	jg     0x4050c9
4050c5:	85 c0                	test   %eax,%eax
4050c7:	74 18                	je     0x4050e1
4050c9:	8b cf                	mov    %edi,%ecx
4050cb:	e8 30 ed ff ff       	call   0x403e00
4050d0:	66 8b 4c 24 08       	mov    0x8(%esp),%cx
4050d5:	50                   	push   %eax
4050d6:	66 89 08             	mov    %cx,(%eax)
4050d9:	e8 45 00 00 00       	call   0x405123
4050de:	59                   	pop    %ecx
4050df:	eb 18                	jmp    0x4050f9
4050e1:	56                   	push   %esi
4050e2:	8b 37                	mov    (%edi),%esi
4050e4:	8d 44 24 0c          	lea    0xc(%esp),%eax
4050e8:	50                   	push   %eax
4050e9:	e8 35 00 00 00       	call   0x405123
4050ee:	59                   	pop    %ecx
4050ef:	0f b7 c0             	movzwl %ax,%eax
4050f2:	8b cf                	mov    %edi,%ecx
4050f4:	50                   	push   %eax
4050f5:	ff 56 0c             	call   *0xc(%esi)
4050f8:	5e                   	pop    %esi
4050f9:	0f b7 c0             	movzwl %ax,%eax
4050fc:	5f                   	pop    %edi
4050fd:	c2 04 00             	ret    $0x4
405100:	ff 74 24 0c          	push   0xc(%esp)
405104:	8b 01                	mov    (%ecx),%eax
405106:	ff 74 24 0c          	push   0xc(%esp)
40510a:	ff 74 24 0c          	push   0xc(%esp)
40510e:	ff 50 24             	call   *0x24(%eax)
405111:	c2 0c 00             	ret    $0xc
405114:	33 c0                	xor    %eax,%eax
405116:	c3                   	ret
405117:	8b 41 3c             	mov    0x3c(%ecx),%eax
40511a:	c3                   	ret
40511b:	8b 44 24 04          	mov    0x4(%esp),%eax
40511f:	66 8b 00             	mov    (%eax),%ax
405122:	c3                   	ret
405123:	8b 44 24 04          	mov    0x4(%esp),%eax
405127:	66 8b 00             	mov    (%eax),%ax
40512a:	c3                   	ret
40512b:	55                   	push   %ebp
40512c:	8b ec                	mov    %esp,%ebp
40512e:	51                   	push   %ecx
40512f:	51                   	push   %ecx
405130:	56                   	push   %esi
405131:	8b f1                	mov    %ecx,%esi
405133:	8b 06                	mov    (%esi),%eax
405135:	ff 50 18             	call   *0x18(%eax)
405138:	0f b7 c0             	movzwl %ax,%eax
40513b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40513e:	e8 3f f4 ff ff       	call   0x404582
405143:	0f b7 c0             	movzwl %ax,%eax
405146:	89 45 f8             	mov    %eax,-0x8(%ebp)
405149:	8d 45 fc             	lea    -0x4(%ebp),%eax
40514c:	50                   	push   %eax
40514d:	8d 45 f8             	lea    -0x8(%ebp),%eax
405150:	50                   	push   %eax
405151:	e8 52 f4 ff ff       	call   0x4045a8
405156:	59                   	pop    %ecx
405157:	59                   	pop    %ecx
405158:	84 c0                	test   %al,%al
40515a:	74 07                	je     0x405163
40515c:	e8 21 f4 ff ff       	call   0x404582
405161:	eb 0e                	jmp    0x405171
405163:	8b ce                	mov    %esi,%ecx
405165:	e8 0b e9 ff ff       	call   0x403a75
40516a:	50                   	push   %eax
40516b:	e8 b3 ff ff ff       	call   0x405123
405170:	59                   	pop    %ecx
405171:	0f b7 c0             	movzwl %ax,%eax
405174:	5e                   	pop    %esi
405175:	8b e5                	mov    %ebp,%esp
405177:	5d                   	pop    %ebp
405178:	c3                   	ret
405179:	e9 04 f4 ff ff       	jmp    0x404582
40517e:	57                   	push   %edi
40517f:	8b f9                	mov    %ecx,%edi
405181:	e8 ce f5 ff ff       	call   0x404754
405186:	85 c0                	test   %eax,%eax
405188:	75 06                	jne    0x405190
40518a:	5f                   	pop    %edi
40518b:	e9 f2 f3 ff ff       	jmp    0x404582
405190:	56                   	push   %esi
405191:	8b cf                	mov    %edi,%ecx
405193:	e8 d0 f3 ff ff       	call   0x404568
405198:	8b cf                	mov    %edi,%ecx
40519a:	8b f0                	mov    %eax,%esi
40519c:	e8 b3 f5 ff ff       	call   0x404754
4051a1:	3b c6                	cmp    %esi,%eax
4051a3:	72 61                	jb     0x405206
4051a5:	f6 47 3c 04          	testb  $0x4,0x3c(%edi)
4051a9:	75 6c                	jne    0x405217
4051ab:	8b cf                	mov    %edi,%ecx
4051ad:	e8 6d fa ff ff       	call   0x404c1f
4051b2:	85 c0                	test   %eax,%eax
4051b4:	74 61                	je     0x405217
4051b6:	8b cf                	mov    %edi,%ecx
4051b8:	e8 62 fa ff ff       	call   0x404c1f
4051bd:	8b cf                	mov    %edi,%ecx
4051bf:	8b f0                	mov    %eax,%esi
4051c1:	e8 8e f5 ff ff       	call   0x404754
4051c6:	3b f0                	cmp    %eax,%esi
4051c8:	77 0c                	ja     0x4051d6
4051ca:	8b cf                	mov    %edi,%ecx
4051cc:	e8 83 f5 ff ff       	call   0x404754
4051d1:	39 47 38             	cmp    %eax,0x38(%edi)
4051d4:	76 41                	jbe    0x405217
4051d6:	8b cf                	mov    %edi,%ecx
4051d8:	e8 42 fa ff ff       	call   0x404c1f
4051dd:	39 47 38             	cmp    %eax,0x38(%edi)
4051e0:	73 0a                	jae    0x4051ec
4051e2:	8b cf                	mov    %edi,%ecx
4051e4:	e8 36 fa ff ff       	call   0x404c1f
4051e9:	89 47 38             	mov    %eax,0x38(%edi)
4051ec:	ff 77 38             	push   0x38(%edi)
4051ef:	8b cf                	mov    %edi,%ecx
4051f1:	e8 5e f5 ff ff       	call   0x404754
4051f6:	50                   	push   %eax
4051f7:	8b cf                	mov    %edi,%ecx
4051f9:	e8 64 f3 ff ff       	call   0x404562
4051fe:	50                   	push   %eax
4051ff:	8b cf                	mov    %edi,%ecx
405201:	e8 21 fe ff ff       	call   0x405027
405206:	8b cf                	mov    %edi,%ecx
405208:	e8 47 f5 ff ff       	call   0x404754
40520d:	50                   	push   %eax
40520e:	e8 10 ff ff ff       	call   0x405123
405213:	59                   	pop    %ecx
405214:	5e                   	pop    %esi
405215:	5f                   	pop    %edi
405216:	c3                   	ret
405217:	5e                   	pop    %esi
405218:	e9 6d ff ff ff       	jmp    0x40518a
40521d:	8b 01                	mov    (%ecx),%eax
40521f:	c3                   	ret
405220:	8b 01                	mov    (%ecx),%eax
405222:	c3                   	ret
405223:	83 79 04 00          	cmpl   $0x0,0x4(%ecx)