401f2d:	e8 5d 01 00 00       	call   0x40208f
401f32:	5f                   	pop    %edi
401f33:	5e                   	pop    %esi
401f34:	c2 04 00             	ret    $0x4
401f37:	56                   	push   %esi
401f38:	8b f1                	mov    %ecx,%esi
401f3a:	57                   	push   %edi
401f3b:	8b 3e                	mov    (%esi),%edi
401f3d:	ff 77 04             	push   0x4(%edi)
401f40:	57                   	push   %edi
401f41:	e8 63 04 00 00       	call   0x4023a9
401f46:	8b d0                	mov    %eax,%edx
401f48:	8d 42 08             	lea    0x8(%edx),%eax
401f4b:	85 c0                	test   %eax,%eax
401f4d:	74 08                	je     0x401f57
401f4f:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
401f53:	8b 09                	mov    (%ecx),%ecx
401f55:	89 08                	mov    %ecx,(%eax)
401f57:	8b 4e 04             	mov    0x4(%esi),%ecx
401f5a:	b8 54 55 55 15       	mov    $0x15555554,%eax
401f5f:	2b c1                	sub    %ecx,%eax
401f61:	83 f8 01             	cmp    $0x1,%eax
401f64:	72 13                	jb     0x401f79
401f66:	8d 41 01             	lea    0x1(%ecx),%eax
401f69:	89 46 04             	mov    %eax,0x4(%esi)
401f6c:	89 57 04             	mov    %edx,0x4(%edi)
401f6f:	8b 42 04             	mov    0x4(%edx),%eax
401f72:	5f                   	pop    %edi
401f73:	5e                   	pop    %esi
401f74:	89 10                	mov    %edx,(%eax)
401f76:	c2 04 00             	ret    $0x4
401f79:	68 28 93 43 00       	push   $0x439328
401f7e:	e8 96 79 00 00       	call   0x409919
401f83:	cc                   	int3
401f84:	53                   	push   %ebx
401f85:	57                   	push   %edi
401f86:	8b f9                	mov    %ecx,%edi
401f88:	8b 07                	mov    (%edi),%eax
401f8a:	8b 18                	mov    (%eax),%ebx
401f8c:	89 00                	mov    %eax,(%eax)
401f8e:	8b 07                	mov    (%edi),%eax
401f90:	89 40 04             	mov    %eax,0x4(%eax)
401f93:	83 67 04 00          	andl   $0x0,0x4(%edi)
401f97:	8b 0f                	mov    (%edi),%ecx
401f99:	3b d9                	cmp    %ecx,%ebx
401f9b:	74 19                	je     0x401fb6
401f9d:	56                   	push   %esi
401f9e:	8b 33                	mov    (%ebx),%esi
401fa0:	33 d2                	xor    %edx,%edx
401fa2:	6a 0c                	push   $0xc
401fa4:	42                   	inc    %edx
401fa5:	8b cb                	mov    %ebx,%ecx
401fa7:	e8 32 f2 ff ff       	call   0x4011de
401fac:	59                   	pop    %ecx
401fad:	8b 0f                	mov    (%edi),%ecx
401faf:	8b de                	mov    %esi,%ebx
401fb1:	3b f1                	cmp    %ecx,%esi
401fb3:	75 e9                	jne    0x401f9e
401fb5:	5e                   	pop    %esi
401fb6:	33 d2                	xor    %edx,%edx
401fb8:	6a 0c                	push   $0xc
401fba:	42                   	inc    %edx
401fbb:	e8 1e f2 ff ff       	call   0x4011de
401fc0:	59                   	pop    %ecx
401fc1:	5f                   	pop    %edi
401fc2:	5b                   	pop    %ebx
401fc3:	c3                   	ret
401fc4:	6a 00                	push   $0x0
401fc6:	6a 01                	push   $0x1
401fc8:	e8 f8 00 00 00       	call   0x4020c5
401fcd:	c3                   	ret
401fce:	56                   	push   %esi
401fcf:	ff 74 24 08          	push   0x8(%esp)
401fd3:	8b f1                	mov    %ecx,%esi
401fd5:	33 c0                	xor    %eax,%eax
401fd7:	83 66 10 00          	andl   $0x0,0x10(%esi)
401fdb:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
401fe2:	66 89 06             	mov    %ax,(%esi)
401fe5:	e8 a0 01 00 00       	call   0x40218a
401fea:	8b c6                	mov    %esi,%eax
401fec:	5e                   	pop    %esi
401fed:	c2 04 00             	ret    $0x4
401ff0:	53                   	push   %ebx
401ff1:	56                   	push   %esi
401ff2:	8b f1                	mov    %ecx,%esi
401ff4:	33 c0                	xor    %eax,%eax
401ff6:	57                   	push   %edi
401ff7:	8b 7c 24 10          	mov    0x10(%esp),%edi
401ffb:	8b cf                	mov    %edi,%ecx
401ffd:	83 66 10 00          	andl   $0x0,0x10(%esi)
402001:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
402008:	66 89 06             	mov    %ax,(%esi)
40200b:	e8 3c f1 ff ff       	call   0x40114c
402010:	57                   	push   %edi
402011:	8b ce                	mov    %esi,%ecx
402013:	8b d8                	mov    %eax,%ebx
402015:	e8 c4 01 00 00       	call   0x4021de
40201a:	84 c0                	test   %al,%al
40201c:	74 0e                	je     0x40202c
40201e:	2b fe                	sub    %esi,%edi
402020:	53                   	push   %ebx
402021:	d1 ff                	sar    $1,%edi
402023:	57                   	push   %edi
402024:	56                   	push   %esi
402025:	e8 e6 00 00 00       	call   0x402110
40202a:	eb 36                	jmp    0x402062
40202c:	6a 00                	push   $0x0
40202e:	53                   	push   %ebx
40202f:	e8 e3 01 00 00       	call   0x402217
402034:	84 c0                	test   %al,%al
402036:	74 2a                	je     0x402062
402038:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40203c:	72 04                	jb     0x402042
40203e:	8b 0e                	mov    (%esi),%ecx
402040:	eb 02                	jmp    0x402044
402042:	8b ce                	mov    %esi,%ecx
402044:	53                   	push   %ebx
402045:	8b d7                	mov    %edi,%edx
402047:	e8 20 f1 ff ff       	call   0x40116c
40204c:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
402050:	59                   	pop    %ecx
402051:	89 5e 10             	mov    %ebx,0x10(%esi)
402054:	72 04                	jb     0x40205a
402056:	8b 06                	mov    (%esi),%eax
402058:	eb 02                	jmp    0x40205c
40205a:	8b c6                	mov    %esi,%eax
40205c:	33 c9                	xor    %ecx,%ecx
40205e:	66 89 0c 58          	mov    %cx,(%eax,%ebx,2)
402062:	5f                   	pop    %edi
402063:	8b c6                	mov    %esi,%eax
402065:	5e                   	pop    %esi
402066:	5b                   	pop    %ebx
402067:	c2 04 00             	ret    $0x4
40206a:	56                   	push   %esi
40206b:	8b f1                	mov    %ecx,%esi
40206d:	33 c0                	xor    %eax,%eax
40206f:	6a ff                	push   $0xffffffff
402071:	50                   	push   %eax
402072:	ff 74 24 10          	push   0x10(%esp)
402076:	83 66 10 00          	andl   $0x0,0x10(%esi)
40207a:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
402081:	66 89 06             	mov    %ax,(%esi)
402084:	e8 87 00 00 00       	call   0x402110
402089:	8b c6                	mov    %esi,%eax
40208b:	5e                   	pop    %esi
40208c:	c2 04 00             	ret    $0x4
40208f:	56                   	push   %esi
402090:	8b f1                	mov    %ecx,%esi
402092:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
402096:	6a 0c                	push   $0xc
402098:	8b 11                	mov    (%ecx),%edx
40209a:	89 54 24 10          	mov    %edx,0x10(%esp)
40209e:	8b 41 04             	mov    0x4(%ecx),%eax
4020a1:	89 10                	mov    %edx,(%eax)
4020a3:	8b 11                	mov    (%ecx),%edx
4020a5:	8b 41 04             	mov    0x4(%ecx),%eax
4020a8:	89 42 04             	mov    %eax,0x4(%edx)
4020ab:	33 d2                	xor    %edx,%edx
4020ad:	ff 4e 04             	decl   0x4(%esi)
4020b0:	42                   	inc    %edx
4020b1:	e8 28 f1 ff ff       	call   0x4011de
4020b6:	8b 44 24 0c          	mov    0xc(%esp),%eax
4020ba:	59                   	pop    %ecx
4020bb:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
4020bf:	5e                   	pop    %esi
4020c0:	89 08                	mov    %ecx,(%eax)
4020c2:	c2 08 00             	ret    $0x8
4020c5:	80 7c 24 04 00       	cmpb   $0x0,0x4(%esp)
4020ca:	56                   	push   %esi
4020cb:	8b f1                	mov    %ecx,%esi
4020cd:	74 2b                	je     0x4020fa
4020cf:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
4020d3:	72 25                	jb     0x4020fa
4020d5:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
4020da:	53                   	push   %ebx
4020db:	8b 1e                	mov    (%esi),%ebx
4020dd:	76 0c                	jbe    0x4020eb
4020df:	ff 74 24 10          	push   0x10(%esp)
4020e3:	8b d3                	mov    %ebx,%edx
4020e5:	e8 82 f0 ff ff       	call   0x40116c
4020ea:	59                   	pop    %ecx
4020eb:	8b 56 14             	mov    0x14(%esi),%edx
4020ee:	8b cb                	mov    %ebx,%ecx
4020f0:	6a 02                	push   $0x2
4020f2:	42                   	inc    %edx
4020f3:	e8 e6 f0 ff ff       	call   0x4011de
4020f8:	59                   	pop    %ecx
4020f9:	5b                   	pop    %ebx
4020fa:	ff 74 24 0c          	push   0xc(%esp)
4020fe:	8b ce                	mov    %esi,%ecx
402100:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
402107:	e8 69 01 00 00       	call   0x402275
40210c:	5e                   	pop    %esi
40210d:	c2 08 00             	ret    $0x8
402110:	53                   	push   %ebx
402111:	8b 5c 24 08          	mov    0x8(%esp),%ebx
402115:	55                   	push   %ebp
402116:	8b 6c 24 10          	mov    0x10(%esp),%ebp
40211a:	56                   	push   %esi
40211b:	57                   	push   %edi
40211c:	8b 7b 10             	mov    0x10(%ebx),%edi
40211f:	8b f1                	mov    %ecx,%esi
402121:	3b fd                	cmp    %ebp,%edi
402123:	72 5f                	jb     0x402184
402125:	2b fd                	sub    %ebp,%edi
402127:	39 7c 24 1c          	cmp    %edi,0x1c(%esp)
40212b:	0f 42 7c 24 1c       	cmovb  0x1c(%esp),%edi
402130:	3b f3                	cmp    %ebx,%esi
402132:	75 15                	jne    0x402149
402134:	8d 04 2f             	lea    (%edi,%ebp,1),%eax
402137:	50                   	push   %eax
402138:	e8 a8 01 00 00       	call   0x4022e5
40213d:	55                   	push   %ebp
40213e:	6a 00                	push   $0x0
402140:	8b ce                	mov    %esi,%ecx
402142:	e8 46 01 00 00       	call   0x40228d
402147:	eb 32                	jmp    0x40217b
402149:	6a 00                	push   $0x0
40214b:	57                   	push   %edi
40214c:	e8 c6 00 00 00       	call   0x402217
402151:	84 c0                	test   %al,%al
402153:	74 26                	je     0x40217b
402155:	83 7b 14 08          	cmpl   $0x8,0x14(%ebx)
402159:	72 02                	jb     0x40215d
40215b:	8b 1b                	mov    (%ebx),%ebx
40215d:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
402161:	72 04                	jb     0x402167
402163:	8b 0e                	mov    (%esi),%ecx
402165:	eb 02                	jmp    0x402169
402167:	8b ce                	mov    %esi,%ecx
402169:	57                   	push   %edi
40216a:	8d 14 6b             	lea    (%ebx,%ebp,2),%edx
40216d:	e8 fa ef ff ff       	call   0x40116c
402172:	59                   	pop    %ecx
402173:	57                   	push   %edi
402174:	8b ce                	mov    %esi,%ecx
402176:	e8 fa 00 00 00       	call   0x402275
40217b:	5f                   	pop    %edi
40217c:	8b c6                	mov    %esi,%eax
40217e:	5e                   	pop    %esi
40217f:	5d                   	pop    %ebp
402180:	5b                   	pop    %ebx
402181:	c2 0c 00             	ret    $0xc
402184:	e8 4a 00 00 00       	call   0x4021d3
402189:	cc                   	int3
40218a:	56                   	push   %esi
40218b:	8b 74 24 08          	mov    0x8(%esp),%esi
40218f:	57                   	push   %edi
402190:	8b f9                	mov    %ecx,%edi
402192:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
402196:	73 0f                	jae    0x4021a7
402198:	8b 46 10             	mov    0x10(%esi),%eax
40219b:	8b d6                	mov    %esi,%edx
40219d:	40                   	inc    %eax
40219e:	50                   	push   %eax
40219f:	e8 c8 ef ff ff       	call   0x40116c
4021a4:	59                   	pop    %ecx
4021a5:	eb 0b                	jmp    0x4021b2
4021a7:	85 ff                	test   %edi,%edi
4021a9:	74 04                	je     0x4021af
4021ab:	8b 06                	mov    (%esi),%eax
4021ad:	89 07                	mov    %eax,(%edi)
4021af:	83 26 00             	andl   $0x0,(%esi)
4021b2:	8b 46 10             	mov    0x10(%esi),%eax
4021b5:	89 47 10             	mov    %eax,0x10(%edi)
4021b8:	8b 46 14             	mov    0x14(%esi),%eax
4021bb:	89 47 14             	mov    %eax,0x14(%edi)
4021be:	33 c0                	xor    %eax,%eax
4021c0:	83 66 10 00          	andl   $0x0,0x10(%esi)
4021c4:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
4021cb:	5f                   	pop    %edi
4021cc:	66 89 06             	mov    %ax,(%esi)
4021cf:	5e                   	pop    %esi
4021d0:	c2 04 00             	ret    $0x4
4021d3:	68 00 93 43 00       	push   $0x439300
4021d8:	e8 5c 77 00 00       	call   0x409939
4021dd:	cc                   	int3
4021de:	83 7c 24 04 00       	cmpl   $0x0,0x4(%esp)
4021e3:	74 2d                	je     0x402212
4021e5:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
4021e9:	72 04                	jb     0x4021ef
4021eb:	8b 01                	mov    (%ecx),%eax
4021ed:	eb 02                	jmp    0x4021f1
4021ef:	8b c1                	mov    %ecx,%eax
4021f1:	39 44 24 04          	cmp    %eax,0x4(%esp)
4021f5:	72 1b                	jb     0x402212
4021f7:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
4021fb:	72 04                	jb     0x402201
4021fd:	8b 11                	mov    (%ecx),%edx
4021ff:	eb 02                	jmp    0x402203
402201:	8b d1                	mov    %ecx,%edx
402203:	8b 41 10             	mov    0x10(%ecx),%eax
402206:	8d 04 42             	lea    (%edx,%eax,2),%eax
402209:	3b 44 24 04          	cmp    0x4(%esp),%eax
40220d:	0f 97 c0             	seta   %al
402210:	eb 02                	jmp    0x402214
402212:	32 c0                	xor    %al,%al
402214:	c2 04 00             	ret    $0x4
402217:	56                   	push   %esi
402218:	8b 74 24 08          	mov    0x8(%esp),%esi
40221c:	81 fe fe ff ff 7f    	cmp    $0x7ffffffe,%esi
402222:	77 4b                	ja     0x40226f
402224:	39 71 14             	cmp    %esi,0x14(%ecx)
402227:	73 0b                	jae    0x402234
402229:	ff 71 10             	push   0x10(%ecx)
40222c:	56                   	push   %esi
40222d:	e8 dc 00 00 00       	call   0x40230e
402232:	eb 32                	jmp    0x402266
402234:	80 7c 24 0c 00       	cmpb   $0x0,0xc(%esp)
402239:	74 17                	je     0x402252
40223b:	83 fe 08             	cmp    $0x8,%esi
40223e:	73 12                	jae    0x402252
402240:	8b 41 10             	mov    0x10(%ecx),%eax
402243:	3b f0                	cmp    %eax,%esi
402245:	0f 42 c6             	cmovb  %esi,%eax
402248:	50                   	push   %eax
402249:	6a 01                	push   $0x1
40224b:	e8 75 fe ff ff       	call   0x4020c5
402250:	eb 14                	jmp    0x402266
402252:	85 f6                	test   %esi,%esi
402254:	75 12                	jne    0x402268
402256:	21 71 10             	and    %esi,0x10(%ecx)
402259:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
40225d:	72 02                	jb     0x402261
40225f:	8b 09                	mov    (%ecx),%ecx
402261:	33 c0                	xor    %eax,%eax
402263:	66 89 01             	mov    %ax,(%ecx)
402266:	85 f6                	test   %esi,%esi
402268:	0f 95 c0             	setne  %al
40226b:	5e                   	pop    %esi
40226c:	c2 08 00             	ret    $0x8
40226f:	e8 8f 00 00 00       	call   0x402303
402274:	cc                   	int3
402275:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
402279:	8b 44 24 04          	mov    0x4(%esp),%eax
40227d:	89 41 10             	mov    %eax,0x10(%ecx)
402280:	72 02                	jb     0x402284
402282:	8b 09                	mov    (%ecx),%ecx
402284:	33 d2                	xor    %edx,%edx
402286:	66 89 14 41          	mov    %dx,(%ecx,%eax,2)
40228a:	c2 04 00             	ret    $0x4
40228d:	8b 54 24 04          	mov    0x4(%esp),%edx
402291:	56                   	push   %esi
402292:	8b f1                	mov    %ecx,%esi
402294:	57                   	push   %edi
402295:	8b 7e 10             	mov    0x10(%esi),%edi
402298:	3b fa                	cmp    %edx,%edi
40229a:	72 43                	jb     0x4022df
40229c:	8b c7                	mov    %edi,%eax
40229e:	53                   	push   %ebx