
.intel_syntax noprefix

.global ConvertSectionName
.global OutputByte
.global FillDataBytes
.global OutputBytes
.global SetCurrOffset
.global WritePreprocessedLine
.global SetMasm510
.global close_files
.global AssembleModule
.global Parse_Pass
.global write_to_file
.global ModuleInfo
.global jmpenv

.extern MacroLocals
.extern ContextInit
.extern elf_init
.extern bin_init
.extern RunLineQueue
.extern AddLineQueueX
.extern LstWriteCRef
.extern LstInit
.extern ExprEvalInit
.extern ProcInit
.extern LabelInit
.extern CondInit
.extern CondCheckOpen
.extern RestoreState
.extern SkipSavedState
.extern DefSavedState
.extern FastpassInit
.extern UseSavedState
.extern StoreState
.extern LineStoreCurr
.extern coff_init
.extern QueueDeleteLinnum
.extern LinnumFini
.extern LinnumInit
.extern LclDup
.extern MemFini
.extern MemInit
.extern Tokenize
.extern AssumeInit
.extern MacroInit
.extern PragmaCheckOpen
.extern PragmaInit
.extern ClassCheckOpen
.extern ClassInit
.extern HllCheckOpen
.extern HllInit
.extern GetFName
.extern set_curr_srcfile
.extern ClearSrcStack
.extern InputFini
.extern InputPassInit
.extern InputInit
.extern AddStringToIncludePath
.extern SearchFile
.extern GetExtPart
.extern GetFNamePart
.extern GetLineNumber
.extern omf_FlushCurrSeg
.extern omf_OutSelect
.extern omf_set_filepos
.extern omf_init
.extern TypesInit
.extern SetMasmKeywords
.extern ResWordsFini
.extern ResWordsInit
.extern DisableKeyword
.extern SegmentFini
.extern SegmentInit
.extern ProcessFile
.extern ParseLine
.extern sym_remove_table
.extern SymTables
.extern store_fixup
.extern tstrupr
.extern tfprintf
.extern tprintf
.extern asmerr
.extern LastCodeBufSize
.extern ModelToken
.extern MacroLevel
.extern DefaultDir
.extern Options
.extern SetCPU
.extern SymSetCmpFunc
.extern SymMakeAllSymbolsPublic
.extern SymPassInit
.extern SymInit
.extern SymFind
.extern SymGCreate
.extern tstrncpy
.extern tstrcat
.extern tstrcpy
.extern tstrchr
.extern tstrlen
.extern tmemcmp
.extern tmemcpy
.extern tgetenv
.extern rewind
.extern fclose
.extern fopen
.extern clock
.extern remove


.SECTION .text
	.ALIGN	16

ConvertSectionName:
	mov	qword ptr [rsp+0x8], rcx
	mov	qword ptr [rsp+0x10], rdx
	mov	qword ptr [rsp+0x18], r8
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	lea	rbx, [cst+rip]
	mov	rdi, qword ptr [rbp+0x28]
	xor	esi, esi
$_001:	cmp	esi, 4
	jnc	$_007
	inc	esi
	mov	r8d, dword ptr [rbx]
	mov	rdx, qword ptr [rbx+0x8]
	mov	rcx, qword ptr [rdi+0x8]
	call	tmemcmp@PLT
	test	eax, eax
	jnz	$_006
	mov	edx, dword ptr [rbx]
	add	rdx, qword ptr [rdi+0x8]
	mov	al, byte ptr [rdx]
	test	al, al
	jz	$_002
	cmp	al, 36
	jnz	$_006
	test	byte ptr [rbx+0x4], 0x01
	jnz	$_006
$_002:	mov	rcx, qword ptr [rbp+0x30]
	test	rcx, rcx
	jz	$_004
	mov	rax, qword ptr [rdi+0x78]
	cmp	esi, 4
	jnz	$_003
	cmp	dword ptr [rax+0x18], 0
	jnz	$_004
$_003:	lea	rax, [stt+rip]
	movzx	eax, byte ptr [rax+rsi-0x1]
	mov	dword ptr [rcx], eax
$_004:	mov	rax, qword ptr [rbx+0x10]
	cmp	byte ptr [rdx], 0
	jz	$_005
	mov	rbx, rdx
	mov	rdx, rax
	mov	rcx, qword ptr [rbp+0x38]
	call	tstrcpy@PLT
	mov	rdx, rbx
	mov	rcx, rax
	call	tstrcat@PLT
$_005:	jmp	$_008

$_006:	add	rbx, 24
	jmp	$_001

$_007:	mov	rax, qword ptr [rbp+0x28]
	mov	rax, qword ptr [rax+0x8]
$_008:	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

OutputByte:
	mov	qword ptr [rsp+0x8], rcx
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	mov	rsi, qword ptr [r14+0x38]
	mov	rdi, qword ptr [rsi+0x78]
	cmp	dword ptr [write_to_file+rip], 0
	jz	$_010
	mov	ebx, dword ptr [rdi+0xC]
	sub	ebx, dword ptr [rdi+0x8]
	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_009
	cmp	ebx, 1014
	jc	$_009
	call	omf_FlushCurrSeg@PLT
	mov	ebx, dword ptr [rdi+0xC]
	sub	ebx, dword ptr [rdi+0x8]
$_009:	mov	eax, dword ptr [rbp+0x28]
	mov	rcx, qword ptr [rdi+0x10]
	mov	byte ptr [rcx+rbx], al
	jmp	$_011

$_010:	mov	eax, dword ptr [rdi+0xC]
	cmp	eax, dword ptr [rdi+0x8]
	jnc	$_011
	mov	dword ptr [rdi+0x8], eax
$_011:	inc	dword ptr [rdi+0xC]
	inc	dword ptr [rdi+0x18]
	or	byte ptr [rdi+0x1C], 0x20
	mov	eax, dword ptr [rdi+0xC]
	cmp	eax, dword ptr [rsi+0x60]
	jle	$_012
	mov	dword ptr [rsi+0x60], eax
$_012:	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

FillDataBytes:
	mov	qword ptr [rsp+0x8], rcx
	mov	qword ptr [rsp+0x10], rdx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	cmp	byte ptr [r14+0x1F], 0
	jz	$_013
	mov	ecx, 1
	call	omf_OutSelect@PLT
$_013:	jmp	$_015

$_014:	movzx	ecx, byte ptr [rbp+0x10]
	call	OutputByte
	dec	dword ptr [rbp+0x18]
$_015:	cmp	dword ptr [rbp+0x18], 0
	jnz	$_014
	leave
	ret

