401f12:	33 c0                	xor    %eax,%eax
401f14:	5f                   	pop    %edi
401f15:	5e                   	pop    %esi
401f16:	5b                   	pop    %ebx
401f17:	c9                   	leave
401f18:	c3                   	ret
401f19:	cc                   	int3
401f1a:	cc                   	int3
401f1b:	cc                   	int3
401f1c:	cc                   	int3
401f1d:	cc                   	int3
401f1e:	cc                   	int3
401f1f:	8b ff                	mov    %edi,%edi
401f21:	55                   	push   %ebp
401f22:	8b ec                	mov    %esp,%ebp
401f24:	51                   	push   %ecx
401f25:	51                   	push   %ecx
401f26:	53                   	push   %ebx
401f27:	57                   	push   %edi
401f28:	8b fa                	mov    %edx,%edi
401f2a:	8b d9                	mov    %ecx,%ebx
401f2c:	8b 47 04             	mov    0x4(%edi),%eax
401f2f:	8b 17                	mov    (%edi),%edx
401f31:	85 c0                	test   %eax,%eax
401f33:	75 14                	jne    0x401f49
401f35:	52                   	push   %edx
401f36:	53                   	push   %ebx
401f37:	ff 15 dc 81 40 00    	call   *0x4081dc
401f3d:	f7 d8                	neg    %eax
401f3f:	59                   	pop    %ecx
401f40:	1b c0                	sbb    %eax,%eax
401f42:	59                   	pop    %ecx
401f43:	40                   	inc    %eax
401f44:	e9 58 01 00 00       	jmp    0x4020a1
401f49:	2b c2                	sub    %edx,%eax
401f4b:	56                   	push   %esi
401f4c:	d1 f8                	sar    $1,%eax
401f4e:	50                   	push   %eax
401f4f:	52                   	push   %edx
401f50:	53                   	push   %ebx
401f51:	ff 15 c8 81 40 00    	call   *0x4081c8
401f57:	83 c4 0c             	add    $0xc,%esp
401f5a:	85 c0                	test   %eax,%eax
401f5c:	0f 85 3c 01 00 00    	jne    0x40209e
401f62:	8b 77 04             	mov    0x4(%edi),%esi
401f65:	8b c6                	mov    %esi,%eax
401f67:	2b 07                	sub    (%edi),%eax
401f69:	d1 f8                	sar    $1,%eax
401f6b:	8d 3c 43             	lea    (%ebx,%eax,2),%edi
401f6e:	0f b7 06             	movzwl (%esi),%eax
401f71:	66 85 c0             	test   %ax,%ax
401f74:	0f 84 d7 00 00 00    	je     0x402051
401f7a:	6a 2a                	push   $0x2a
401f7c:	8b c8                	mov    %eax,%ecx
401f7e:	58                   	pop    %eax
401f7f:	66 3b c8             	cmp    %ax,%cx
401f82:	75 0e                	jne    0x401f92
401f84:	56                   	push   %esi
401f85:	ff 15 5c 81 40 00    	call   *0x40815c
401f8b:	8b f0                	mov    %eax,%esi
401f8d:	e9 ae 00 00 00       	jmp    0x402040
401f92:	50                   	push   %eax
401f93:	56                   	push   %esi
401f94:	ff 15 d0 81 40 00    	call   *0x4081d0
401f9a:	8b d8                	mov    %eax,%ebx
401f9c:	59                   	pop    %ecx
401f9d:	59                   	pop    %ecx
401f9e:	85 db                	test   %ebx,%ebx
401fa0:	0f 84 b0 00 00 00    	je     0x402056
401fa6:	0f b7 0e             	movzwl (%esi),%ecx
401fa9:	2b de                	sub    %esi,%ebx
401fab:	51                   	push   %ecx
401fac:	d1 fb                	sar    $1,%ebx
401fae:	ff 15 d4 81 40 00    	call   *0x4081d4
401fb4:	59                   	pop    %ecx
401fb5:	0f b7 0e             	movzwl (%esi),%ecx
401fb8:	51                   	push   %ecx
401fb9:	85 c0                	test   %eax,%eax
401fbb:	74 53                	je     0x402010
401fbd:	ff 15 c0 81 40 00    	call   *0x4081c0
401fc3:	0f b7 c0             	movzwl %ax,%eax
401fc6:	89 45 fc             	mov    %eax,-0x4(%ebp)
401fc9:	0f b7 06             	movzwl (%esi),%eax
401fcc:	50                   	push   %eax
401fcd:	ff 15 ac 81 40 00    	call   *0x4081ac
401fd3:	59                   	pop    %ecx
401fd4:	59                   	pop    %ecx
401fd5:	0f b7 c8             	movzwl %ax,%ecx
401fd8:	0f b7 07             	movzwl (%edi),%eax
401fdb:	89 4d f8             	mov    %ecx,-0x8(%ebp)
401fde:	8b d0                	mov    %eax,%edx
401fe0:	66 85 c0             	test   %ax,%ax
401fe3:	74 26                	je     0x40200b
401fe5:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
401fe9:	74 34                	je     0x40201f
401feb:	0f b7 d0             	movzwl %ax,%edx
401fee:	66 3b c1             	cmp    %cx,%ax
401ff1:	74 18                	je     0x40200b
401ff3:	57                   	push   %edi
401ff4:	ff 15 5c 81 40 00    	call   *0x40815c
401ffa:	8b f8                	mov    %eax,%edi
401ffc:	0f b7 0f             	movzwl (%edi),%ecx
401fff:	8b c1                	mov    %ecx,%eax
402001:	8b d1                	mov    %ecx,%edx
402003:	66 85 c9             	test   %cx,%cx
402006:	8b 4d f8             	mov    -0x8(%ebp),%ecx
402009:	75 da                	jne    0x401fe5
40200b:	66 85 d2             	test   %dx,%dx
40200e:	eb 0d                	jmp    0x40201d
402010:	57                   	push   %edi
402011:	ff 15 d0 81 40 00    	call   *0x4081d0
402017:	59                   	pop    %ecx
402018:	8b f8                	mov    %eax,%edi
40201a:	59                   	pop    %ecx
40201b:	85 ff                	test   %edi,%edi
40201d:	74 7f                	je     0x40209e
40201f:	53                   	push   %ebx
402020:	56                   	push   %esi
402021:	57                   	push   %edi
402022:	ff 15 c8 81 40 00    	call   *0x4081c8
402028:	83 c4 0c             	add    $0xc,%esp
40202b:	85 c0                	test   %eax,%eax
40202d:	74 0b                	je     0x40203a
40202f:	57                   	push   %edi
402030:	ff 15 5c 81 40 00    	call   *0x40815c
402036:	8b f8                	mov    %eax,%edi
402038:	eb 06                	jmp    0x402040
40203a:	8d 3c 5f             	lea    (%edi,%ebx,2),%edi
40203d:	8d 34 5e             	lea    (%esi,%ebx,2),%esi
402040:	0f b7 06             	movzwl (%esi),%eax
402043:	6a 2a                	push   $0x2a
402045:	8b c8                	mov    %eax,%ecx
402047:	66 85 c0             	test   %ax,%ax
40204a:	58                   	pop    %eax
40204b:	0f 85 2e ff ff ff    	jne    0x401f7f
402051:	33 c0                	xor    %eax,%eax
402053:	40                   	inc    %eax
402054:	eb 4a                	jmp    0x4020a0
402056:	8b cf                	mov    %edi,%ecx
402058:	33 db                	xor    %ebx,%ebx
40205a:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40205d:	8d 51 02             	lea    0x2(%ecx),%edx
402060:	66 8b 01             	mov    (%ecx),%ax
402063:	83 c1 02             	add    $0x2,%ecx
402066:	66 3b c3             	cmp    %bx,%ax
402069:	75 f5                	jne    0x402060
40206b:	2b ca                	sub    %edx,%ecx
40206d:	8b d6                	mov    %esi,%edx
40206f:	d1 f9                	sar    $1,%ecx
402071:	8d 5a 02             	lea    0x2(%edx),%ebx
402074:	66 8b 02             	mov    (%edx),%ax
402077:	83 c2 02             	add    $0x2,%edx
40207a:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
40207e:	75 f4                	jne    0x402074
402080:	2b d3                	sub    %ebx,%edx
402082:	d1 fa                	sar    $1,%edx
402084:	3b ca                	cmp    %edx,%ecx
402086:	72 16                	jb     0x40209e
402088:	2b ca                	sub    %edx,%ecx
40208a:	56                   	push   %esi
40208b:	8d 04 4f             	lea    (%edi,%ecx,2),%eax
40208e:	50                   	push   %eax
40208f:	ff 15 dc 81 40 00    	call   *0x4081dc
402095:	f7 d8                	neg    %eax
402097:	59                   	pop    %ecx
402098:	1b c0                	sbb    %eax,%eax
40209a:	59                   	pop    %ecx
40209b:	40                   	inc    %eax
40209c:	eb 02                	jmp    0x4020a0
40209e:	33 c0                	xor    %eax,%eax
4020a0:	5e                   	pop    %esi
4020a1:	5f                   	pop    %edi
4020a2:	5b                   	pop    %ebx
4020a3:	c9                   	leave
4020a4:	c3                   	ret
4020a5:	cc                   	int3
4020a6:	cc                   	int3
4020a7:	cc                   	int3
4020a8:	cc                   	int3
4020a9:	cc                   	int3
4020aa:	cc                   	int3
4020ab:	8b ff                	mov    %edi,%edi
4020ad:	56                   	push   %esi
4020ae:	8b f1                	mov    %ecx,%esi
4020b0:	57                   	push   %edi
4020b1:	8b fa                	mov    %edx,%edi
4020b3:	85 f6                	test   %esi,%esi
4020b5:	75 15                	jne    0x4020cc
4020b7:	33 c0                	xor    %eax,%eax
4020b9:	5f                   	pop    %edi
4020ba:	5e                   	pop    %esi
4020bb:	c3                   	ret
4020bc:	8b d7                	mov    %edi,%edx
4020be:	8b c8                	mov    %eax,%ecx
4020c0:	e8 5a fe ff ff       	call   0x401f1f
4020c5:	85 c0                	test   %eax,%eax
4020c7:	75 0b                	jne    0x4020d4
4020c9:	83 c6 04             	add    $0x4,%esi
4020cc:	8b 06                	mov    (%esi),%eax
4020ce:	85 c0                	test   %eax,%eax
4020d0:	75 ea                	jne    0x4020bc
4020d2:	eb e3                	jmp    0x4020b7
4020d4:	33 c0                	xor    %eax,%eax
4020d6:	40                   	inc    %eax
4020d7:	eb e0                	jmp    0x4020b9
4020d9:	cc                   	int3
4020da:	cc                   	int3
4020db:	cc                   	int3
4020dc:	cc                   	int3
4020dd:	cc                   	int3
4020de:	cc                   	int3
4020df:	8b ff                	mov    %edi,%edi
4020e1:	55                   	push   %ebp
4020e2:	8b ec                	mov    %esp,%ebp
4020e4:	81 ec 30 04 00 00    	sub    $0x430,%esp
4020ea:	a1 b4 71 40 00       	mov    0x4071b4,%eax
4020ef:	33 c5                	xor    %ebp,%eax
4020f1:	89 45 fc             	mov    %eax,-0x4(%ebp)
4020f4:	8b 45 08             	mov    0x8(%ebp),%eax
4020f7:	8b 4d 14             	mov    0x14(%ebp),%ecx
4020fa:	53                   	push   %ebx
4020fb:	89 95 0c fc ff ff    	mov    %edx,-0x3f4(%ebp)
402101:	33 d2                	xor    %edx,%edx
402103:	56                   	push   %esi
402104:	89 85 d8 fb ff ff    	mov    %eax,-0x428(%ebp)
40210a:	83 ce ff             	or     $0xffffffff,%esi
40210d:	8b 45 0c             	mov    0xc(%ebp),%eax
402110:	8b da                	mov    %edx,%ebx
402112:	89 8d d0 fb ff ff    	mov    %ecx,-0x430(%ebp)
402118:	8b 4d 18             	mov    0x18(%ebp),%ecx
40211b:	89 85 04 fc ff ff    	mov    %eax,-0x3fc(%ebp)
402121:	89 8d d4 fb ff ff    	mov    %ecx,-0x42c(%ebp)
402127:	c7 85 14 fc ff ff 02 	movl   $0x2,-0x3ec(%ebp)
40212e:	00 00 00
402131:	89 95 f0 fb ff ff    	mov    %edx,-0x410(%ebp)
402137:	89 95 00 fc ff ff    	mov    %edx,-0x400(%ebp)
40213d:	89 95 f4 fb ff ff    	mov    %edx,-0x40c(%ebp)
402143:	89 9d 10 fc ff ff    	mov    %ebx,-0x3f0(%ebp)
402149:	57                   	push   %edi
40214a:	8b 7d 10             	mov    0x10(%ebp),%edi
40214d:	85 c0                	test   %eax,%eax
40214f:	75 08                	jne    0x402159
402151:	6a 03                	push   $0x3
402153:	58                   	pop    %eax
402154:	e9 77 04 00 00       	jmp    0x4025d0
402159:	33 c9                	xor    %ecx,%ecx
40215b:	6a 0c                	push   $0xc
40215d:	5a                   	pop    %edx
40215e:	f7 e2                	mul    %edx
402160:	0f 90 c1             	seto   %cl
402163:	f7 d9                	neg    %ecx
402165:	0b c8                	or     %eax,%ecx
402167:	51                   	push   %ecx
402168:	e8 51 44 00 00       	call   0x4065be
40216d:	89 85 ec fb ff ff    	mov    %eax,-0x414(%ebp)
402173:	59                   	pop    %ecx
402174:	85 c0                	test   %eax,%eax
402176:	0f 84 4e 04 00 00    	je     0x4025ca
40217c:	8b 8d 04 fc ff ff    	mov    -0x3fc(%ebp),%ecx
402182:	33 d2                	xor    %edx,%edx
402184:	42                   	inc    %edx
402185:	85 c9                	test   %ecx,%ecx
402187:	7e 74                	jle    0x4021fd
402189:	0f ae e8             	lfence
40218c:	8b 07                	mov    (%edi),%eax
40218e:	66 83 38 3d          	cmpw   $0x3d,(%eax)
402192:	0f 85 e3 00 00 00    	jne    0x40227b
402198:	0f ae e8             	lfence
40219b:	8b 07                	mov    (%edi),%eax
40219d:	33 d2                	xor    %edx,%edx
40219f:	83 c0 02             	add    $0x2,%eax
4021a2:	66 39 10             	cmp    %dx,(%eax)
4021a5:	0f 84 cd 00 00 00    	je     0x402278
4021ab:	52                   	push   %edx
4021ac:	ff b5 0c fc ff ff    	push   -0x3f4(%ebp)
4021b2:	8d 8d f4 fb ff ff    	lea    -0x40c(%ebp),%ecx
4021b8:	51                   	push   %ecx
4021b9:	6a 01                	push   $0x1
4021bb:	8d 8d 40 fe ff ff    	lea    -0x1c0(%ebp),%ecx
4021c1:	51                   	push   %ecx
4021c2:	50                   	push   %eax
4021c3:	ff 15 00 81 40 00    	call   *0x408100
4021c9:	85 c0                	test   %eax,%eax
4021cb:	75 0f                	jne    0x4021dc
4021cd:	ff 15 38 80 40 00    	call   *0x408038
4021d3:	83 f8 7a             	cmp    $0x7a,%eax
4021d6:	0f 85 d6 03 00 00    	jne    0x4025b2
4021dc:	39 9d f4 fb ff ff    	cmp    %ebx,-0x40c(%ebp)
4021e2:	0f 84 c2 03 00 00    	je     0x4025aa
4021e8:	8b 8d 04 fc ff ff    	mov    -0x3fc(%ebp),%ecx
4021ee:	33 d2                	xor    %edx,%edx
4021f0:	42                   	inc    %edx
4021f1:	8b da                	mov    %edx,%ebx
4021f3:	89 9d 10 fc ff ff    	mov    %ebx,-0x3f0(%ebp)
4021f9:	3b ca                	cmp    %edx,%ecx
4021fb:	7f 7e                	jg     0x40227b
4021fd:	89 95 00 fc ff ff    	mov    %edx,-0x400(%ebp)
402203:	33 f6                	xor    %esi,%esi
402205:	6b c3 0c             	imul   $0xc,%ebx,%eax
402208:	8b d3                	mov    %ebx,%edx
40220a:	89 95 f8 fb ff ff    	mov    %edx,-0x408(%ebp)
402210:	89 85 08 fc ff ff    	mov    %eax,-0x3f8(%ebp)
402216:	3b d9                	cmp    %ecx,%ebx
402218:	0f 8d ec 01 00 00    	jge    0x40240a
40221e:	8b 8d ec fb ff ff    	mov    -0x414(%ebp),%ecx
402224:	8b df                	mov    %edi,%ebx
402226:	83 c1 08             	add    $0x8,%ecx
402229:	03 c1                	add    %ecx,%eax
40222b:	89 85 fc fb ff ff    	mov    %eax,-0x404(%ebp)
402231:	8b 04 93             	mov    (%ebx,%edx,4),%eax
402234:	89 b5 e8 fb ff ff    	mov    %esi,-0x418(%ebp)
40223a:	89 b5 e4 fb ff ff    	mov    %esi,-0x41c(%ebp)
402240:	89 85 e0 fb ff ff    	mov    %eax,-0x420(%ebp)
402246:	66 83 38 40          	cmpw   $0x40,(%eax)
40224a:	75 17                	jne    0x402263
40224c:	50                   	push   %eax
40224d:	c7 85 e8 fb ff ff 01 	movl   $0x1,-0x418(%ebp)
402254:	00 00 00
402257:	ff 15 5c 81 40 00    	call   *0x40815c
40225d:	89 85 e0 fb ff ff    	mov    %eax,-0x420(%ebp)
402263:	66 83 38 27          	cmpw   $0x27,(%eax)
402267:	75 48                	jne    0x4022b1
402269:	50                   	push   %eax
40226a:	ff 15 5c 81 40 00    	call   *0x40815c
402270:	89 85 e0 fb ff ff    	mov    %eax,-0x420(%ebp)
402276:	eb 4c                	jmp    0x4022c4
402278:	33 d2                	xor    %edx,%edx
40227a:	42                   	inc    %edx
40227b:	0f ae e8             	lfence
40227e:	8b 04 9f             	mov    (%edi,%ebx,4),%eax
402281:	6a 2a                	push   $0x2a
402283:	5e                   	pop    %esi
402284:	66 39 30             	cmp    %si,(%eax)
402287:	0f 85 76 ff ff ff    	jne    0x402203
40228d:	0f ae e8             	lfence
402290:	8b 04 9f             	mov    (%edi,%ebx,4),%eax
402293:	33 f6                	xor    %esi,%esi
402295:	66 39 70 02          	cmp    %si,0x2(%eax)
402299:	0f 85 66 ff ff ff    	jne    0x402205
40229f:	43                   	inc    %ebx
4022a0:	89 95 00 fc ff ff    	mov    %edx,-0x400(%ebp)
4022a6:	89 9d 10 fc ff ff    	mov    %ebx,-0x3f0(%ebp)
4022ac:	e9 54 ff ff ff       	jmp    0x402205
4022b1:	6a 2a                	push   $0x2a
4022b3:	59                   	pop    %ecx
4022b4:	51                   	push   %ecx
4022b5:	50                   	push   %eax
4022b6:	ff 15 d0 81 40 00    	call   *0x4081d0
4022bc:	59                   	pop    %ecx
4022bd:	59                   	pop    %ecx