403f4a:	8b c6                	mov    %esi,%eax
403f4c:	89 45 fc             	mov    %eax,-0x4(%ebp)
403f4f:	85 db                	test   %ebx,%ebx
403f51:	7e 2a                	jle    0x403f7d
403f53:	3b c3                	cmp    %ebx,%eax
403f55:	7d 26                	jge    0x403f7d
403f57:	ff 75 0c             	push   0xc(%ebp)
403f5a:	0f b7 0c 71          	movzwl (%ecx,%esi,2),%ecx
403f5e:	8b 55 08             	mov    0x8(%ebp),%edx
403f61:	e8 16 ff ff ff       	call   0x403e7c
403f66:	85 c0                	test   %eax,%eax
403f68:	8b 45 fc             	mov    -0x4(%ebp),%eax
403f6b:	74 08                	je     0x403f75
403f6d:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
403f71:	40                   	inc    %eax
403f72:	89 45 fc             	mov    %eax,-0x4(%ebp)
403f75:	8b 4d f8             	mov    -0x8(%ebp),%ecx
403f78:	46                   	inc    %esi
403f79:	3b f3                	cmp    %ebx,%esi
403f7b:	7c d6                	jl     0x403f53
403f7d:	33 c9                	xor    %ecx,%ecx
403f7f:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
403f83:	e9 aa 00 00 00       	jmp    0x404032
403f88:	8b d6                	mov    %esi,%edx
403f8a:	89 55 fc             	mov    %edx,-0x4(%ebp)
403f8d:	85 db                	test   %ebx,%ebx
403f8f:	0f 8e 9d 00 00 00    	jle    0x404032
403f95:	6a 20                	push   $0x20
403f97:	58                   	pop    %eax
403f98:	0f b7 0c 71          	movzwl (%ecx,%esi,2),%ecx
403f9c:	66 3b c8             	cmp    %ax,%cx
403f9f:	74 1c                	je     0x403fbd
403fa1:	ff 75 0c             	push   0xc(%ebp)
403fa4:	8b 55 08             	mov    0x8(%ebp),%edx
403fa7:	e8 d0 fe ff ff       	call   0x403e7c
403fac:	8b 55 fc             	mov    -0x4(%ebp),%edx
403faf:	85 c0                	test   %eax,%eax
403fb1:	74 0a                	je     0x403fbd
403fb3:	66 89 0c 57          	mov    %cx,(%edi,%edx,2)
403fb7:	42                   	inc    %edx
403fb8:	89 55 fc             	mov    %edx,-0x4(%ebp)
403fbb:	eb 66                	jmp    0x404023
403fbd:	e8 8c 2c 00 00       	call   0x406c4e
403fc2:	85 c0                	test   %eax,%eax
403fc4:	74 5d                	je     0x404023
403fc6:	6a 20                	push   $0x20
403fc8:	58                   	pop    %eax
403fc9:	66 3b c8             	cmp    %ax,%cx
403fcc:	75 58                	jne    0x404026
403fce:	8b 0d b0 10 41 00    	mov    0x4110b0,%ecx
403fd4:	8b c2                	mov    %edx,%eax
403fd6:	99                   	cltd
403fd7:	f7 f9                	idiv   %ecx
403fd9:	85 d2                	test   %edx,%edx
403fdb:	74 43                	je     0x404020
403fdd:	8b c1                	mov    %ecx,%eax
403fdf:	2b c2                	sub    %edx,%eax
403fe1:	8b 55 fc             	mov    -0x4(%ebp),%edx
403fe4:	89 45 f4             	mov    %eax,-0xc(%ebp)
403fe7:	74 1f                	je     0x404008
403fe9:	8b c8                	mov    %eax,%ecx
403feb:	8d 3c 57             	lea    (%edi,%edx,2),%edi
403fee:	d1 e9                	shr    $1,%ecx
403ff0:	b8 20 00 20 00       	mov    $0x200020,%eax
403ff5:	f3 ab                	rep stos %eax,%es:(%edi)
403ff7:	13 c9                	adc    %ecx,%ecx
403ff9:	03 55 f4             	add    -0xc(%ebp),%edx
403ffc:	66 f3 ab             	rep stos %ax,%es:(%edi)
403fff:	8b 3d b0 16 41 00    	mov    0x4116b0,%edi
404005:	89 55 fc             	mov    %edx,-0x4(%ebp)
404008:	6a 20                	push   $0x20
40400a:	58                   	pop    %eax
40400b:	3b f3                	cmp    %ebx,%esi
40400d:	7d 0e                	jge    0x40401d
40400f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
404012:	66 39 04 71          	cmp    %ax,(%ecx,%esi,2)
404016:	75 05                	jne    0x40401d
404018:	46                   	inc    %esi
404019:	3b f3                	cmp    %ebx,%esi
40401b:	7c f5                	jl     0x404012
40401d:	4e                   	dec    %esi
40401e:	eb 06                	jmp    0x404026
404020:	8b 55 fc             	mov    -0x4(%ebp),%edx
404023:	6a 20                	push   $0x20
404025:	58                   	pop    %eax
404026:	8b 4d f8             	mov    -0x8(%ebp),%ecx
404029:	46                   	inc    %esi
40402a:	3b f3                	cmp    %ebx,%esi
40402c:	0f 8c 66 ff ff ff    	jl     0x403f98
404032:	8b c7                	mov    %edi,%eax
404034:	eb 02                	jmp    0x404038
404036:	33 c0                	xor    %eax,%eax
404038:	5f                   	pop    %edi
404039:	5e                   	pop    %esi
40403a:	5b                   	pop    %ebx
40403b:	c9                   	leave
40403c:	c2 10 00             	ret    $0x10
40403f:	8b ff                	mov    %edi,%edi
404041:	55                   	push   %ebp
404042:	8b ec                	mov    %esp,%ebp
404044:	51                   	push   %ecx
404045:	53                   	push   %ebx
404046:	56                   	push   %esi
404047:	57                   	push   %edi
404048:	8b da                	mov    %edx,%ebx
40404a:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40404d:	e8 0e fe ff ff       	call   0x403e60
404052:	85 db                	test   %ebx,%ebx
404054:	0f 84 a6 00 00 00    	je     0x404100
40405a:	bf fe ff 00 00       	mov    $0xfffe,%edi
40405f:	33 f6                	xor    %esi,%esi
404061:	2b 7d 14             	sub    0x14(%ebp),%edi
404064:	89 35 44 26 43 00    	mov    %esi,0x432644
40406a:	3b df                	cmp    %edi,%ebx
40406c:	7d 02                	jge    0x404070
40406e:	8b fb                	mov    %ebx,%edi
404070:	8d 47 01             	lea    0x1(%edi),%eax
404073:	50                   	push   %eax
404074:	6a 02                	push   $0x2
404076:	ff 15 f0 33 43 00    	call   *0x4333f0
40407c:	59                   	pop    %ecx
40407d:	59                   	pop    %ecx
40407e:	8b c8                	mov    %eax,%ecx
404080:	89 0d b0 16 41 00    	mov    %ecx,0x4116b0
404086:	85 c9                	test   %ecx,%ecx
404088:	74 76                	je     0x404100
40408a:	8b 55 fc             	mov    -0x4(%ebp),%edx
40408d:	89 3d 44 26 43 00    	mov    %edi,0x432644
404093:	85 d2                	test   %edx,%edx
404095:	74 65                	je     0x4040fc
404097:	39 75 08             	cmp    %esi,0x8(%ebp)
40409a:	74 60                	je     0x4040fc
40409c:	85 db                	test   %ebx,%ebx
40409e:	7e 5c                	jle    0x4040fc
4040a0:	0f b7 04 72          	movzwl (%edx,%esi,2),%eax
4040a4:	3b 45 14             	cmp    0x14(%ebp),%eax
4040a7:	7d 05                	jge    0x4040ae
4040a9:	46                   	inc    %esi
4040aa:	3b f3                	cmp    %ebx,%esi
4040ac:	7c f2                	jl     0x4040a0
4040ae:	3b f3                	cmp    %ebx,%esi
4040b0:	7d 4a                	jge    0x4040fc
4040b2:	8b f9                	mov    %ecx,%edi
4040b4:	0f b7 0c 72          	movzwl (%edx,%esi,2),%ecx
4040b8:	b8 fd ff 00 00       	mov    $0xfffd,%eax
4040bd:	66 3b c8             	cmp    %ax,%cx
4040c0:	77 34                	ja     0x4040f6
4040c2:	ff 75 0c             	push   0xc(%ebp)
4040c5:	8b 55 08             	mov    0x8(%ebp),%edx
4040c8:	e8 af fd ff ff       	call   0x403e7c
4040cd:	85 c0                	test   %eax,%eax
4040cf:	74 05                	je     0x4040d6
4040d1:	66 89 0f             	mov    %cx,(%edi)
4040d4:	eb 15                	jmp    0x4040eb
4040d6:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
4040da:	74 12                	je     0x4040ee
4040dc:	e8 6d 2b 00 00       	call   0x406c4e
4040e1:	85 c0                	test   %eax,%eax
4040e3:	74 09                	je     0x4040ee
4040e5:	6a 20                	push   $0x20
4040e7:	58                   	pop    %eax
4040e8:	66 89 07             	mov    %ax,(%edi)
4040eb:	83 c7 02             	add    $0x2,%edi
4040ee:	8b 55 fc             	mov    -0x4(%ebp),%edx
4040f1:	46                   	inc    %esi
4040f2:	3b f3                	cmp    %ebx,%esi
4040f4:	7c be                	jl     0x4040b4
4040f6:	8b 0d b0 16 41 00    	mov    0x4116b0,%ecx
4040fc:	8b c1                	mov    %ecx,%eax
4040fe:	eb 02                	jmp    0x404102
404100:	33 c0                	xor    %eax,%eax
404102:	5f                   	pop    %edi
404103:	5e                   	pop    %esi
404104:	5b                   	pop    %ebx
404105:	c9                   	leave
404106:	c2 18 00             	ret    $0x18
404109:	cc                   	int3
40410a:	cc                   	int3
40410b:	cc                   	int3
40410c:	cc                   	int3
40410d:	cc                   	int3
40410e:	cc                   	int3
40410f:	cc                   	int3
404110:	8b ff                	mov    %edi,%edi
404112:	55                   	push   %ebp
404113:	8b ec                	mov    %esp,%ebp
404115:	83 ec 28             	sub    $0x28,%esp
404118:	8b 45 0c             	mov    0xc(%ebp),%eax
40411b:	53                   	push   %ebx
40411c:	57                   	push   %edi
40411d:	33 db                	xor    %ebx,%ebx
40411f:	8b 78 3c             	mov    0x3c(%eax),%edi
404122:	8b 45 08             	mov    0x8(%ebp),%eax
404125:	21 5d f8             	and    %ebx,-0x8(%ebp)
404128:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40412b:	66 83 78 1c 40       	cmpw   $0x40,0x1c(%eax)
404130:	0f 84 ef 02 00 00    	je     0x404425
404136:	b9 00 00 00 20       	mov    $0x20000000,%ecx
40413b:	f7 c7 00 00 02 00    	test   $0x20000,%edi
404141:	74 07                	je     0x40414a
404143:	bf 00 00 01 00       	mov    $0x10000,%edi
404148:	eb 28                	jmp    0x404172
40414a:	f7 c7 00 00 10 00    	test   $0x100000,%edi
404150:	74 07                	je     0x404159
404152:	bf 00 00 04 00       	mov    $0x40000,%edi
404157:	eb 19                	jmp    0x404172
404159:	f6 45 10 04          	testb  $0x4,0x10(%ebp)
40415d:	74 18                	je     0x404177
40415f:	81 e7 00 00 04 00    	and    $0x40000,%edi
404165:	f7 df                	neg    %edi
404167:	1b ff                	sbb    %edi,%edi
404169:	81 e7 fc ff 01 00    	and    $0x1fffc,%edi
40416f:	83 c7 04             	add    $0x4,%edi
404172:	89 7d fc             	mov    %edi,-0x4(%ebp)
404175:	eb 05                	jmp    0x40417c
404177:	8b f9                	mov    %ecx,%edi
404179:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40417c:	80 78 17 02          	cmpb   $0x2,0x17(%eax)
404180:	75 05                	jne    0x404187
404182:	0b f9                	or     %ecx,%edi
404184:	89 7d fc             	mov    %edi,-0x4(%ebp)
404187:	56                   	push   %esi
404188:	85 f9                	test   %edi,%ecx
40418a:	74 2a                	je     0x4041b6
40418c:	6a 04                	push   $0x4
40418e:	ff 15 f8 33 43 00    	call   *0x4333f8
404194:	8b d8                	mov    %eax,%ebx
404196:	59                   	pop    %ecx
404197:	85 db                	test   %ebx,%ebx
404199:	0f 84 85 02 00 00    	je     0x404424
40419f:	6a 21                	push   $0x21
4041a1:	58                   	pop    %eax
4041a2:	66 89 03             	mov    %ax,(%ebx)
4041a5:	33 f6                	xor    %esi,%esi
4041a7:	b8 ff 00 00 00       	mov    $0xff,%eax
4041ac:	46                   	inc    %esi
4041ad:	66 89 43 02          	mov    %ax,0x2(%ebx)
4041b1:	e9 52 02 00 00       	jmp    0x404408
4041b6:	f7 c7 00 00 05 00    	test   $0x50000,%edi
4041bc:	0f 85 21 02 00 00    	jne    0x4043e3
4041c2:	ff 75 14             	push   0x14(%ebp)
4041c5:	21 5d ec             	and    %ebx,-0x14(%ebp)
4041c8:	33 f6                	xor    %esi,%esi
4041ca:	89 75 e8             	mov    %esi,-0x18(%ebp)
4041cd:	ff 15 0c 33 43 00    	call   *0x43330c
4041d3:	89 45 f4             	mov    %eax,-0xc(%ebp)
4041d6:	85 c0                	test   %eax,%eax
4041d8:	0f 84 46 02 00 00    	je     0x404424
4041de:	ff 75 08             	push   0x8(%ebp)
4041e1:	ff 15 b0 30 43 00    	call   *0x4330b0
4041e7:	50                   	push   %eax
4041e8:	ff 75 f4             	push   -0xc(%ebp)
4041eb:	89 45 dc             	mov    %eax,-0x24(%ebp)
4041ee:	ff 15 ac 30 43 00    	call   *0x4330ac
4041f4:	89 45 d8             	mov    %eax,-0x28(%ebp)
4041f7:	33 c0                	xor    %eax,%eax
4041f9:	50                   	push   %eax
4041fa:	50                   	push   %eax
4041fb:	50                   	push   %eax
4041fc:	68 63 6d 61 70       	push   $0x70616d63
404201:	ff 75 f4             	push   -0xc(%ebp)
404204:	ff 15 a8 30 43 00    	call   *0x4330a8
40420a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40420d:	83 f8 ff             	cmp    $0xffffffff,%eax
404210:	0f 84 93 01 00 00    	je     0x4043a9
404216:	50                   	push   %eax
404217:	ff 15 f8 33 43 00    	call   *0x4333f8
40421d:	8b d0                	mov    %eax,%edx
40421f:	89 55 ec             	mov    %edx,-0x14(%ebp)
404222:	59                   	pop    %ecx
404223:	85 d2                	test   %edx,%edx
404225:	0f 84 7e 01 00 00    	je     0x4043a9
40422b:	ff 75 e4             	push   -0x1c(%ebp)
40422e:	52                   	push   %edx
40422f:	56                   	push   %esi
404230:	68 63 6d 61 70       	push   $0x70616d63
404235:	ff 75 f4             	push   -0xc(%ebp)
404238:	ff 15 a8 30 43 00    	call   *0x4330a8
40423e:	8b 55 ec             	mov    -0x14(%ebp),%edx
404241:	0f b6 4a 02          	movzbl 0x2(%edx),%ecx
404245:	0f b6 42 03          	movzbl 0x3(%edx),%eax
404249:	66 c1 e1 08          	shl    $0x8,%cx
40424d:	66 0b c8             	or     %ax,%cx
404250:	0f b7 c1             	movzwl %cx,%eax
404253:	89 45 f0             	mov    %eax,-0x10(%ebp)
404256:	66 85 c0             	test   %ax,%ax
404259:	0f 84 4a 01 00 00    	je     0x4043a9
40425f:	8d 7a 04             	lea    0x4(%edx),%edi
404262:	8b d8                	mov    %eax,%ebx
404264:	0f b6 0f             	movzbl (%edi),%ecx
404267:	0f b6 47 01          	movzbl 0x1(%edi),%eax
40426b:	c1 e1 08             	shl    $0x8,%ecx
40426e:	0b c8                	or     %eax,%ecx
404270:	83 f9 03             	cmp    $0x3,%ecx
404273:	75 32                	jne    0x4042a7
404275:	0f b6 77 04          	movzbl 0x4(%edi),%esi
404279:	0f b6 47 05          	movzbl 0x5(%edi),%eax
40427d:	c1 e6 08             	shl    $0x8,%esi
404280:	0b f0                	or     %eax,%esi
404282:	0f b6 47 06          	movzbl 0x6(%edi),%eax
404286:	c1 e6 08             	shl    $0x8,%esi
404289:	0b f0                	or     %eax,%esi
40428b:	0f b6 47 07          	movzbl 0x7(%edi),%eax
40428f:	c1 e6 08             	shl    $0x8,%esi
404292:	0b f0                	or     %eax,%esi
404294:	03 f2                	add    %edx,%esi
404296:	0f b6 0e             	movzbl (%esi),%ecx
404299:	0f b6 46 01          	movzbl 0x1(%esi),%eax
40429d:	c1 e1 08             	shl    $0x8,%ecx
4042a0:	0b c8                	or     %eax,%ecx
4042a2:	83 f9 04             	cmp    $0x4,%ecx
4042a5:	74 0e                	je     0x4042b5
4042a7:	81 c3 ff ff 00 00    	add    $0xffff,%ebx
4042ad:	83 c7 08             	add    $0x8,%edi
4042b0:	66 85 db             	test   %bx,%bx
4042b3:	75 af                	jne    0x404264
4042b5:	8b 7d fc             	mov    -0x4(%ebp),%edi
4042b8:	89 5d f0             	mov    %ebx,-0x10(%ebp)
4042bb:	8b 45 f0             	mov    -0x10(%ebp),%eax
4042be:	8b 5d e0             	mov    -0x20(%ebp),%ebx
4042c1:	89 75 e8             	mov    %esi,-0x18(%ebp)
4042c4:	66 85 c0             	test   %ax,%ax
4042c7:	0f 84 dc 00 00 00    	je     0x4043a9
4042cd:	0f b6 4e 06          	movzbl 0x6(%esi),%ecx
4042d1:	0f b6 46 07          	movzbl 0x7(%esi),%eax
4042d5:	66 c1 e1 08          	shl    $0x8,%cx
4042d9:	66 0b c8             	or     %ax,%cx
4042dc:	0f b7 c1             	movzwl %cx,%eax
4042df:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4042e2:	0f b7 c0             	movzwl %ax,%eax
4042e5:	d1 e8                	shr    $1,%eax
4042e7:	89 45 f8             	mov    %eax,-0x8(%ebp)
4042ea:	c1 e0 02             	shl    $0x2,%eax
4042ed:	50                   	push   %eax
4042ee:	ff 15 f8 33 43 00    	call   *0x4333f8
4042f4:	8b d8                	mov    %eax,%ebx
4042f6:	59                   	pop    %ecx
4042f7:	85 db                	test   %ebx,%ebx
4042f9:	75 07                	jne    0x404302
4042fb:	33 f6                	xor    %esi,%esi
4042fd:	e9 aa 00 00 00       	jmp    0x4043ac
404302:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
404305:	33 d2                	xor    %edx,%edx
404307:	0f b7 c1             	movzwl %cx,%eax
40430a:	83 c0 10             	add    $0x10,%eax
40430d:	03 c6                	add    %esi,%eax
40430f:	89 45 e0             	mov    %eax,-0x20(%ebp)
404312:	33 c0                	xor    %eax,%eax
404314:	89 45 f0             	mov    %eax,-0x10(%ebp)
404317:	66 3b d1             	cmp    %cx,%dx