OutputBytes:
	mov	qword ptr [rsp+0x8], rcx
	mov	qword ptr [rsp+0x10], rdx
	mov	qword ptr [rsp+0x18], r8
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	mov	rsi, qword ptr [r14+0x38]
	mov	rdi, qword ptr [rsi+0x78]
	cmp	dword ptr [write_to_file+rip], 0
	jz	$_018
	mov	ebx, dword ptr [rdi+0xC]
	sub	ebx, dword ptr [rdi+0x8]
	add	edx, ebx
	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_016
	cmp	edx, 1014
	jc	$_016
	call	omf_FlushCurrSeg@PLT
	mov	ebx, dword ptr [rdi+0xC]
	sub	ebx, dword ptr [rdi+0x8]
$_016:	cmp	qword ptr [rbp+0x38], 0
	jz	$_017
	mov	r8, qword ptr [rbp+0x28]
	mov	rdx, rsi
	mov	rcx, qword ptr [rbp+0x38]
	call	store_fixup@PLT
$_017:	mov	rdx, rdi
	mov	rax, rsi
	mov	rdi, qword ptr [rdi+0x10]
	add	rdi, rbx
	mov	ecx, dword ptr [rbp+0x30]
	mov	rsi, qword ptr [rbp+0x28]
	rep movsb
	mov	rdi, rdx
	mov	rsi, rax
	jmp	$_019

$_018:	mov	eax, dword ptr [rdi+0xC]
	cmp	eax, dword ptr [rdi+0x8]
	jnc	$_019
	mov	dword ptr [rdi+0x8], eax
$_019:	mov	eax, dword ptr [rbp+0x30]
	add	dword ptr [rdi+0xC], eax
	add	dword ptr [rdi+0x18], eax
	or	byte ptr [rdi+0x1C], 0x20
	mov	eax, dword ptr [rdi+0xC]
	cmp	eax, dword ptr [rsi+0x60]
	jle	$_020
	mov	dword ptr [rsi+0x60], eax
$_020:	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

SetCurrOffset:
	mov	qword ptr [rsp+0x20], r9
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	mov	ebx, edx
	mov	rsi, rcx
	mov	eax, r8d
	mov	ecx, dword ptr [write_to_file+rip]
	mov	rdi, qword ptr [rsi+0x78]
	test	eax, eax
	jz	$_021
	add	ebx, dword ptr [rdi+0xC]
$_021:	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_025
	cmp	rsi, qword ptr [r14+0x38]
	jnz	$_024
	test	ecx, ecx
	jz	$_022
	call	omf_FlushCurrSeg@PLT
$_022:	cmp	dword ptr [rbp+0x40], 0
	jz	$_023
	cmp	byte ptr [r14+0x1F], 0
	jz	$_023
	mov	ecx, 1
	call	omf_OutSelect@PLT
$_023:	mov	dword ptr [LastCodeBufSize+rip], ebx
$_024:	mov	dword ptr [rdi+0x8], ebx
	jmp	$_026

$_025:	test	ecx, ecx
	jnz	$_026
	test	eax, eax
	jnz	$_026
	cmp	dword ptr [rdi+0x18], 0
	jnz	$_026
	mov	dword ptr [rdi+0x8], ebx
$_026:	mov	dword ptr [rdi+0xC], ebx
	and	byte ptr [rdi+0x1C], 0xDF
	mov	eax, dword ptr [rdi+0xC]
	cmp	eax, dword ptr [rsi+0x60]
	jle	$_027
	mov	dword ptr [rsi+0x60], eax
$_027:	xor	eax, eax
	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

$_028:
	push	rsi
	push	rdi
	push	rbx
	sub	rsp, 32
	mov	rbx, qword ptr [SymTables+0x20+rip]
	jmp	$_031

$_029:	mov	rax, qword ptr [rbx+0x78]
	cmp	byte ptr [rax+0x1D], 0
	jnz	$_030
	cmp	dword ptr [rbx+0x60], 65536
	jle	$_030
	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_030
	mov	rdx, qword ptr [rbx+0x8]
	mov	ecx, 2103
	call	asmerr@PLT
$_030:	mov	rbx, qword ptr [rbx+0x80]
$_031:	test	rbx, rbx
	jnz	$_029
	call	qword ptr [r14+0x340]
	xor	eax, eax
	add	rsp, 32
	pop	rbx
	pop	rdi
	pop	rsi
	ret

$_032:
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	mov	eax, dword ptr [r14]
	mov	dword ptr [rbp-0x4], eax
	mov	rsi, qword ptr [Options+0x58+rip]
	or	byte ptr [r14], 0x01
	jmp	$_043

$_033:	lea	rdi, [rsi+0x8]
	mov	edx, 61
	mov	rcx, rdi
	call	tstrchr@PLT
	test	rax, rax
	jnz	$_034
	mov	rcx, rdi
	call	tstrlen@PLT
	lea	rbx, [rdi+rax]
	jmp	$_035

$_034:	mov	rbx, rax
	mov	rax, rbx
	sub	rax, rdi
	inc	eax
	mov	dword ptr [rbp-0x8], eax
	mov	eax, dword ptr [rbp-0x8]
	add	eax, 15
	and	eax, 0xFFFFFFF0
	sub	rsp, rax
	lea	rax, [rsp+0x20]
	mov	r8d, dword ptr [rbp-0x8]
	mov	rdx, rdi
	mov	rcx, rax
	call	tmemcpy@PLT
	mov	ecx, dword ptr [rbp-0x8]
	mov	byte ptr [rax+rcx-0x1], 0
	inc	rbx
	mov	rdi, rax
$_035:	xor	ecx, ecx
	movzx	eax, byte ptr [rdi]
	cmp	al, 46
	jz	$_036
	test	rax, rax
	jnz	$_036
	inc	ecx
	jmp	$_039

$_036:	lea	rdx, [rdi+0x1]
	mov	al, byte ptr [rdx]
$_037:	test	eax, eax
	jz	$_039
	test	byte ptr [r15+rax], 0x44
	jnz	$_038
	inc	ecx
	jmp	$_039

$_038:	inc	rdx
	mov	al, byte ptr [rdx]
	jmp	$_037

$_039:	test	ecx, ecx
	jz	$_040
	mov	rdx, rdi
	mov	ecx, 2008
	call	asmerr@PLT
	jmp	$_044

$_040:	mov	rcx, rdi
	call	SymFind@PLT
	test	rax, rax
	jnz	$_041
	mov	rcx, rdi
	call	SymGCreate@PLT
	mov	byte ptr [rax+0x1D], 10
$_041:	cmp	byte ptr [rax+0x1D], 10
	jz	$_042
	mov	rdx, rdi
	mov	ecx, 2005
	call	asmerr@PLT
	jmp	$_044

$_042:	or	byte ptr [rax+0x10], 0x01
	or	byte ptr [rax+0x10], 0x08
	mov	qword ptr [rax+0x30], rbx
	mov	rsi, qword ptr [rsi]
$_043:	test	rsi, rsi
	jne	$_033
$_044:	mov	eax, dword ptr [rbp-0x4]
	mov	dword ptr [r14], eax
	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

$_045:
	push	rsi
	sub	rsp, 32
	mov	rsi, qword ptr [Options+0x60+rip]
	jmp	$_047

$_046:	lea	rcx, [rsi+0x8]
	call	AddStringToIncludePath@PLT
	mov	rsi, qword ptr [rsi]
$_047:	test	rsi, rsi
	jnz	$_046
	add	rsp, 32
	pop	rsi
	ret

$_048:
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	test	ecx, ecx
	jnz	$_049
	call	$_032
	call	$_045
	test	byte ptr [Options+0x6+rip], 0x20
	jnz	$_049
	lea	rcx, [DS0000+rip]
	call	tgetenv@PLT
	test	rax, rax
	jz	$_049
	mov	rcx, rax
	call	AddStringToIncludePath@PLT
$_049:	leave
	ret

WritePreprocessedLine:
	mov	qword ptr [rsp+0x8], rcx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	cmp	dword ptr [r14+0x64], 0
	jle	$_054
	jmp	$_051

$_050:	inc	rcx
$_051:	movzx	eax, byte ptr [rcx]
	test	byte ptr [r15+rax], 0x08
	jnz	$_050
	cmp	eax, 37
	jnz	$_052
	inc	rcx
	jmp	$_053

$_052:	mov	rcx, qword ptr [rbp+0x10]
$_053:	mov	rdx, rcx
	lea	rcx, [DS0001+rip]
	call	tprintf@PLT
	mov	byte ptr [PrintEmptyLine+rip], 1
	jmp	$_055

$_054:	cmp	byte ptr [PrintEmptyLine+rip], 0
	jz	$_055
	mov	byte ptr [PrintEmptyLine+rip], 0
	lea	rcx, [DS0001+0x2+rip]
	call	tprintf@PLT
$_055:	leave
	ret

SetMasm510:
	mov	eax, ecx
	test	eax, eax
	jz	$_056
	or	byte ptr [r14+0x2], 0x80
	or	byte ptr [r14+0x3], 0x02
	or	byte ptr [r14], 0x04
	or	byte ptr [r14+0x3], 0x08
	jmp	$_057

$_056:	and	byte ptr [r14+0x2], 0x7F
	and	byte ptr [r14+0x3], 0xFD
	and	byte ptr [r14], 0xFB
	and	byte ptr [r14+0x3], 0xF7
$_057:	test	eax, eax
	jz	$_058
	cmp	byte ptr [r14+0x15], 0
	jnz	$_058
	mov	byte ptr [r14+0x17], 2
	cmp	byte ptr [r14+0x9], 0
	jnz	$_058
	and	byte ptr [r14+0x3], 0xFE
	and	byte ptr [r14+0x2], 0xEF
$_058:	ret

$_059:
	push	rsi
	push	rdi
	push	rbx
	sub	rsp, 32
	lea	rdi, [Options+rip]
	mov	eax, dword ptr [rdi]
	mov	dword ptr [r14], eax
	movzx	ecx, byte ptr [rdi+0xA8]
	mov	esi, dword ptr [rdi+0x98]
	and	byte ptr [r14+0x2], 0xEF
	and	byte ptr [r14+0x2], 0xDF
	mov	byte ptr [r14+0x17], 0
	or	byte ptr [r14+0x3], 0x01
	mov	dword ptr [r14+0x5C], 9
	cmp	dword ptr [UseSavedState+rip], 0
	jne	$_066
	mov	eax, dword ptr [rdi+0x94]
	mov	byte ptr [r14+0x9], al
	mov	eax, dword ptr [rdi+0x9C]
	mov	byte ptr [r14+0x7], al
	mov	eax, ecx
	and	eax, 0x9F
	cmp	byte ptr [r14+0xB], 3
	jnz	$_064
	cmp	eax, 128
	jnc	$_060
	mov	ecx, 192
$_060:	mov	esi, 7
	cmp	byte ptr [r14+0x9], 0
	jnz	$_063
	cmp	dword ptr [rdi+0x8C], 2
	jz	$_061
	cmp	dword ptr [rdi+0x8C], 0
	jnz	$_062
$_061:	mov	byte ptr [r14+0x9], 7
	jmp	$_063

$_062:	cmp	dword ptr [rdi+0x8C], 3
	jnz	$_063
	mov	byte ptr [r14+0x9], 2
$_063:	jmp	$_065

$_064:	cmp	esi, 7
	jnz	$_065
	cmp	eax, 3
	jnc	$_065
	mov	ecx, 3
$_065:	movzx	ecx, cl
	call	SetCPU@PLT
	test	esi, esi
	jz	$_066
	lea	rcx, [ModelToken+rip]
	mov	rcx, qword ptr [rcx+rsi*8-0x8]
	mov	r8, rcx
	mov	edx, 520
	lea	rcx, [DS0002+rip]
	call	AddLineQueueX@PLT
$_066:	movzx	eax, byte ptr [rdi+0x5]
	and	eax, 0x40
	shr	eax, 6
	mov	ecx, eax
	call	SetMasm510
	mov	byte ptr [r14+0x5], 0
	or	byte ptr [r14+0x2], 0x40
	or	byte ptr [r14+0x3], 0x10
	mov	eax, dword ptr [rdi+0x88]
	mov	dword ptr [r14+0x1CC], eax
	call	SymSetCmpFunc@PLT
	mov	byte ptr [r14+0x19], 0
	mov	byte ptr [r14+0x8], 10
	mov	al, byte ptr [rdi+0xB1]
	mov	byte ptr [r14+0xA], al
	mov	byte ptr [r14+0x1B], 0
	mov	al, byte ptr [rdi+0xB2]
	mov	byte ptr [r14+0x27], al
	mov	al, byte ptr [rdi+0xB3]
	mov	byte ptr [r14+0x28], al
	mov	eax, dword ptr [rdi+0xA0]
	mov	dword ptr [r14+0x1C0], eax
	mov	al, byte ptr [rdi+0xB6]
	mov	byte ptr [r14+0x2D], al
	mov	al, byte ptr [rdi+0xAF]
	mov	byte ptr [r14+0x29], al
	mov	eax, dword ptr [rdi+0xA4]
	mov	dword ptr [r14+0x1C8], eax
	mov	al, byte ptr [rdi+0xB0]
	mov	byte ptr [r14+0x2A], al
	mov	byte ptr [r14+0x2B], 0
	mov	al, byte ptr [rdi+0xA9]
	mov	byte ptr [r14+0x25], al
	mov	dword ptr [r14+0x190], 0
	mov	dword ptr [r14+0x58], 0
	cmp	qword ptr [r14+0x298], 0
	jz	$_070
	mov	rax, qword ptr [r14+0x298]
$_067:	test	rax, rax
	jz	$_068
	mov	dword ptr [rax+0x8], 0
	mov	rax, qword ptr [rax]
	jmp	$_067

$_068:	mov	rax, qword ptr [SymTables+0x10+rip]
$_069:	test	rax, rax
	jz	$_070
	and	byte ptr [rax+0x12], 0xEF
	mov	rax, qword ptr [rax+0x80]
	jmp	$_069

$_070:
	add	rsp, 32
	pop	rbx
	pop	rdi
	pop	rsi
	ret

$_071:
	push	rsi
	push	rdi
	sub	rsp, 40
	call	HllCheckOpen@PLT
	call	CondCheckOpen@PLT
	call	ClassCheckOpen@PLT
	call	PragmaCheckOpen@PLT
	test	byte ptr [r14+0x3], 0x40
	jnz	$_072
	mov	ecx, 2088
	call	asmerr@PLT
$_072:	lea	rdx, [r14+0x238]
	mov	rcx, qword ptr [rdx]
	jmp	$_077

$_073:	mov	rax, qword ptr [rcx+0x8]
	cmp	byte ptr [rax+0x1D], 1
	jnz	$_074
	mov	rdx, rcx
	jmp	$_076

$_074:	cmp	byte ptr [rax+0x1D], 2
	jnz	$_075
	test	byte ptr [rax+0x4B], 0x02
	jz	$_075
	mov	rax, qword ptr [rcx]
	mov	qword ptr [rdx], rax
	mov	rcx, rdx
	jmp	$_076

$_075:	call	SkipSavedState@PLT
	jmp	$_085

$_076:	mov	rcx, qword ptr [rcx]
$_077:	test	rcx, rcx
	jnz	$_073
	mov	rax, qword ptr [SymTables+0x20+rip]
	jmp	$_080

$_078:	cmp	qword ptr [rax+0x40], 0
	jnz	$_079
	call	SkipSavedState@PLT
	jmp	$_085

$_079:	mov	rax, qword ptr [rax+0x80]
$_080:	test	rax, rax
	jnz	$_078
	mov	rax, qword ptr [r14+0x268]
	jmp	$_084

$_081:	cmp	byte ptr [rax+0x1D], 1
	jnz	$_082
	test	byte ptr [rax+0x10], 0x02
	jnz	$_083
$_082:	call	SkipSavedState@PLT
	jmp	$_085

$_083:	mov	rax, qword ptr [rax+0x80]
$_084:	test	rax, rax
	jnz	$_081
$_085:	cmp	dword ptr [Options+0x8C+rip], 2
	jz	$_086
	cmp	dword ptr [Options+0x8C+rip], 3
	jnz	$_092
$_086:	mov	rcx, qword ptr [SymTables+0x50+rip]
	jmp	$_091

$_087:	mov	rax, qword ptr [rcx+0x30]
	test	rax, rax
	jz	$_088
	cmp	byte ptr [rax+0x1D], 2
	jz	$_089
	cmp	byte ptr [rax+0x1D], 1
	jnz	$_088
	test	byte ptr [rax+0x10], 0x04
	jnz	$_089
$_088:	call	SkipSavedState@PLT
	jmp	$_092

$_089:	cmp	byte ptr [rax+0x1D], 2
	jnz	$_090
	or	byte ptr [rax+0x10], 0x10
$_090:	mov	rcx, qword ptr [rcx+0x80]
$_091:	test	rcx, rcx
	jnz	$_087
$_092:	mov	rdi, qword ptr [SymTables+0x10+rip]
	jmp	$_100

$_093:	mov	rsi, rdi
	mov	rdi, qword ptr [rsi+0x80]
	test	byte ptr [rsi+0x10], 0x10
	jz	$_094
	and	byte ptr [rsi+0x4B], 0xFD
$_094:	test	byte ptr [rsi+0x11], 0x02
	jnz	$_095
	test	byte ptr [rsi+0x4B], 0x02
	jz	$_096
	test	byte ptr [rsi+0x12], 0x10
	jnz	$_096
$_095:	mov	rdx, rsi
	lea	rcx, [SymTables+0x10+rip]
	call	sym_remove_table@PLT
	jmp	$_100

$_096:	test	byte ptr [rsi+0x4B], 0x01
	jnz	$_100
	mov	rax, qword ptr [rsi+0x68]
	test	rax, rax
	jz	$_100
	cmp	byte ptr [rax+0x1D], 1
	jnz	$_099
	test	byte ptr [rax+0x10], 0x04
	jnz	$_098
	cmp	dword ptr [Options+0x8C+rip], 2
	jz	$_097
	cmp	dword ptr [Options+0x8C+rip], 3
	jnz	$_098
$_097:	call	SkipSavedState@PLT
$_098:	jmp	$_100

$_099:	cmp	byte ptr [rax+0x1D], 2
	jz	$_100
	call	SkipSavedState@PLT
$_100:	test	rdi, rdi
	jnz	$_093
	call	DefSavedState@PLT
	cmp	dword ptr [r14+0x35C], 0
	jnz	$_103
	test	byte ptr [Options+0x6+rip], 0x04
	jz	$_101
	call	SymMakeAllSymbolsPublic@PLT
$_101:	test	byte ptr [Options+0x6+rip], 0x40
	jnz	$_102
	mov	dword ptr [write_to_file+rip], 1
$_102:	cmp	qword ptr [r14+0x350], 0
	jz	$_103
	call	qword ptr [r14+0x350]
$_103:	add	rsp, 40
	pop	rdi
	pop	rsi
	ret

$_104:
	push	rsi
	push	rdi
	sub	rsp, 40
	call	InputPassInit@PLT
	call	$_059
	mov	ecx, dword ptr [Parse_Pass+rip]
	call	SymPassInit@PLT
	call	LabelInit@PLT
	mov	ecx, dword ptr [Parse_Pass+rip]
	call	SegmentInit@PLT
	mov	ecx, dword ptr [Parse_Pass+rip]
	call	ContextInit@PLT
	call	ProcInit@PLT
	call	TypesInit@PLT
	mov	ecx, dword ptr [Parse_Pass+rip]
	call	HllInit@PLT
	call	ClassInit@PLT
	call	PragmaInit@PLT
	mov	ecx, dword ptr [Parse_Pass+rip]
	call	MacroInit@PLT
	mov	ecx, dword ptr [Parse_Pass+rip]
	call	AssumeInit@PLT
	mov	ecx, dword ptr [Parse_Pass+rip]
	call	$_048
	and	byte ptr [r14+0x3], 0xBF
	and	byte ptr [r14+0x370], 0xFE
	call	LinnumInit@PLT
	cmp	qword ptr [r14+0x2B0], 0
	jz	$_105
	call	RunLineQueue@PLT
$_105:	mov	dword ptr [StoreState+rip], 0
	cmp	dword ptr [Parse_Pass+rip], 0
	jbe	$_110
	cmp	dword ptr [UseSavedState+rip], 1
	jnz	$_110
	call	RestoreState@PLT
	mov	qword ptr [LineStoreCurr+rip], rax
	mov	rsi, rax
	jmp	$_108

$_106:	mov	edx, dword ptr [rsi+0x10]
	mov	ecx, dword ptr [rsi+0x14]
	call	set_curr_srcfile@PLT
	mov	byte ptr [r14+0x16], 0
	mov	eax, dword ptr [rsi+0x18]
	mov	dword ptr [MacroLevel+rip], eax
	mov	qword ptr [r14+0x48], 0
	xor	r9d, r9d
	mov	r8, qword ptr [r14+0x1D0]
	xor	edx, edx
	lea	rcx, [rsi+0x20]
	call	Tokenize@PLT
	test	rax, rax
	jz	$_107
	mov	dword ptr [r14+0x64], eax
	mov	rcx, qword ptr [r14+0x1D0]
	call	ParseLine@PLT
$_107:	mov	rsi, qword ptr [rsi]
	mov	qword ptr [LineStoreCurr+rip], rsi
$_108:	test	rsi, rsi
	jz	$_109
	test	byte ptr [r14+0x3], 0x40
	jz	$_106
$_109:	jmp	$_113

$_110:	mov	rsi, qword ptr [Options+0x50+rip]
	jmp	$_112

$_111:	lea	rax, [rsi+0x8]
	mov	rsi, qword ptr [rsi]
	mov	edx, 1
	mov	rcx, rax
	call	SearchFile@PLT
	test	rax, rax
	jz	$_112
	mov	rcx, qword ptr [r14+0x1D0]
	call	ProcessFile@PLT
$_112:	test	rsi, rsi
	jnz	$_111
	mov	rcx, qword ptr [r14+0x1D0]
	call	ProcessFile@PLT
$_113:	call	LinnumFini@PLT
	cmp	dword ptr [Parse_Pass+rip], 0
	jnz	$_114
	call	$_071
$_114:	call	ClearSrcStack@PLT
	mov	eax, 1
	add	rsp, 40
	pop	rdi
	pop	rsi
	ret

$_115:
	push	rsi
	push	rdi
	sub	rsp, 40
	mov	rsi, qword ptr [Options+0x30+rip]
	test	rsi, rsi
	jz	$_116
	mov	r8d, 260
	mov	rdx, rsi
	lea	rcx, [r14+0x74]
	call	tstrncpy@PLT
	mov	byte ptr [r14+0x177], 0
	jmp	$_118

$_116:	mov	rcx, qword ptr [r14+0x208]
	call	GetFNamePart@PLT
	mov	rsi, rax
	mov	rcx, rax
	call	GetExtPart@PLT
	cmp	rax, rsi
	jnz	$_117
	mov	rcx, rsi
	call	tstrlen@PLT
	add	rax, rsi
$_117:	sub	rax, rsi
	lea	rcx, [r14+0x74]
	mov	byte ptr [rcx+rax], 0
	mov	r8d, eax
	mov	rdx, rsi
	call	tmemcpy@PLT
$_118:	lea	rsi, [r14+0x74]
	mov	rcx, rsi
	call	tstrupr@PLT
	xor	eax, eax
$_119:	lodsb
	test	al, al
	jz	$_120
	test	byte ptr [r15+rax], 0x44
	jnz	$_119
	mov	byte ptr [rsi-0x1], 95
	jmp	$_119

$_120:
	cmp	byte ptr [r14+0x74], 57
	ja	$_121
	cmp	byte ptr [r14+0x74], 48
	jc	$_121
	mov	byte ptr [r14+0x74], 95
$_121:	add	rsp, 40
	pop	rdi
	pop	rsi
	ret

$_122:
	push	rbp
	mov	rbp, rsp
	sub	rsp, 16
	and	byte ptr [r14+0x370], 0xFD
	and	byte ptr [r14+0x370], 0xFB
	mov	eax, dword ptr [Options+0x90+rip]
	mov	byte ptr [r14+0xB], al
	mov	eax, dword ptr [Options+0x8C+rip]
	mov	ecx, 16
	mul	ecx
	lea	rdx, [formatoptions+rip]
	add	rax, rdx
	mov	qword ptr [r14+0x1B8], rax
	mov	qword ptr [rbp-0x8], rax
	xor	eax, eax
	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_123
	test	byte ptr [Options+0x4+rip], 0x20
	jnz	$_123
	inc	eax
$_123:	mov	byte ptr [r14+0x1F], al
	mov	dword ptr [r14+0x35C], 0
	mov	dword ptr [r14+0x360], 0
	mov	byte ptr [r14+0x15], 0
	mov	byte ptr [r14+0x1C], 0
	mov	byte ptr [r14+0x24], 0
	cmp	dword ptr [Options+0x8+rip], 1
	jnz	$_124
	mov	byte ptr [r14+0x24], 1
$_124:	call	$_115
	mov	rdx, rdi
	lea	rdi, [SymTables+rip]
	mov	ecx, 96
	xor	eax, eax
	rep stosb
	mov	rdi, rdx
	mov	r10, qword ptr [rbp-0x8]
	call	qword ptr [r10]
	leave
	ret

$_125:
	sub	rsp, 40
	call	ResWordsInit@PLT
	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_126
	mov	ecx, 303
	call	DisableKeyword@PLT
	mov	ecx, 315
	call	DisableKeyword@PLT
$_126:	test	byte ptr [Options+0x6+rip], 0x10
	jnz	$_127
	xor	ecx, ecx
	call	SetMasmKeywords@PLT
$_127:	add	rsp, 40
	ret

$_128:
	push	rsi
	push	rdi
	sub	rsp, 40
	lea	rsi, [DS0003+rip]
	mov	rdi, qword ptr [r14+0x208]
	call	fopen@PLT
	test	rax, rax
	jnz	$_129
	mov	rdx, qword ptr [r14+0x208]
	mov	ecx, 1000
	call	asmerr@PLT
$_129:	mov	qword ptr [r14+0x1E8], rax
	test	byte ptr [Options+0x6+rip], 0x40
	jnz	$_131
	lea	rsi, [DS0004+rip]
	mov	rdi, qword ptr [r14+0x210]
	call	fopen@PLT
	test	rax, rax
	jnz	$_130
	mov	rdx, qword ptr [r14+0x210]
	mov	ecx, 1000
	call	asmerr@PLT
$_130:	mov	qword ptr [r14+0x1F0], rax
$_131:	test	byte ptr [Options+rip], 0x08
	jz	$_133
	lea	rsi, [DS0004+rip]
	mov	rdi, qword ptr [r14+0x218]
	call	fopen@PLT
	test	rax, rax
	jnz	$_132
	mov	rdx, qword ptr [r14+0x218]
	mov	ecx, 1000
	call	asmerr@PLT
$_132:	mov	qword ptr [r14+0x1F8], rax
$_133:	add	rsp, 40
	pop	rdi
	pop	rsi
	ret

$_134:
	mov	qword ptr [rsp+0x8], rcx
	push	rbx
	push	rsi
	push	rdi
	push	rbp
	mov	rbp, rsp
	sub	rsp, 344
	call	GetFNamePart@PLT
	mov	rdx, rax
	lea	rcx, [rbp-0x104]
	call	tstrcpy@PLT
	mov	rbx, rax
	mov	rcx, rbx
	call	GetExtPart@PLT
	cmp	rax, rbx
	jnz	$_135
	lea	rdx, [DS0005+rip]
	mov	rcx, rax
	call	tstrcat@PLT
	jmp	$_136

$_135:	lea	rdx, [DS0005+rip]
	mov	rcx, rax
	call	tstrcpy@PLT
$_136:	mov	rdx, rbx
	lea	rcx, [iddcfile+rip]
	call	tstrcpy@PLT
	mov	qword ptr [rbp-0x110], rax
	lea	rsi, [DS0004+rip]
	mov	rdi, rax
	call	fopen@PLT
	test	rax, rax
	jnz	$_137
	mov	rdx, qword ptr [rbp-0x110]
	mov	ecx, 1000
	call	asmerr@PLT
$_137:	mov	qword ptr [rbp-0x118], rax
	mov	rcx, rbx
	call	GetExtPart@PLT
	mov	byte ptr [rax], 0
	mov	rax, qword ptr [rbp+0x28]
	mov	qword ptr [rsp+0x30], rax
	mov	qword ptr [rsp+0x28], rbx
	mov	qword ptr [rsp+0x20], rbx
	mov	r9, rbx
	mov	r8, rbx
	lea	rdx, [DS0006+rip]
	mov	rcx, qword ptr [rbp-0x118]
	call	tfprintf@PLT
	cmp	byte ptr [Options+0xB8+rip], 2
	jnz	$_138
	lea	rdx, [DS0007+rip]
	mov	rcx, qword ptr [rbp-0x118]
	call	tfprintf@PLT
$_138:	lea	rdx, [DS0008+rip]
	mov	rcx, qword ptr [rbp-0x118]
	call	tfprintf@PLT
	mov	rdi, qword ptr [rbp-0x118]
	call	fclose@PLT
	mov	rax, qword ptr [rbp-0x110]
	leave
	pop	rdi
	pop	rsi
	pop	rbx
	ret

close_files:
	push	rsi
	push	rdi
	sub	rsp, 40
	mov	rcx, qword ptr [r14+0x1E8]
	test	rcx, rcx
	jz	$_139
	mov	rdi, rcx
	call	fclose@PLT
	test	rax, rax
	jz	$_139
	mov	rdx, qword ptr [r14+0x208]
	mov	ecx, 3009
	call	asmerr@PLT
$_139:	mov	rcx, qword ptr [r14+0x1F0]
	test	rcx, rcx
	jz	$_140
	mov	rdi, rcx
	call	fclose@PLT
	test	rax, rax
	jz	$_140
	mov	rdx, qword ptr [r14+0x210]
	mov	ecx, 3009
	call	asmerr@PLT
$_140:	test	byte ptr [Options+0x6+rip], 0x40
	jnz	$_141
	cmp	dword ptr [r14+0x35C], 0
	jnz	$_142
$_141:	cmp	dword ptr [remove_obj+rip], 0
	jz	$_143
$_142:	mov	dword ptr [remove_obj+rip], 0
	mov	rdi, qword ptr [r14+0x210]
	call	remove@PLT
$_143:	mov	rcx, qword ptr [r14+0x1F8]
	test	rcx, rcx
	jz	$_144
	mov	rdi, rcx
	call	fclose@PLT
	mov	qword ptr [r14+0x1F8], 0
$_144:	mov	rcx, qword ptr [r14+0x200]
	test	rcx, rcx
	jz	$_145
	mov	rdi, rcx
	call	fclose@PLT
	mov	qword ptr [r14+0x200], 0
	jmp	$_146

$_145:	cmp	qword ptr [r14+0x220], 0
	jz	$_146
	mov	rdi, qword ptr [r14+0x220]
	call	remove@PLT
$_146:	add	rsp, 40
	pop	rdi
	pop	rsi
	ret

$_147:
	lea	rax, [currentftype+rip]
	mov	edx, 1836278062
	jmp	$_155

$_148:	mov	edx, 1784835886
	cmp	dword ptr [Options+0x8C+rip], 0
	jnz	$_151
	mov	edx, 1852400174
	cmp	dword ptr [Options+0x90+rip], 1
	jz	$_149
	cmp	dword ptr [Options+0x90+rip], 2
	jz	$_149
	cmp	dword ptr [Options+0x90+rip], 3
	jnz	$_150
$_149:	mov	edx, 1702389038
	test	byte ptr [Options+0x6+rip], 0x80
	jz	$_150
	mov	edx, 1819042862
$_150:	jmp	$_152

$_151:	cmp	dword ptr [Options+0x8C+rip], 3
	jnz	$_152
	and	edx, 0xFFFF
$_152:	jmp	$_156

$_153:	mov	edx, 1953721390
	jmp	$_156

$_154:	mov	edx, 1920099630
	jmp	$_156

$_155:	cmp	ecx, 1
	jz	$_148
	cmp	ecx, 2
	jz	$_153
	cmp	ecx, 3
	jz	$_154
$_156:	mov	dword ptr [rax], edx
	ret

$_157:
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 296
	call	LclDup@PLT
	mov	qword ptr [r14+0x208], rax
	mov	rcx, rax
	call	GetFNamePart@PLT
	mov	rsi, rax
	mov	edi, 1
	lea	rbx, [rbp-0x104]
	jmp	$_163

$_158:	lea	rax, [Options+rip]
	mov	rax, qword ptr [rax+rdi*8+0x10]
	test	rax, rax
	jnz	$_160
	mov	byte ptr [rbx], 0
	lea	rcx, [DefaultDir+rip]
	mov	rax, qword ptr [rcx+rdi*8]
	test	rax, rax
	jz	$_159
	mov	rdx, rax
	mov	rcx, rbx
	call	tstrcpy@PLT
$_159:	mov	rdx, rsi
	mov	rcx, rbx
	call	tstrcat@PLT
	mov	rcx, rax
	call	GetExtPart@PLT
	mov	rbx, rax
	mov	ecx, edi
	call	$_147
	mov	rdx, rax
	mov	rcx, rbx
	call	tstrcpy@PLT
	lea	rbx, [rbp-0x104]
	jmp	$_162

$_160:	mov	rdx, rax
	mov	rcx, rbx
	call	tstrcpy@PLT
	mov	rcx, rax
	call	GetFNamePart@PLT
	cmp	byte ptr [rax], 0
	jnz	$_161
	mov	rdx, rsi
	mov	rcx, rax
	call	tstrcpy@PLT
$_161:	mov	rcx, rax
	call	GetExtPart@PLT
	cmp	byte ptr [rax], 0
	jnz	$_162
	mov	rbx, rax
	mov	ecx, edi
	call	$_147
	mov	rdx, rax
	mov	rcx, rbx
	call	tstrcpy@PLT
	lea	rbx, [rbp-0x104]
$_162:	mov	rcx, rbx
	call	LclDup@PLT
	lea	rcx, [ModuleInfo+rip]
	mov	qword ptr [rcx+rdi*8+0x208], rax
	inc	edi
$_163:	cmp	rdi, 4
	jc	$_158
	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

$_164:
	mov	qword ptr [rsp+0x8], rcx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	call	MemInit@PLT
	mov	dword ptr [write_to_file+rip], 0
	mov	qword ptr [r14+0x258], 0
	mov	rcx, qword ptr [rbp+0x10]
	call	$_157
	call	FastpassInit@PLT
	call	$_128
	call	$_125
	call	SymInit@PLT
	call	InputInit@PLT
	call	$_122
	call	CondInit@PLT
	call	ExprEvalInit@PLT
	call	LstInit@PLT
	leave
	ret

$_165:
	sub	rsp, 40
	call	SegmentFini@PLT
	call	ResWordsFini@PLT
	mov	qword ptr [r14+0x238], 0
	call	InputFini@PLT
	call	close_files
	xor	eax, eax
	mov	ecx, 4
	lea	rdx, [r14+0x208]
$_166:	mov	qword ptr [rdx+rcx*8-0x8], rax
	dec	rcx
	jnz	$_166
	call	MemFini@PLT
	add	rsp, 40
	ret

AssembleModule:
	mov	qword ptr [rsp+0x8], rcx
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 72
	xor	eax, eax
	mov	dword ptr [MacroLocals+rip], eax
	mov	qword ptr [r14+0x2D0], rax
	lea	rdi, [ModuleInfo+rip]
	mov	ecx, 888
	rep stosb
	mov	byte ptr [r14+0x8], 10
	dec	eax
	mov	dword ptr [rbp-0x8], eax
	test	byte ptr [Options+0x4+rip], 0x01
	jnz	$_167
	mov	rdx, qword ptr [rbp+0x28]
	lea	rcx, [DS0009+rip]
	call	tprintf@PLT
$_167:	lea	rcx, [jmpenv+rip]
	xor	eax, eax
	mov	qword ptr [rcx+0x10], rbp
	mov	qword ptr [rcx], rbx
	mov	qword ptr [rcx+0x8], rsp
	mov	qword ptr [rcx+0x18], r12
	mov	qword ptr [rcx+0x20], r13
	mov	qword ptr [rcx+0x28], r14
	mov	qword ptr [rcx+0x30], r15
	lea	rdx, [$_168+rip]
	mov	qword ptr [rcx+0x38], rdx
$_168:	test	rax, rax
	jz	$_171
	cmp	eax, 1
	jnz	$_169
	call	ClearSrcStack@PLT
	call	$_165
	xor	eax, eax
	mov	dword ptr [MacroLocals+rip], eax
	lea	rdi, [ModuleInfo+rip]
	mov	ecx, 888
	rep stosb
	dec	eax
	mov	dword ptr [rbp-0x8], eax
	jmp	$_171

$_169:	cmp	qword ptr [r14+0x2C0], 0
	jz	$_170
	call	ClearSrcStack@PLT
$_170:	jmp	$_190

$_171:	cmp	byte ptr [Options+0xB8+rip], 0
	jz	$_172
	mov	rcx, qword ptr [rbp+0x28]
	call	$_134
	mov	qword ptr [rbp+0x28], rax
$_172:	mov	rcx, qword ptr [rbp+0x28]
	call	$_164
	mov	dword ptr [Parse_Pass+rip], 0
	test	byte ptr [Options+0x2+rip], 0x80
	jz	$_173
	call	clock@PLT
	mov	dword ptr [rbp-0x4], eax
$_173:	call	$_104
	xor	eax, eax
	cmp	dword ptr [r14+0x35C], eax
	ja	$_188
	mov	rsi, qword ptr [SymTables+0x20+rip]
$_174:	test	rsi, rsi
	jz	$_175
	add	eax, dword ptr [rsi+0x60]
	mov	rsi, qword ptr [rsi+0x80]
	jmp	$_174

$_175:	test	byte ptr [r14+0x370], 0x01
	jnz	$_176
	cmp	eax, dword ptr [rbp-0x8]
	je	$_188
$_176:	mov	dword ptr [rbp-0x8], eax
	cmp	dword ptr [Parse_Pass+rip], 199
	jc	$_177
	mov	edx, 200
	mov	ecx, 3000
	call	asmerr@PLT
$_177:	test	byte ptr [Options+0x4+rip], 0x02
	jz	$_184
	cmp	dword ptr [Options+0x8C+rip], 2
	jz	$_178
	cmp	dword ptr [Options+0x8C+rip], 3
	jnz	$_183
$_178:	mov	rsi, qword ptr [SymTables+0x20+rip]
$_179:	test	rsi, rsi
	jz	$_182
	mov	rbx, qword ptr [rsi+0x78]
	test	rbx, rbx
	jz	$_181
	cmp	dword ptr [Options+0x8C+rip], 2
	jnz	$_180
	cmp	qword ptr [rbx+0x38], 0
	jz	$_180
	mov	rcx, qword ptr [rbx+0x38]
	call	QueueDeleteLinnum@PLT
$_180:	mov	qword ptr [rbx+0x38], 0
$_181:	mov	rsi, qword ptr [rsi+0x80]
	jmp	$_179

$_182:	jmp	$_184

$_183:	lea	rcx, [r14+0x258]
	call	QueueDeleteLinnum@PLT
	mov	qword ptr [r14+0x258], 0
$_184:	mov	rdi, qword ptr [r14+0x1E8]
	call	rewind@PLT
	cmp	dword ptr [write_to_file+rip], 0
	jz	$_185
	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_185
	call	omf_set_filepos@PLT
$_185:	inc	dword ptr [Parse_Pass+rip]
	cmp	qword ptr [r14+0x1F8], 0
	jz	$_187
	cmp	dword ptr [UseSavedState+rip], 0
	jnz	$_186
	mov	rdi, qword ptr [r14+0x1F8]
	call	rewind@PLT
	call	LstInit@PLT
	jmp	$_187

$_186:	cmp	dword ptr [Parse_Pass+rip], 1
	jnz	$_187
	test	byte ptr [Options+0x6+rip], 0x02
	jz	$_187
	call	LstInit@PLT
$_187:	jmp	$_173

$_188:	cmp	dword ptr [Parse_Pass+rip], 0
	jbe	$_189
	cmp	dword ptr [write_to_file+rip], 0
	jz	$_189
	call	$_028
$_189:	call	LstWriteCRef@PLT
	test	byte ptr [Options+0x2+rip], 0x80
	jz	$_190
	call	GetLineNumber@PLT
	mov	ebx, eax
	call	clock@PLT
	sub	eax, dword ptr [rbp-0x4]
	mov	dword ptr [rbp-0x4], eax
	mov	ecx, dword ptr [r14+0x10]
	call	GetFName@PLT
	mov	rdx, rax
	mov	edi, dword ptr [Parse_Pass+rip]
	inc	edi
	mov	eax, dword ptr [r14+0x35C]
	mov	dword ptr [rsp+0x30], eax
	mov	eax, dword ptr [r14+0x360]
	mov	dword ptr [rsp+0x28], eax
	mov	eax, dword ptr [rbp-0x4]
	mov	dword ptr [rsp+0x20], eax
	mov	r9d, edi
	mov	r8d, ebx
	lea	rcx, [DS000A+rip]
	call	tprintf@PLT
$_190:	call	$_165
	xor	eax, eax
	cmp	dword ptr [r14+0x35C], 1
	adc	eax, eax
	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret


.SECTION .data
	.ALIGN	16

Parse_Pass:
	.int   0x00000000

write_to_file:
	.int   0x00000000

cp_text1:
	.byte  0x5F, 0x54, 0x45, 0x58, 0x54, 0x00

cp_text2:
	.byte  0x2E, 0x74, 0x65, 0x78, 0x74, 0x00

cp_data1:
	.byte  0x5F, 0x44, 0x41, 0x54, 0x41, 0x00

cp_data2:
	.byte  0x2E, 0x64, 0x61, 0x74, 0x61, 0x00

cp_const:
	.byte  0x43, 0x4F, 0x4E, 0x53, 0x54, 0x00

cp_rdata:
	.byte  0x2E, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00

cp_bss1:
	.byte  0x5F, 0x42, 0x53, 0x53, 0x00

cp_bss2:
	.byte  0x2E, 0x62, 0x73, 0x73, 0x00, 0x00

formatoptions:
	.quad  bin_init
	.quad  0x0000004E49420000
	.quad  omf_init
	.quad  0x000000464D4F0000
	.quad  coff_init
	.quad  0x000046464F430E12
	.quad  elf_init
	.quad  0x000000464C450F00

cst:
	.byte  0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
	.quad  cp_text1
	.quad  cp_text2
	.quad  0x0000000100000005
	.quad  cp_data1
	.quad  cp_data2
	.quad  0x0000000100000005
	.quad  cp_const
	.quad  cp_rdata
	.quad  0x0000000000000004
	.quad  cp_bss1
	.quad  cp_bss2

stt:
	.byte  0x01, 0x02, 0x02, 0x03

currentftype:
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

remove_obj:
	.int   0x00000000

PrintEmptyLine:
	.byte  0x01

DS0000:
	.byte  0x49, 0x4E, 0x43, 0x4C, 0x55, 0x44, 0x45, 0x00

DS0001:
	.byte  0x25, 0x73, 0x0A, 0x00

DS0002:
	.byte  0x25, 0x72, 0x20, 0x25, 0x73, 0x00

DS0003:
	.byte  0x72, 0x62, 0x00

DS0004:
	.byte  0x77, 0x62, 0x00

DS0005:
	.byte  0x2E, 0x73, 0x00

DS0006:
	.byte  0x70, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x20, 0x49
	.byte  0x44, 0x44, 0x5F, 0x25, 0x73, 0x0A, 0x2E, 0x64
	.byte  0x61, 0x74, 0x61, 0x0A, 0x50, 0x49, 0x44, 0x44
	.byte  0x20, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66
	.byte  0x20, 0x70, 0x74, 0x72, 0x0A, 0x49, 0x44, 0x44
	.byte  0x5F, 0x25, 0x73, 0x20, 0x50, 0x49, 0x44, 0x44
	.byte  0x20, 0x25, 0x73, 0x5F, 0x52, 0x43, 0x0A, 0x25
	.byte  0x73, 0x5F, 0x52, 0x43, 0x20, 0x6C, 0x61, 0x62
	.byte  0x65, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x0A
	.byte  0x69, 0x6E, 0x63, 0x62, 0x69, 0x6E, 0x20, 0x3C
	.byte  0x25, 0x73, 0x3E, 0x0A, 0x00

DS0007:
	.byte  0x64, 0x62, 0x20, 0x30, 0x0A, 0x00

DS0008:
	.byte  0x65, 0x6E, 0x64, 0x0A, 0x00

DS0009:
	.byte  0x20, 0x41, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C
	.byte  0x69, 0x6E, 0x67, 0x3A, 0x20, 0x25, 0x73, 0x0A
	.byte  0x00

DS000A:
	.byte  0x25, 0x73, 0x3A, 0x20, 0x25, 0x75, 0x20, 0x6C
	.byte  0x69, 0x6E, 0x65, 0x73, 0x2C, 0x20, 0x25, 0x75
	.byte  0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x73, 0x2C
	.byte  0x20, 0x25, 0x75, 0x20, 0x6D, 0x73, 0x2C, 0x20
	.byte  0x25, 0x75, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69
	.byte  0x6E, 0x67, 0x73, 0x2C, 0x20, 0x25, 0x75, 0x20
	.byte  0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x0A, 0x00


.SECTION .bss
	.ALIGN	16

ModuleInfo:
	.zero	888 * 1

jmpenv:
	.zero	64 * 1

iddcfile:
	.zero	256 * 1


.att_syntax prefix
