Function at 0x46ccc0
Capabilities:
Check os version
Get number of processors
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x48dbac
push eax
mov eax, 0x10b4
mov dword fs:[0], esp
call fcn.00489f60
push ebx
mov ebx, ecx
push ebp
push esi
mov eax, dword [ebx + 0x30]
push edi
xor ebp, ebp
lea ecx, [esp + 0x64]
mov eax, dword [eax + 0x9c]
mov dword [esp + 0x28], ebx
push eax
mov dword [esp + 0x88], ebp
call dword [sym.imp.Staff2.dll_public:_void___thiscall_CSWMRLock::constructor_class_CSWMRG__]
lea ecx, [esp + 0x64]
mov dword [esp + 0x10cc], ebp
call dword [sym.imp.Staff2.dll_public:_int___thiscall_CSWMRLock::ReadLock_void_]
mov edi, dword [esp + 0x10d4]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x129]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x50]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push edx
and ecx, 3
lea eax, [esp + 0x48]
rep movsb byte es:[edi], byte [esi]
lea edx, [esp + 0x12c]
lea ecx, [ebx + 0x31dc]
push eax
push edx
mov dword [esp + 0x60], ecx
call fcn.00488210
test eax, eax
je case.default.0x46d2e7
mov edi, dword [esp + 0x10d8]
mov al, byte [edi + 0x12]
push eax
call dword [sym.imp.Staff2.dll_char___cdecl_STAFFOppositeDir_char_]
mov ecx, dword [esp + 0x54]
add esp, 4
lea edx, [esp + 0x128]
mov byte [esp + 0x140], al
push ecx
mov ecx, dword [esp + 0x58]
push edx
call fcn.00488410
movsx eax, word [esp + 0x46]
movsx ecx, word [esp + 0x44]
push eax
push ecx
mov ecx, ebx
call fcn.00472c10
movsx edx, word [esp + 0x46]
mov dword [esp + 0xe0], eax
push edx
movsx eax, word [esp + 0x48]
push eax
mov ecx, ebx
call fcn.00472ca0
movsx ecx, word [esp + 0x46]
movsx edx, word [esp + 0x44]
push ecx
push edx
mov ecx, ebx
mov dword [esp + 0x94], eax
call fcn.00472cf0
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x50]
push 1
lea ecx, [eax + 0x37d8]
lea esi, [eax + 0x42d0]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x40], esi
mov eax, dword [ecx + 0xaf0]
mov ecx, ebx
push eax
call fcn.004644b0
mov dword [esp + 0xd4], eax
mov ax, word [esp + 0x13c]
cmp ax, bp
jle 0x46ce30
mov ebp, 1
movsx eax, ax
jmp 0x46ce40
jge 0x46ce3e
movsx eax, ax
mov ebp, 6
neg eax
jmp 0x46ce40
xor eax, eax
mov edx, dword [esp + 0x142]
mov ecx, dword [esi + 0x64]
and edx, 0x800
mov dword [esp + 0x24], ecx
cmp edx, 0x800
jne 0x46cec7
cmp ebp, 1
jne 0x46ce97
cmp eax, 0x34
jl 0x46ce6b
cmp eax, 0x3f
jle 0x46cec2
cmp eax, 0x89
je 0x46cec2
cmp eax, 0x8a
je 0x46cec2
cmp eax, 0xf0
je 0x46cec2
cmp eax, 0xf1
je 0x46cec2
cmp eax, 0xbe
jl 0x46cec7
cmp eax, 0xc2
jle 0x46cec2
jmp 0x46cec7
cmp ebp, 6
jne 0x46cec7
cmp eax, 0x54
je 0x46cec2
cmp eax, 0x72
je 0x46cec2
cmp eax, 0x86
je 0x46cec2
cmp eax, 0x9a
je 0x46cec2
cmp eax, 0xae
je 0x46cec2
cmp eax, 0xc2
jne 0x46cec7
add dword [esp + 0x24], 2
mov cl, byte [esp + 0x146]
and cl, 4
cmp cl, 4
jne 0x46cf44
cmp ebp, 1
jne 0x46cf11
cmp eax, 0x34
jl 0x46cee5
cmp eax, 0x3f
jle 0x46cf3c
cmp eax, 0x89
je 0x46cf3c
cmp eax, 0x8a
je 0x46cf3c
cmp eax, 0xf0
je 0x46cf3c
cmp eax, 0xf1
je 0x46cf3c
cmp eax, 0xbe
jl 0x46cf44
cmp eax, 0xc2
jle 0x46cf3c
jmp 0x46cf44
cmp ebp, 6
jne 0x46cf44
cmp eax, 0x54
je 0x46cf3c
cmp eax, 0x72
je 0x46cf3c
cmp eax, 0x86
je 0x46cf3c
cmp eax, 0x9a
je 0x46cf3c
cmp eax, 0xae
je 0x46cf3c
cmp eax, 0xc2
jne 0x46cf44
mov dword [esp + 0x24], 0x19
mov al, byte [edi]
test al, al
jne 0x46d08d
inc edi
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xf9]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x14]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0xf8]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0xec]
push ecx
mov ecx, dword [esp + 0x58]
push edx
push eax
call fcn.00488210
test eax, eax
je case.default.0x46d2e7
mov ebx, dword [esp + 0x16]
mov ebp, dword [esp + 0x46]
mov ecx, 0xb
lea esi, [esp + 0xf8]
lea edi, [esp + 0x1c0]
rep movsd dword es:[edi], dword [esi]
movsx ecx, bx
movsx eax, bp
sub eax, ecx
cdq
mov ecx, eax
movsw word es:[edi], word [esi]
mov si, word [esp + 0x14]
mov edi, dword [esp + 0x44]
xor ecx, edx
sub ecx, edx
movsx edx, si
movsx eax, di
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x46cfe3
mov ecx, eax
mov dl, byte [esp + 0x48]
mov al, byte [esp + 0x18]
cmp dl, al
je 0x46d012
test dl, dl
jne 0x46cffd
cmp si, di
jle 0x46cffd
cmp bx, bp
jg 0x46d00b
test al, al
jne 0x46d012
cmp di, si
jle 0x46d012
cmp bp, bx
jle 0x46d012
mov edx, 1
jmp 0x46d014
xor edx, edx
mov eax, dword [esp + 0x24]
add edx, ecx
cmp edx, eax
ja case.default.0x46d2e7
mov eax, dword [esp + 0xec]
cmp dword [eax + 0x43a4], 2
je case.default.0x46d2e7
mov cl, byte [eax + 0x4026]
and cl, 8
cmp cl, 8
jne 0x46d063
mov ecx, dword [eax + 0x4158]
test ecx, ecx
je case.default.0x46d2e7
mov edx, dword [esp + 0x10]
test byte [edx + 0x84e], 8
je case.default.0x46d2e7
mov ecx, dword [esp + 0x10dc]
test ecx, ecx
jne 0x46d182
mov al, byte [eax + 0x37fc]
test al, al
jl 0x46d182
cmp al, 9
jg 0x46d182
jmp case.default.0x46d2e7
cmp al, 2
jne case.default.0x46d2e7
inc edi
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xf9]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x14]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0xf8]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0xf0]
push ecx
mov ecx, dword [ebx + 0x32c8]
push edx
push eax
add ecx, 0x40
call fcn.0040a290
test eax, eax
je case.default.0x46d2e7
mov ebx, dword [esp + 0x16]
mov ebp, dword [esp + 0x46]
mov ecx, 0xb
lea esi, [esp + 0xf8]
lea edi, [esp + 0x1c0]
rep movsd dword es:[edi], dword [esi]
movsx ecx, bx
movsx eax, bp
sub eax, ecx
cdq
mov ecx, eax
movsw word es:[edi], word [esi]
mov si, word [esp + 0x14]
mov edi, dword [esp + 0x44]
xor ecx, edx
sub ecx, edx
movsx edx, si
movsx eax, di
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x46d12f
mov ecx, eax
mov dl, byte [esp + 0x48]
mov al, byte [esp + 0x18]
cmp dl, al
je 0x46d15e
test dl, dl
jne 0x46d149
cmp si, di
jle 0x46d149
cmp bx, bp
jg 0x46d157
test al, al
jne 0x46d15e
cmp di, si
jle 0x46d15e
cmp bp, bx
jle 0x46d15e
mov edx, 1
jmp 0x46d160
xor edx, edx
mov eax, dword [esp + 0x24]
add edx, ecx
cmp edx, eax
ja case.default.0x46d2e7
mov eax, dword [esp + 0xf0]
cmp dword [eax + 0x16c], 1
je case.default.0x46d2e7
mov ecx, dword [esp + 0x10]
lea eax, [ecx + 0x6e0]
mov ebx, dword [ecx + 0x6e0]
test bl, bl
mov edx, dword [eax + 4]
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x7c], ecx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x80], edx
je case.default.0x46d2e7
movsx edi, word [esp + 0x76]
mov eax, dword [esp + 0x28]
push edi
push ebx
lea ecx, [eax + 0x32e8]
call fcn.00484e80
mov esi, eax
test esi, esi
mov dword [esp + 0xd8], esi
je case.default.0x46d2e7
xor eax, eax
mov al, byte [esi + 0x56]
test eax, eax
mov dword [esp + 0x88], eax
jge 0x46d1f8
mov dword [esp + 0x88], 0
cmp bl, 1
jne 0x46d2a5
lea eax, [edi - 0x40]
cmp eax, 0x52
ja case.default.0x46d2e7
xor ecx, ecx
mov cl, byte [eax + 0x46f148]
jmp dword [ecx*4 + 0x46f134]
mov esi, dword [esi + 0x18]
test esi, esi
jg case.default.0x46d2e7
mov ecx, dword [esp + 0x50]
neg esi
push esi
call fcn.0042ebf0
mov ecx, eax
mov dword [esp + 0x4c], ecx
jmp 0x46d31e
mov ecx, dword [esp + 0x3c]
mov eax, 0xaaaaaaab
mov esi, dword [ecx + 0x2c]
mov edx, dword [ecx + 0x18]
add esi, edx
mul dword [ecx + 0x30]
shr edx, 1
lea ecx, [edx + esi*2]
mov dword [esp + 0x4c], ecx
jmp 0x46d31e
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x2c]
mov edi, dword [edx + 0x18]
add eax, edi
lea ecx, [eax + eax*2]
mov eax, 0xaaaaaaab
mul dword [edx + 0x30]
shr edx, 1
add ecx, edx
mov dword [esp + 0x4c], ecx
jmp 0x46d31e
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x2c]
mov edi, dword [edx + 0x18]
add eax, edi
lea ecx, [eax + eax*2]
mov eax, 0xaaaaaaab
mul dword [edx + 0x30]
shr edx, 1
add ecx, edx
mov dword [esp + 0x4c], ecx
jmp 0x46d31e
cmp bl, 6
jne 0x46d31a
mov ebp, dword [esp + 0x3c]
mov eax, 0xaaaaaaab
mov dword [esp + 0x84], 1
mul dword [ebp + 0x30]
mov eax, dword [esi + 0x18]
shr edx, 1
mov ecx, edx
mov edx, dword [ebp + 0x2c]
sub ecx, eax
mov eax, dword [ebp + 0x18]
add ecx, edx
add ecx, eax
jns 0x46d2db
mov ecx, 1
lea eax, [edi - 0x50]
cmp eax, 4
ja case.default.0x46d2e7
jmp dword [eax*4 + 0x46f19c]
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x784]
imul edx, dword [eax + 0x20]
mov eax, 0xcccccccd
mul edx
shr edx, 5
add ecx, edx
mov dword [esp + 0x4c], ecx
jmp 0x46d31e
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x788]
jmp 0x46d2f8
mov ecx, dword [esp + 0x4c]
xor esi, esi
cmp ecx, esi
jge 0x46d328
mov dword [esp + 0x4c], esi
mov ecx, dword [esp + 0x28]
xor eax, eax
mov dword [esp + 0x58], esi
mov dword [esp + 0x1c], esi
mov edx, dword [ecx + 0x32c4]
mov dword [esp + 0x60], 0x800
cmp edx, 0x4e
mov dl, byte [esp + 0x148]
sete al
and dl, 8
mov dword [esp + 0xe8], eax
cmp dl, 8
mov dword [esp + 0xd0], esi
mov dword [esp + 0x38], esi
jne 0x46db07
cmp bl, 1
jne 0x46db07
mov ax, word [esp + 0x76]
cmp ax, 0x45
je 0x46d399
cmp ax, 0x46
je 0x46d399
cmp ax, 0x91
je 0x46d399
cmp ax, 0x92
jne 0x46db07
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x30]
push eax
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x94]
push ecx
push edx
lea ecx, [esp + 0x20]
push eax
lea edx, [esp + 0x80]
push ecx
mov ecx, dword [esp + 0x68]
push edx
mov dword [esp + 0xe8], 1
call fcn.00488600
cmp eax, esi
je 0x46d817
mov edi, dword [esp + 0x28]
lea eax, [esp + 0x220]
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x2c]
cmp ecx, eax
je 0x46d7dc
lea edx, [esp + 0x14]
lea eax, [esp + 0x44]
push edx
push eax
lea ecx, [edi + 0x323c]
call fcn.00486030
test eax, eax
je 0x46d7dc
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
push 1
mov ecx, dword [eax + 0x42c8]
lea esi, [eax + 0x37d8]
add eax, 0x42d0
push ecx
mov dword [esp + 0xd0], eax
mov eax, dword [edx + 0xaf0]
push eax
mov ecx, edi
call fcn.00464360
mov ecx, dword [esi + 0xaf0]
push 1
push ecx
mov ecx, edi
mov ebx, eax
call fcn.004644b0
mov ecx, dword [esp + 0xd4]
cmp ecx, eax
jne 0x46d7dc
cmp ecx, 1
jne 0x46d478
cmp eax, ecx
jne 0x46d478
test ebx, ebx
je 0x46d7dc
mov al, byte [esi + 0x24]
test al, al
jl 0x46d66a
cmp al, 9
jg 0x46d66a
mov eax, dword [esp + 0x10dc]
test eax, eax
je 0x46d7dc
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x980]
test ecx, ecx
jbe 0x46d4b6
mov ecx, dword [esi + 0x980]
test ecx, ecx
je 0x46d7dc
mov ecx, dword [eax + 0xa3c]
test ecx, ecx
ja 0x46d7dc
test ebx, ebx
jne 0x46d61b
cmp dword [esp + 0xe8], 1
je 0x46d7dc
mov eax, dword [esi + 0x980]
test eax, eax
jne 0x46d61b
mov eax, dword [esi + 0xa3c]
test eax, eax
jne 0x46d61b
movsx edx, word [esp + 0x32]
movsx eax, word [esp + 0x30]
push edx
push eax
mov ecx, edi
call fcn.00472c10
movsx ecx, word [esp + 0x32]
movsx edx, word [esp + 0x30]
push ecx
push edx
mov ecx, edi
mov ebp, eax
call fcn.00472ca0
movsx ecx, word [esp + 0x30]
mov ebx, eax
movsx eax, word [esp + 0x32]
push eax
push ecx
mov ecx, edi
call fcn.00472cf0
mov ecx, dword [esp + 0x8c]
test ecx, ecx
jne 0x46d7dc
test ebx, ebx
jne 0x46d7dc
mov ecx, dword [esp + 0xe0]
test ecx, ecx
jne 0x46d7dc
test ebp, ebp
jne 0x46d7dc
mov ebx, dword [esp + 0xc4]
cmp ebx, eax
jne 0x46d7dc
test ebx, ebx
je 0x46d578
test eax, eax
jne 0x46d5c6
mov ecx, dword [edi + 0x3664]
cmp ecx, 2
je 0x46d592
cmp ecx, 3
je 0x46d592
cmp ecx, 4
mov edx, 0xf
jne 0x46d597
mov edx, 0x14
mov ebp, dword [esp + 0x10]
cmp dword [ebp + 0x20], edx
jbe 0x46d7dc
cmp ecx, 2
je 0x46d5b8
cmp ecx, 3
je 0x46d5b8
cmp ecx, 4
mov ecx, 0xf
jne 0x46d5bd
mov ecx, 0x14
cmp dword [esi + 0x20], ecx
jbe 0x46d7dc
test ebx, ebx
jne 0x46d61b
test eax, eax
jne 0x46d61b
mov ebx, dword [esp + 0x10]
push esi
push ebx
mov ecx, edi
call fcn.00473630
test eax, eax
jne 0x46d61b
mov al, byte [ebx + 0x24]
test al, al
jl 0x46d61b
cmp al, 8
jg 0x46d61b
mov al, byte [esi + 0x24]
test al, al
jl 0x46d61b
cmp al, 8
jg 0x46d61b
mov edx, dword [esp + 0x2c]
push ebx
push edx
push esi
mov ecx, edi
call fcn.00473680
mov ecx, dword [esp + 0x2c]
call fcn.004400b0
test eax, eax
jne 0x46d61b
mov ecx, dword [esp + 0x2c]
push 3
call fcn.0043a710
mov eax, dword [esp + 0xc8]
mov ecx, dword [eax + 0x60]
test ecx, ecx
je 0x46d7dc
mov ecx, dword [esp + 0x2c]
cmp dword [ecx + 0x43a4], 1
jne 0x46d7dc
mov dl, byte [esi + 0x84e]
and dl, 8
cmp dl, 8
jne 0x46d66a
mov eax, dword [esi + 0x980]
test eax, eax
je 0x46d7dc
mov eax, dword [esp + 0x10]
test byte [eax + 0x84e], dl
je 0x46d7dc
mov eax, dword [esp + 0x44]
mov si, word [esp + 0x14]
mov ebp, dword [esp + 0x16]
cmp ax, si
jne 0x46d6ca
cmp word [esp + 0x46], bp
jne 0x46d6ca
cmp dword [esp + 0x38], 0x64
jge 0x46d7dc
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x91]
mov ecx, eax
mov dword [ecx], edx
mov edx, dword [esp + 0x95]
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x99]
mov dword [ecx + 8], edx
mov edx, dword [esp + 0x9d]
mov dword [ecx + 0xc], edx
mov dl, byte [esp + 0xa1]
mov byte [ecx + 0x10], dl
jmp 0x46d7cc
mov dword [esp + 0x74], eax
mov ax, word [esp + 0x48]
mov di, word [esp + 0x76]
mov bx, word [esp + 0x74]
mov word [esp + 0x78], ax
jmp 0x46d6fd
mov ebp, dword [esp + 0x16]
mov si, word [esp + 0x14]
mov di, word [esp + 0x76]
jmp 0x46d6fd
mov ebp, dword [esp + 0x16]
mov si, word [esp + 0x14]
movsx eax, di
movsx ecx, bp
sub eax, ecx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
movsx eax, bx
movsx edx, si
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x46d71f
mov ecx, eax
mov dl, byte [esp + 0x78]
mov al, byte [esp + 0x18]
cmp dl, al
je 0x46d74e
test dl, dl
jne 0x46d739
cmp si, bx
jle 0x46d739
cmp bp, di
jg 0x46d747
test al, al
jne 0x46d74e
cmp bx, si
jle 0x46d74e
cmp di, bp
jle 0x46d74e
mov edx, 1
jmp 0x46d750
xor edx, edx
add edx, ecx
cmp edx, 1
jl 0x46d7dc
lea eax, [esp + 0x14]
lea ecx, [esp + 0x74]
push eax
push ecx
call dword [sym.imp.Staff2.dll_void___cdecl_STAFFGetNextPIS_struct_PIS___struct_PIS__]
mov bx, word [esp + 0x7c]
add esp, 8
cmp bx, word [esp + 0x30]
jne 0x46d6e4
mov di, word [esp + 0x76]
cmp di, word [esp + 0x32]
jne 0x46d6f4
cmp dword [esp + 0x38], 0x64
jge 0x46d7dc
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x91]
mov edx, eax
mov dword [edx], ecx
mov ecx, dword [esp + 0x95]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x99]
mov dword [edx + 8], ecx
mov ecx, dword [esp + 0x9d]
mov dword [edx + 0xc], ecx
mov cl, byte [esp + 0xa1]
mov byte [edx + 0x10], cl
mov edx, dword [esp + 0x38]
inc edx
add eax, 0x11
mov dword [esp + 0x38], edx
mov dword [esp + 0x40], eax
mov edi, dword [esp + 0x28]
lea edx, [esp + 0x2c]
lea eax, [esp + 0x30]
push edx
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x94]
push eax
push ecx
lea eax, [esp + 0x20]
push edx
lea ecx, [esp + 0x80]
push eax
push ecx
lea ecx, [edi + 0x31dc]
call fcn.00488700
test eax, eax
jne 0x46d3e8
mov esi, dword [esp + 0x28]
push 0xffffffffffffffff
mov ecx, esi
call fcn.00464990
mov ecx, esi
mov edi, eax
call fcn.00464a70
cmp eax, 1
jne 0x46d857
mov eax, dword [esp + 0x10]
mov edx, dword [esi + 0x3574]
push edx
mov ecx, dword [eax + 0xaf0]
push ecx
lea ecx, [esi + 0x3310]
call fcn.00402860
test eax, eax
je 0x46db55
test edi, edi
jle 0x46d883
cmp edi, 0x28
jg 0x46d883
mov edx, dword [esp + 0x10]
push edi
lea ecx, [esi + 0x3310]
mov eax, dword [edx + 0xaf0]
push eax
call fcn.00402700
test eax, eax
je 0x46db55
mov esi, dword [esp + 0x28]
lea eax, [esp + 0x20]
mov esi, dword [esi + 0x32c8]
push eax
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x98]
mov edx, dword [esi + 0x40]
push eax
mov eax, dword [esp + 0x30]
lea ecx, [esi + 0x40]
push eax
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x84]
push eax
call dword [edx + 0x44]
test eax, eax
je 0x46db55
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x28]
mov ecx, eax
shl ecx, 4
lea edi, [esp + ecx + 0x220]
add edi, eax
mov dword [esp + 0x40], edi
jmp 0x46d8de
mov edi, dword [esp + 0x40]
mov eax, dword [esi + 0x32c4]
cmp eax, 0xb4
jne 0x46d8f8
mov edx, dword [esp + 0x10]
cmp dword [edx + 0xaf0], 2
jne 0x46d90c
cmp eax, 0xb5
jne 0x46d91f
mov eax, dword [esp + 0x10]
cmp dword [eax + 0xaf0], 1
je 0x46d91f
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 0x11c]
cmp byte [edx], 0x57
je 0x46dac7
lea eax, [esp + 0x14]
lea ecx, [esp + 0x44]
push eax
push ecx
lea ecx, [esi + 0x323c]
call fcn.00486030
test eax, eax
je 0x46dac7
mov eax, dword [esp + 0x8c]
test eax, eax
jne 0x46dac7
mov eax, dword [esp + 0x44]
mov si, word [esp + 0x14]
mov ebp, dword [esp + 0x16]
cmp ax, si
jne 0x46d9b7
cmp word [esp + 0x46], bp
jne 0x46d9b7
cmp dword [esp + 0x38], 0x64
jge 0x46dac7
mov eax, dword [esp + 0x91]
mov ecx, dword [esp + 0x95]
mov edx, edi
mov dword [edx], eax
mov eax, dword [esp + 0x99]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x9d]
mov dword [edx + 8], eax
mov al, byte [esp + 0xa1]
mov dword [edx + 0xc], ecx
mov ecx, dword [esp + 0x38]
inc ecx
add edi, 0x11
mov byte [edx + 0x10], al
mov dword [esp + 0x38], ecx
mov dword [esp + 0x40], edi
jmp 0x46dac7
mov cx, word [esp + 0x48]
mov dword [esp + 0x74], eax
mov di, word [esp + 0x76]
mov word [esp + 0x78], cx
mov bx, ax
jmp 0x46d9e8
mov ebp, dword [esp + 0x16]
mov si, word [esp + 0x14]
mov di, word [esp + 0x76]
jmp 0x46d9e8
mov ebp, dword [esp + 0x16]
mov si, word [esp + 0x14]
movsx eax, di
movsx edx, bp
sub eax, edx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
movsx eax, bx
movsx edx, si
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x46da0a
mov ecx, eax
mov dl, byte [esp + 0x78]
mov al, byte [esp + 0x18]
cmp dl, al
je 0x46da39
test dl, dl
jne 0x46da24
cmp si, bx
jle 0x46da24
cmp bp, di
jg 0x46da32
test al, al
jne 0x46da39
cmp bx, si
jle 0x46da39
cmp di, bp
jle 0x46da39
mov edx, 1
jmp 0x46da3b
xor edx, edx
add edx, ecx
cmp edx, 1
jl 0x46dac7
lea eax, [esp + 0x14]
lea ecx, [esp + 0x74]
push eax
push ecx
call dword [sym.imp.Staff2.dll_void___cdecl_STAFFGetNextPIS_struct_PIS___struct_PIS__]
mov bx, word [esp + 0x7c]
add esp, 8
cmp bx, word [esp + 0x30]
jne 0x46d9cf
mov di, word [esp + 0x76]
cmp di, word [esp + 0x32]
jne 0x46d9df
cmp dword [esp + 0x38], 0x64
jge 0x46dac7
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x91]
mov edx, eax
mov dword [edx], ecx
mov ecx, dword [esp + 0x95]
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x99]
mov dword [edx + 8], ecx
mov ecx, dword [esp + 0x9d]
mov dword [edx + 0xc], ecx
mov cl, byte [esp + 0xa1]
mov byte [edx + 0x10], cl
mov edx, dword [esp + 0x38]
inc edx
add eax, 0x11
mov dword [esp + 0x38], edx
mov dword [esp + 0x40], eax
mov esi, dword [esp + 0x28]
mov eax, dword [esi + 0x32c8]
lea ecx, [eax + 0x40]
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x98]
mov edx, dword [ecx]
push eax
mov eax, dword [esp + 0x30]
push eax
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x84]
push eax
call dword [edx + 0x48]
test eax, eax
jne 0x46d8da
jmp 0x46db55
mov ecx, dword [esp + 0xf9]
mov edx, dword [esp + 0xfd]
mov eax, dword [esp + 0x101]
mov dword [esp + 0x220], ecx
mov ecx, dword [esp + 0x105]
mov dword [esp + 0x224], edx
mov dl, byte [esp + 0x109]
mov dword [esp + 0x228], eax
mov dword [esp + 0x22c], ecx
mov byte [esp + 0x230], dl
mov dword [esp + 0x38], 1
mov eax, dword [esp + 0x10d4]
mov ebp, dword [esp + 0x28]
lea ecx, [esp + 0x1f0]
push eax
push ecx
mov ecx, ebp
call fcn.00467d00
mov ecx, 0xb
mov esi, eax
lea edi, [esp + 0x158]
mov eax, dword [esp + 0x10d8]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov ecx, 0xb
lea esi, [esp + 0x1c0]
lea edi, [esp + 0x186]
mov dx, word [eax + 0x14]
rep movsd dword es:[edi], dword [esi]
mov cl, byte [eax + 0x16]
push 0
movsw word es:[edi], word [esi]
mov word [esp + 0x1b8], dx
mov edx, dword [eax + 0x18]
mov byte [esp + 0x1ba], cl
lea eax, [esp + 0x8c8]
mov dword [esp + 0x1bc], edx
lea ecx, [esp + 0x15c]
push eax
lea edx, [esp + 0x4c]
push ecx
push edx
mov ecx, ebp
mov byte [esp + 0x1c7], 0
mov byte [esp + 0x1cc], 0
call fcn.004702d0
mov eax, dword [esp + 0x38]
xor ebx, ebx
test eax, eax
mov dword [esp + 0xc8], ebx
jle 0x46f0b2
mov eax, ebx
or ecx, 0xffffffff
shl eax, 4
lea edx, [esp + 0xf9]
lea edi, [esp + eax + 0x220]
xor eax, eax
add edi, ebx
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x14]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0xf8]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0xec]
lea esi, [ebp + 0x31dc]
push ecx
push edx
push eax
mov ecx, esi
call fcn.00488210
test eax, eax
jne 0x46dc86
lea ecx, [esp + 0xf0]
lea edx, [esp + 0x14]
push ecx
mov ecx, dword [ebp + 0x32c8]
lea eax, [esp + 0xfc]
push edx
push eax
add ecx, 0x40
call fcn.0040a290
test eax, eax
je 0x46f08b
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x8c]
lea eax, [esp + 0x94]
push edx
push eax
lea edx, [esp + 0x20]
push ecx
lea eax, [esp + 0x80]
push edx
push eax
mov ecx, esi
call fcn.00488600
test eax, eax
je 0x46e7cb
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x2c]
cmp eax, edi
je 0x46e783
cmp dword [edi + 0x43a4], 2
je 0x46e783
mov eax, dword [eax + 0x21b0]
test eax, eax
jle 0x46dcef
cmp eax, dword [edi + 0x21b0]
je 0x46e783
mov dword [esp + 0x40], 0
lea esi, [esp + 0x91]
lea eax, [esp + 0xf9]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x46dd2d
test cl, cl
je 0x46dd29
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x46dd2d
add eax, 2
add esi, 2
test cl, cl
jne 0x46dd05
xor eax, eax
jmp 0x46dd32
sbb eax, eax
sbb eax, 0xffffffff
mov edx, dword [edi + 0x42c8]
mov esi, dword [esp + 0x28]
xor ecx, ecx
lea ebx, [edi + 0x37d8]
test eax, eax
mov eax, dword [esp + 0x10]
push 1
sete cl
mov dword [esp + 0x60], ecx
mov ecx, dword [eax + 0xaf0]
push edx
add edi, 0x42d0
push ecx
mov ecx, esi
mov dword [esp + 0xd8], ebx
mov dword [esp + 0x30], edi
call fcn.00464360
mov edx, dword [ebx + 0x79c]
mov dword [esp + 0xc0], eax
mov eax, dword [ebx + 0xaf0]
push 1
push eax
mov ecx, esi
mov dword [esp + 0x7c], edx
call fcn.004644b0
mov ecx, dword [esp + 0xd4]
cmp ecx, eax
jne 0x46e783
cmp ecx, 1
jne 0x46ddbc
cmp eax, 1
jne 0x46ddbc
mov eax, dword [esp + 0xc0]
test eax, eax
je 0x46e783
mov al, byte [ebx + 0x24]
test al, al
jl 0x46dfbc
cmp al, 9
jg 0x46dfbc
mov eax, dword [esp + 0x10dc]
test eax, eax
je 0x46e783
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x980]
test eax, eax
jbe 0x46ddfa
mov eax, dword [ebx + 0x980]
test eax, eax
je 0x46e783
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0xa3c]
test eax, eax
ja 0x46e783
mov eax, dword [esp + 0xc0]
test eax, eax
jne 0x46df5f
cmp dword [esp + 0xe8], 1
je 0x46e783
mov eax, dword [ebx + 0x980]
test eax, eax
jne 0x46df5f
mov eax, dword [ebx + 0xa3c]
test eax, eax
jne 0x46df5f
movsx eax, word [esp + 0x32]
movsx ecx, word [esp + 0x30]
mov edi, dword [esp + 0x28]
push eax
push ecx
mov ecx, edi
call fcn.00472c10
movsx edx, word [esp + 0x32]
mov esi, eax
push edx
movsx eax, word [esp + 0x34]
push eax
mov ecx, edi
call fcn.00472cf0
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xe0]
test eax, eax
jne 0x46e783
test esi, esi
jne 0x46e783
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0xc4]
cmp eax, ecx
jne 0x46e783
test eax, eax
je 0x46dea9
mov eax, ecx
test eax, eax
jne 0x46defb
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x3664]
cmp eax, 2
je 0x46dec7
cmp eax, 3
je 0x46dec7
cmp eax, 4
mov ecx, 0xf
jne 0x46decc
mov ecx, 0x14
mov edx, dword [esp + 0x10]
cmp dword [edx + 0x20], ecx
jbe 0x46e783
cmp eax, 2
je 0x46deed
cmp eax, 3
je 0x46deed
cmp eax, 4
mov eax, 0xf
jne 0x46def2
mov eax, 0x14
cmp dword [ebx + 0x20], eax
jbe 0x46e783
mov eax, dword [esp + 0xc4]
test eax, eax
jne 0x46df5f
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x46df5f
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x28]
push ebx
push esi
mov ecx, edi
call fcn.00473630
test eax, eax
jne 0x46df5f
mov al, byte [esi + 0x24]
test al, al
jl 0x46df5f
cmp al, 8
jg 0x46df5f
mov al, byte [ebx + 0x24]
test al, al
jl 0x46df5f
cmp al, 8
jg 0x46df5f
mov eax, dword [esp + 0x2c]
push esi
push eax
push ebx
mov ecx, edi
call fcn.00473680
mov ecx, dword [esp + 0x2c]
call fcn.004400b0
test eax, eax
jne 0x46df5f
mov ecx, dword [esp + 0x2c]
push 3
call fcn.0043a710
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x60]
test eax, eax
je 0x46e783
mov edx, dword [esp + 0x2c]
cmp dword [edx + 0x43a4], 1
jne 0x46e783
mov al, byte [ebx + 0x84e]
and al, 8
cmp al, 8
jne 0x46dfbc
mov eax, dword [ebx + 0x980]
test eax, eax
je 0x46dfa2
mov ecx, dword [esp + 0x10]
test byte [ecx + 0x84e], 8
jne 0x46dfbc
mov eax, dword [esp + 0x84]
test eax, eax
je 0x46e783
cmp dword [esp + 0x5c], 1
je 0x46e783
mov edx, dword [esp + 0x3c]
xor edi, edi
mov dword [edx + 0x78], edi
mov bp, word [ebx + 0x850]
mov eax, ebp
mov dword [esp + 0xe4], ebp
and eax, 0x1000
test ax, ax
jne 0x46e10e
mov dx, word [ebx + 0x84e]
mov cl, dl
mov dword [esp + 0xcc], edx
and cl, 2
cmp cl, 2
je 0x46e009
mov eax, ebp
and eax, 0x400
cmp eax, 0x400
jne 0x46e021
mov ecx, dword [esp + 0x24]
mov eax, dword [ebx + 0xa58]
mov edi, eax
mov ecx, dword [ecx + 0x98]
cmp eax, ecx
jb 0x46e021
mov edi, ecx
mov al, dl
and al, 0x40
cmp al, 0x40
je 0x46e03b
and ebp, 0x400
cmp ebp, 0x400
jne 0x46e0d2
mov cl, byte [ebx + 0x6e0]
cmp cl, 1
jne 0x46e07d
mov ax, word [ebx + 0x6e2]
cmp ax, 0x34
jl 0x46e059
cmp ax, 0x3f
jle 0x46e0ad
cmp ax, 0x89
je 0x46e0ad
cmp ax, 0x8a
je 0x46e0ad
cmp ax, 0xf0
je 0x46e0ad
cmp ax, 0xf1
je 0x46e0ad
cmp ax, 0xbe
jl 0x46e07d
cmp ax, 0xc2
jle 0x46e0ad
cmp cl, 6
jne 0x46e0d2
mov ax, word [ebx + 0x6e2]
cmp ax, 0x54
je 0x46e0ad
cmp ax, 0x72
je 0x46e0ad
cmp ax, 0x86
je 0x46e0ad
cmp ax, 0x9a
je 0x46e0ad
cmp ax, 0xae
je 0x46e0ad
cmp ax, 0xc2
jne 0x46e0d2
mov ebp, dword [esp + 0x24]
mov eax, dword [ebp + 0x98]
lea eax, [eax + eax*2]
lea ecx, [eax + eax*4]
mov eax, 0x51eb851f
mul ecx
mov esi, edx
mov edx, dword [esp + 0xcc]
shr esi, 5
jmp 0x46e0d8
mov ebp, dword [esp + 0x24]
xor esi, esi
and edx, 0x4000
cmp edx, 0x4000
jne 0x46e0f6
mov eax, 0xcccccccd
mul dword [ebp + 0x98]
shr edx, 2
jmp 0x46e0f8
xor edx, edx
mov ecx, dword [ebp + 0x98]
mov eax, dword [ebp + 0x48]
add ecx, eax
add ecx, edx
add ecx, esi
add ecx, edi
jmp 0x46e386
mov si, word [ebx + 0x84e]
mov edi, esi
and edi, 2
cmp di, 2
je 0x46e13a
mov edx, ebp
and edx, 0x400
cmp edx, 0x400
je 0x46e13a
mov dword [esp + 0x54], 0
jmp 0x46e156
mov ecx, dword [esp + 0x24]
mov eax, dword [ebx + 0xa58]
mov dword [esp + 0x54], eax
mov ecx, dword [ecx + 0x98]
cmp eax, ecx
jb 0x46e156
mov dword [esp + 0x54], ecx
mov eax, esi
and eax, 0x40
cmp ax, 0x40
mov dword [esp + 0xf4], eax
je 0x46e17a
and ebp, 0x400
cmp ebp, 0x400
jne 0x46e20a
mov cl, byte [ebx + 0x6e0]
cmp cl, 1
jne 0x46e1bc
mov ax, word [ebx + 0x6e2]
cmp ax, 0x34
jl 0x46e198
cmp ax, 0x3f
jle 0x46e1ec
cmp ax, 0x89
je 0x46e1ec
cmp ax, 0x8a
je 0x46e1ec
cmp ax, 0xf0
je 0x46e1ec
cmp ax, 0xf1
je 0x46e1ec
cmp ax, 0xbe
jl 0x46e1bc
cmp ax, 0xc2
jle 0x46e1ec
cmp cl, 6
jne 0x46e20a
mov ax, word [ebx + 0x6e2]
cmp ax, 0x54
je 0x46e1ec
cmp ax, 0x72
je 0x46e1ec
cmp ax, 0x86
je 0x46e1ec
cmp ax, 0x9a
je 0x46e1ec
cmp ax, 0xae
je 0x46e1ec
cmp ax, 0xc2
jne 0x46e20a
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x98]
lea eax, [eax + eax*2]
lea ecx, [eax + eax*4]
mov eax, 0x51eb851f
mul ecx
mov ebp, edx
shr ebp, 5
jmp 0x46e20c
xor ebp, ebp
and esi, 0x4000
cmp si, 0x4000
jne 0x46e234
mov edx, dword [esp + 0x24]
mov eax, 0xcccccccd
mul dword [edx + 0x98]
shr edx, 2
mov dword [esp + 0xdc], edx
jmp 0x46e23f
mov dword [esp + 0xdc], 0
mov edx, dword [esp + 0xe4]
cmp di, 2
je 0x46e25e
mov eax, edx
and eax, 0x400
cmp eax, 0x400
je 0x46e25e
xor ebx, ebx
jmp 0x46e276
mov ecx, dword [esp + 0x24]
mov eax, dword [ebx + 0xa58]
mov ebx, eax
mov ecx, dword [ecx + 0x98]
cmp eax, ecx
jb 0x46e276
mov ebx, ecx
cmp word [esp + 0xf4], 0x40
je 0x46e293
and edx, 0x400
cmp edx, 0x400
jne 0x46e32a
mov edx, dword [esp + 0xcc]
mov cl, byte [edx + 0x6e0]
cmp cl, 1
jne 0x46e2dc
mov ax, word [edx + 0x6e2]
cmp ax, 0x34
jl 0x46e2b8
cmp ax, 0x3f
jle 0x46e30c
cmp ax, 0x89
je 0x46e30c
cmp ax, 0x8a
je 0x46e30c
cmp ax, 0xf0
je 0x46e30c
cmp ax, 0xf1
je 0x46e30c
cmp ax, 0xbe
jl 0x46e2dc
cmp ax, 0xc2
jle 0x46e30c
cmp cl, 6
jne 0x46e32a
mov ax, word [edx + 0x6e2]
cmp ax, 0x54
je 0x46e30c
cmp ax, 0x72
je 0x46e30c
cmp ax, 0x86
je 0x46e30c
cmp ax, 0x9a
je 0x46e30c
cmp ax, 0xae
je 0x46e30c
cmp ax, 0xc2
jne 0x46e32a
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x98]
lea eax, [eax + eax*2]
lea ecx, [eax + eax*4]
mov eax, 0x51eb851f
mul ecx
mov ecx, edx
shr ecx, 5
jmp 0x46e32c
xor ecx, ecx
cmp si, 0x4000
jne 0x46e347
mov edx, dword [esp + 0x24]
mov eax, 0xcccccccd
mul dword [edx + 0x98]
shr edx, 2
jmp 0x46e349
xor edx, edx
mov eax, dword [esp + 0x24]
add edx, ecx
add edx, ebx
mov ebx, dword [esp + 0x54]
mov edi, dword [eax + 0x48]
mov esi, dword [eax + 0x98]
add edx, edi
mov eax, 0xcccccccd
add edx, esi
mul edx
mov ecx, edx
mov edx, dword [esp + 0xdc]
shr ecx, 2
add ecx, edx
add ecx, ebp
add ecx, ebx
mov ebx, dword [esp + 0xcc]
add ecx, edi
add ecx, esi
mov esi, dword [esp + 0x10]
mov ax, word [esi + 0x84e]
mov dword [esp + 0x54], eax
and al, 2
cmp al, 2
je 0x46e3b6
mov ax, word [esi + 0x850]
and eax, 0x400
cmp eax, 0x400
je 0x46e3b6
mov ebp, dword [esp + 0x3c]
xor edi, edi
jmp 0x46e3ce
mov ebp, dword [esp + 0x3c]
mov eax, dword [esi + 0xa58]
mov edi, eax
mov edx, dword [ebp + 0x98]
cmp eax, edx
jb 0x46e3ce
mov edi, edx
mov dl, byte [esp + 0x54]
and dl, 0x40
cmp dl, 0x40
je 0x46e3f1
mov ax, word [esi + 0x850]
and eax, 0x400
cmp eax, 0x400
jne 0x46e47d
mov dl, byte [esi + 0x6e0]
cmp dl, 1
jne 0x46e433
mov ax, word [esi + 0x6e2]
cmp ax, 0x34
jl 0x46e40f
cmp ax, 0x3f
jle 0x46e463
cmp ax, 0x89
je 0x46e463
cmp ax, 0x8a
je 0x46e463
cmp ax, 0xf0
je 0x46e463
cmp ax, 0xf1
je 0x46e463
cmp ax, 0xbe
jl 0x46e433
cmp ax, 0xc2
jle 0x46e463
cmp dl, 6
jne 0x46e47d
mov ax, word [esi + 0x6e2]
cmp ax, 0x54
je 0x46e463
cmp ax, 0x72
je 0x46e463
cmp ax, 0x86
je 0x46e463
cmp ax, 0x9a
je 0x46e463
cmp ax, 0xae
je 0x46e463
cmp ax, 0xc2
jne 0x46e47d
mov eax, dword [ebp + 0x98]
lea eax, [eax + eax*2]
lea edx, [eax + eax*4]
mov eax, 0x51eb851f
mul edx
mov esi, edx
shr esi, 5
jmp 0x46e47f
xor esi, esi
mov eax, dword [esp + 0x54]
and eax, 0x4000
cmp eax, 0x4000
jne 0x46e49f
mov eax, 0xcccccccd
mul dword [ebp + 0x98]
shr edx, 2
jmp 0x46e4a1
xor edx, edx
lea eax, [esp + 0x90]
push 0
push eax
lea eax, [esp + 0x130]
push eax
mov eax, dword [ebp + 0x48]
push ecx
mov ecx, dword [ebp + 0x98]
add ecx, eax
add ecx, edx
add ecx, esi
add ecx, edi
mov edi, dword [esp + 0x38]
push ecx
mov ecx, edi
call fcn.0045fab0
test eax, eax
jne 0x46e502
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
push eax
push edx
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x98]
push ebx
push eax
push ecx
lea eax, [esp + 0x13c]
push edx
push eax
mov ecx, edi
call fcn.0045f750
jmp 0x46e783
lea ecx, [esp + 0x14]
lea edx, [esp + 0x30]
push ecx
push edx
call dword [sym.imp.Staff2.dll_char___cdecl_STAFFGetDirection_struct_PIS___struct_PIS__]
add esp, 8
cmp al, 5
mov byte [esp + 0xa8], al
jne 0x46e528
mov byte [esp + 0xa8], 2
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x90]
push eax
push ecx
lea ecx, [edi + 0x31dc]
call fcn.00488410
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x2c]
push 0
push ebp
push edx
push eax
call fcn.0040ffd0
mov ecx, dword [esp + 0xd0]
test ecx, ecx
je 0x46e56b
mov ecx, dword [esp + 0x5c]
test ecx, ecx
jmp 0x46e56b
mov ecx, dword [esp + 0x84]
test ecx, ecx
je 0x46e585
mov ecx, dword [esp + 0x5c]
test ecx, ecx
jne 0x46e585
mov edx, 1
jmp 0x46e587
xor edx, edx
mov ecx, dword [esp + 0x40]
test ecx, ecx
jne 0x46e5a1
mov ecx, dword [esp + 0xc0]
test ecx, ecx
jne 0x46e5a1
mov ecx, 1
jmp 0x46e5a3
xor ecx, ecx
mov esi, dword [esp + 0x24]
push edx
mov edx, dword [esp + 0xc4]
push 1
push edx
push ecx
mov ecx, dword [esp + 0x60]
push eax
mov eax, dword [esp + 0x40]
push eax
push esi
push ebx
push ecx
push ebp
mov ebp, dword [esp + 0x38]
push ebp
mov ecx, edi
call fcn.0046f1b0
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
push 1
push edx
lea eax, [esp + 0x98]
push ebx
push eax
push ecx
lea edx, [esp + 0x13c]
push ebp
push edx
mov ecx, edi
call fcn.0045f750
mov eax, dword [esp + 0x74]
test eax, eax
je 0x46e606
cmp eax, dword [ebx + 0x79c]
je 0x46e783
mov eax, dword [esp + 0x2c]
cmp dword [eax + 0x43a4], 2
jne 0x46e628
or bl, 0xff
xor ecx, ecx
mov dword [esp + 0xaa], ecx
mov dword [esp + 0xae], ecx
jmp 0x46e669
mov ecx, dword [ebx + 0x79c]
cmp ecx, 0x1312d00
jbe 0x46e651
mov eax, 0x51eb851f
mul dword [esi + 8]
mov esi, edx
mov eax, ecx
shr esi, 5
xor edx, edx
div esi
cmp al, 0x64
jae 0x46e667
mov bl, al
jmp 0x46e669
lea ecx, [ecx + ecx*4]
xor edx, edx
lea eax, [ecx + ecx*4]
shl eax, 2
div dword [esi + 8]
cmp al, 0x64
jae 0x46e667
mov bl, al
jmp 0x46e669
mov bl, 0x64
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x1c]
test ecx, ecx
jne 0x46e700
mov ecx, dword [esp + 0x60]
lea ebp, [eax + 0x2f]
cmp ebp, ecx
ja 0x46e6ab
lea edi, [esp + eax + 0x8c4]
mov ecx, 0xb
lea esi, [esp + 0x90]
mov dword [esp + 0x1c], ebp
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [esp + eax + 0x8f2], bl
jmp 0x46e783
mov edx, dword [esp + 0x60]
lea esi, [edx + edx]
push esi
call sub.MFC42.DLL_operatornew
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x64], esi
mov edx, ecx
lea esi, [esp + 0x8c8]
mov edi, eax
add esp, 4
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov dword [esp + 0x58], eax
and ecx, 3
mov dword [esp + 0x1c], ebp
rep movsb byte es:[edi], byte [esi]
mov ecx, edx
lea esi, [esp + 0x90]
add eax, ecx
mov ecx, 0xb
mov edi, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
jmp 0x46e783
mov esi, dword [esp + 0x60]
lea edx, [eax + 0x2f]
cmp edx, esi
mov dword [esp + 0x5c], edx
ja 0x46e728
add eax, ecx
mov ecx, 0xb
lea esi, [esp + 0x90]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
jmp 0x46e77f
mov edx, dword [esp + 0x60]
mov ebp, dword [esp + 0x58]
lea eax, [edx + edx]
push eax
call sub.MFC42.DLL_operatornew
mov ecx, dword [esp + 0x20]
mov esi, ebp
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
mov dword [esp + 0x60], eax
rep movsb byte es:[edi], byte [esi]
call sub.MFC42.DLL_operatordelete
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x24]
add esp, 8
add eax, ecx
mov ecx, 0xb
lea esi, [esp + 0x90]
mov edi, eax
mov edx, dword [esp + 0x5c]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
mov dword [esp + 0x1c], edx
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x30]
push eax
mov eax, dword [esp + 0x8c]
lea edx, [esp + 0x94]
push ecx
push edx
push eax
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x24]
lea edx, [esp + 0x80]
push ecx
push edx
lea ecx, [eax + 0x31dc]
call fcn.00488700
test eax, eax
jne 0x46dcbc
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x28]
jmp 0x46e7cf
mov ebx, dword [esp + 0x1c]
push 0xffffffffffffffff
mov ecx, ebp
call fcn.00464990
mov esi, eax
mov eax, dword [esp + 0x8c]
cmp eax, 1
je 0x46efc6
mov ecx, ebp
call fcn.00464a70
cmp eax, 1
jne 0x46e81b
mov edx, dword [esp + 0x10]
mov ecx, dword [ebp + 0x3574]
push ecx
lea ecx, [ebp + 0x3310]
mov eax, dword [edx + 0xaf0]
push eax
call fcn.00402860
test eax, eax
je 0x46efc6
test esi, esi
jle 0x46e843
cmp esi, 0x28
jg 0x46e843
mov ecx, dword [esp + 0x10]
push esi
mov edx, dword [ecx + 0xaf0]
lea ecx, [ebp + 0x3310]
push edx
call fcn.00402700
test eax, eax
je 0x46efc6
lea edx, [esp + 0x20]
mov eax, dword [ebp + 0x32c8]
push edx
lea edx, [esp + 0x34]
push edx
lea edx, [esp + 0x98]
push edx
mov edx, dword [esp + 0x94]
push edx
lea edx, [esp + 0x24]
lea ecx, [eax + 0x40]
push edx
lea edx, [esp + 0x84]
mov eax, dword [ecx]
push edx
call dword [eax + 0x44]
test eax, eax
je 0x46efc6
mov eax, dword [ebp + 0x32c4]
mov edi, dword [esp + 0x20]
cmp eax, 0xb4
jne 0x46e89e
mov ecx, dword [esp + 0x10]
cmp dword [ecx + 0xaf0], 2
jne 0x46e8b2
cmp eax, 0xb5
jne 0x46e8c1
mov edx, dword [esp + 0x10]
cmp dword [edx + 0xaf0], 1
je 0x46e8c1
mov eax, dword [edi + 0x11c]
cmp byte [eax], 0x57
je 0x46ef85
lea esi, [esp + 0x91]
lea eax, [esp + 0xf9]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x46e8f7
test cl, cl
je 0x46e8f3
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x46e8f7
add eax, 2
add esi, 2
test cl, cl
jne 0x46e8cf
xor eax, eax
jmp 0x46e8fc
sbb eax, eax
sbb eax, 0xffffffff
xor ecx, ecx
test eax, eax
mov eax, dword [edi + 0x16c]
sete cl
cmp eax, 1
mov dword [esp + 0x5c], ecx
je 0x46ef85
mov eax, dword [edi + 0x174]
test eax, eax
jne 0x46ef85
cmp byte [edi + 0xec], 3
jne 0x46e952
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x70]
test eax, eax
jne 0x46e952
mov eax, dword [esp + 0x84]
test eax, eax
je 0x46ef85
mov eax, ecx
cmp eax, 1
je 0x46ef85
mov eax, dword [esp + 0x8c]
test eax, eax
jne 0x46ef85
mov eax, dword [edi + 0x120]
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x74], eax
mov dword [edi + 0x78], 0
mov ecx, dword [esp + 0x20]
mov eax, dword [esi + 0x794]
test eax, eax
jle 0x46e995
mov edx, dword [ecx + 0x11c]
mov ebx, dword [edx + 0x34]
test ebx, ebx
jg 0x46e9a6
test eax, eax
jge 0x46e9b1
mov eax, dword [ecx + 0x11c]
mov edx, dword [eax + 0x34]
test edx, edx
jge 0x46e9b1
mov dword [edi + 0x6c], 1
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx + 0x11c]
cmp byte [ecx], 0x62
jne 0x46e9cc
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [esp + 0x20]
mov dword [edx + 0x298], eax
mov dx, word [esi + 0x84e]
mov al, dl
mov dword [esp + 0x54], edx
and al, 2
cmp al, 2
je 0x46e9f8
mov cx, word [esi + 0x850]
and ecx, 0x400
cmp ecx, 0x400
je 0x46e9f8
xor ebx, ebx
jmp 0x46ea0c
mov eax, dword [esi + 0xa58]
mov ecx, dword [edi + 0x98]
cmp eax, ecx
mov ebx, eax
jb 0x46ea0c
mov ebx, ecx
mov esi, dword [esp + 0x10]
mov al, dl
and al, 0x40
cmp al, 0x40
je 0x46ea31
mov cx, word [esi + 0x850]
and ecx, 0x400
cmp ecx, 0x400
jne 0x46eac5
mov cl, byte [esi + 0x6e0]
cmp cl, 1
jne 0x46ea73
mov ax, word [esi + 0x6e2]
cmp ax, 0x34
jl 0x46ea4f
cmp ax, 0x3f
jle 0x46eaa3
cmp ax, 0x89
je 0x46eaa3
cmp ax, 0x8a
je 0x46eaa3
cmp ax, 0xf0
je 0x46eaa3
cmp ax, 0xf1
je 0x46eaa3
cmp ax, 0xbe
jl 0x46ea73
cmp ax, 0xc2
jle 0x46eaa3
cmp cl, 6
jne 0x46eac5
mov ax, word [esi + 0x6e2]
cmp ax, 0x54
je 0x46eaa3
cmp ax, 0x72
je 0x46eaa3
cmp ax, 0x86
je 0x46eaa3
cmp ax, 0x9a
je 0x46eaa3
cmp ax, 0xae
je 0x46eaa3
cmp ax, 0xc2
jne 0x46eac5
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x98]
lea eax, [eax + eax*2]
lea ecx, [eax + eax*4]
mov eax, 0x51eb851f
mul ecx
mov esi, edx
mov edx, dword [esp + 0x54]
shr esi, 5
jmp 0x46eac7
xor esi, esi
and edx, 0x4000
cmp edx, 0x4000
jne 0x46eaeb
mov edx, dword [esp + 0x3c]
mov eax, 0xcccccccd
mul dword [edx + 0x98]
mov edi, edx
shr edi, 2
jmp 0x46eaed
xor edi, edi
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x90]
push 0
lea ecx, [esp + 0x12c]
push eax
push ecx
mov ecx, dword [ebp + 0x32c8]
push edx
call fcn.0047ae20
push eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 0x98]
mov edx, dword [eax + 0x48]
add ecx, edx
add ecx, edi
add ecx, esi
add ecx, ebx
push ecx
mov ecx, ebp
call fcn.0045fab0
test eax, eax
jne 0x46ec34
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x50]
xor edi, edi
lea eax, [esp + 0x90]
push edi
push edx
mov edx, dword [esp + 0x44]
push eax
push ecx
lea eax, [esp + 0x138]
push edx
push eax
mov ecx, ebp
call fcn.0045f840
mov edx, dword [esp + 0x20]
cmp dword [edx + 0x16c], edi
jne 0x46ef85
mov eax, dword [edx + 0x11c]
cmp byte [eax], 0x4e
jne 0x46ef85
mov ecx, dword [eax + 0x54]
cmp ecx, edi
je 0x46ef85
push edi
push edi
push ecx
mov cx, word [eax + 0x14]
lea eax, [esp + 0x3c]
push ecx
push eax
push edx
lea ecx, [esp + 0x48]
lea edx, [esp + 0xa8]
push ecx
mov ecx, dword [ebp + 0x32c8]
push edx
call fcn.004813c0
mov eax, dword [ebp + 0x32c8]
mov eax, dword [eax + 0x9c]
cmp eax, 1
mov esi, eax
jg 0x46ebc6
mov esi, 1
mov ecx, dword [esp + 0x20]
xor eax, eax
mov edx, dword [ecx + 0x11c]
mov ax, word [edx + 0x18]
cdq
idiv esi
mov dword [ecx + 0x104], eax
mov eax, dword [ebp + 0x32c8]
mov eax, dword [eax + 0x9c]
cmp eax, 1
mov esi, eax
jg 0x46ebf7
mov esi, 1
mov ecx, dword [esp + 0x20]
xor eax, eax
mov edx, dword [ecx + 0x11c]
mov ax, word [edx + 0x18]
cdq
idiv esi
test edx, edx
jle 0x46ec1f
mov eax, dword [ecx + 0x104]
inc eax
mov dword [ecx + 0x104], eax
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x118], edi
mov eax, dword [esp + 0x20]
mov dword [eax + 0x2a0], edi
jmp 0x46ef85
lea ecx, [esp + 0x14]
lea edx, [esp + 0x30]
push ecx
push edx
call dword [sym.imp.Staff2.dll_char___cdecl_STAFFGetDirection_struct_PIS___struct_PIS__]
add esp, 8
cmp al, 5
mov byte [esp + 0xa8], al
jne 0x46ec5a
mov byte [esp + 0xa8], 2
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x30]
push eax
push ecx
mov ecx, dword [ebp + 0x32c8]
lea edx, [esp + 0x98]
push edx
add ecx, 0x40
call fcn.0040a390
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
lea eax, [esp + 0x90]
push eax
push edi
push esi
push ecx
mov ecx, dword [ebp + 0x32c8]
call fcn.0047acb0
mov ecx, dword [esp + 0xd0]
xor ebx, ebx
cmp ecx, ebx
je 0x46ecb1
cmp dword [esp + 0x5c], ebx
jmp 0x46ecb1
cmp dword [esp + 0x84], ebx
je 0x46ecc7
cmp dword [esp + 0x5c], ebx
jne 0x46ecc7
mov ecx, 1
jmp 0x46ecc9
xor ecx, ecx
mov edx, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0x24]
push edx
push esi
mov edx, dword [ecx + 0x11c]
push edx
push ecx
lea ecx, [esp + 0x28]
lea edx, [esp + 0xa4]
push ecx
mov ecx, dword [ebp + 0x32c8]
push edx
push eax
call fcn.00478360
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x50]
push 1
lea ecx, [esp + 0x94]
push eax
push ecx
push edx
lea eax, [esp + 0x138]
push edi
push eax
mov ecx, ebp
call fcn.0045f840
mov ecx, dword [esp + 0x20]
cmp dword [ecx + 0x16c], ebx
jne 0x46edee
mov eax, dword [ecx + 0x11c]
cmp byte [eax], 0x4e
jne 0x46edee
mov edx, dword [eax + 0x54]
cmp edx, ebx
je 0x46edee
push ebx
push ebx
push edx
mov dx, word [eax + 0x14]
lea eax, [esp + 0x3c]
push edx
push eax
push ecx
lea ecx, [esp + 0x48]
lea edx, [esp + 0xa8]
push ecx
mov ecx, dword [ebp + 0x32c8]
push edx
call fcn.004813c0
mov eax, dword [ebp + 0x32c8]
mov eax, dword [eax + 0x9c]
cmp eax, 1
mov esi, eax
jg 0x46ed81
mov esi, 1
mov ecx, dword [esp + 0x20]
xor eax, eax
mov edx, dword [ecx + 0x11c]
mov ax, word [edx + 0x18]
cdq
idiv esi
mov dword [ecx + 0x104], eax
mov eax, dword [ebp + 0x32c8]
mov eax, dword [eax + 0x9c]
cmp eax, 1
mov esi, eax
jg 0x46edb2
mov esi, 1
mov ecx, dword [esp + 0x20]
xor eax, eax
mov edx, dword [ecx + 0x11c]
mov ax, word [edx + 0x18]
cdq
idiv esi
test edx, edx
jle 0x46edda
mov eax, dword [ecx + 0x104]
inc eax
mov dword [ecx + 0x104], eax
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x118], ebx
mov eax, dword [esp + 0x20]
mov dword [eax + 0x2a0], ebx
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x74]
cmp eax, ebx
je 0x46ee02
cmp eax, dword [ecx + 0x120]
je 0x46ef85
cmp dword [ecx + 0x16c], 1
jne 0x46ee20
or bl, 0xff
xor ecx, ecx
mov dword [esp + 0xaa], ecx
mov dword [esp + 0xae], ecx
jmp 0x46ee67
mov esi, dword [ecx + 0x120]
cmp esi, 0x1312d00
jbe 0x46ee4c
mov eax, 0x51eb851f
mul dword [ecx + 0x2bc]
mov ecx, edx
mov eax, esi
shr ecx, 5
xor edx, edx
div ecx
cmp al, 0x64
jae 0x46ee65
mov bl, al
jmp 0x46ee67
lea esi, [esi + esi*4]
xor edx, edx
lea eax, [esi + esi*4]
shl eax, 2
div dword [ecx + 0x2bc]
cmp al, 0x64
jae 0x46ee65
mov bl, al
jmp 0x46ee67
mov bl, 0x64
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x1c]
test ecx, ecx
jne 0x46eefe
mov ecx, dword [esp + 0x60]
lea ebp, [eax + 0x2f]
cmp ebp, ecx
ja 0x46eea9
lea edi, [esp + eax + 0x8c4]
mov ecx, 0xb
lea esi, [esp + 0x90]
mov dword [esp + 0x1c], ebp
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [esp + eax + 0x8f2], bl
jmp 0x46ef81
mov edx, dword [esp + 0x60]
lea esi, [edx + edx]
push esi
call sub.MFC42.DLL_operatornew
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x64], esi
mov edx, ecx
lea esi, [esp + 0x8c8]
mov edi, eax
add esp, 4
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov dword [esp + 0x58], eax
and ecx, 3
mov dword [esp + 0x1c], ebp
rep movsb byte es:[edi], byte [esi]
mov ecx, edx
lea esi, [esp + 0x90]
add eax, ecx
mov ecx, 0xb
mov edi, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
jmp 0x46ef81
mov esi, dword [esp + 0x60]
lea edx, [eax + 0x2f]
cmp edx, esi
mov dword [esp + 0x5c], edx
ja 0x46ef26
add eax, ecx
mov ecx, 0xb
lea esi, [esp + 0x90]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
jmp 0x46ef7d
mov edx, dword [esp + 0x60]
mov ebp, dword [esp + 0x58]
lea eax, [edx + edx]
push eax
call sub.MFC42.DLL_operatornew
mov ecx, dword [esp + 0x20]
mov esi, ebp
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
mov dword [esp + 0x60], eax
rep movsb byte es:[edi], byte [esi]
call sub.MFC42.DLL_operatordelete
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x24]
add esp, 8
add eax, ecx
mov ecx, 0xb
lea esi, [esp + 0x90]
mov edi, eax
mov edx, dword [esp + 0x5c]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
mov dword [esp + 0x1c], edx
mov ebp, dword [esp + 0x28]
lea edx, [esp + 0x20]
mov eax, dword [ebp + 0x32c8]
push edx
lea edx, [esp + 0x34]
push edx
lea edx, [esp + 0x98]
push edx
mov edx, dword [esp + 0x94]
push edx
lea edx, [esp + 0x24]
lea ecx, [eax + 0x40]
push edx
lea edx, [esp + 0x84]
mov eax, dword [ecx]
push edx
call dword [eax + 0x48]
test eax, eax
jne 0x46e880
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x10d4]
lea ecx, [esp + 0x1f0]
push eax
push ecx
mov ecx, ebp
call fcn.00467d00
mov ecx, 0xb
mov esi, eax
lea edi, [esp + 0x158]
mov eax, dword [esp + 0x10d8]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov ecx, 0xb
lea esi, [esp + 0xf8]
lea edi, [esp + 0x186]
mov dx, word [eax + 0x14]
rep movsd dword es:[edi], dword [esi]
mov cl, byte [eax + 0x16]
cmp ebx, 0x2ed1
movsw word es:[edi], word [esi]
mov word [esp + 0x1b4], dx
mov dl, byte [eax + 0x17]
mov eax, dword [eax + 0x18]
mov byte [esp + 0x1b6], cl
mov byte [esp + 0x1b7], dl
mov dword [esp + 0x1b8], eax
ja 0x46f052
mov eax, 0xae4c415d
mul ebx
shr edx, 5
mov byte [esp + 0x1bc], dl
jmp 0x46f05f
mov ebx, 0x2dd3
mov byte [esp + 0x1bc], 0xff
lea ecx, [esp + 0x8c4]
push ebx
lea edx, [esp + 0x15c]
push ecx
lea eax, [esp + 0x4c]
push edx
push eax
mov ecx, ebp
call fcn.004702d0
mov ebx, dword [esp + 0xc8]
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x38]
inc ebx
cmp ebx, eax
mov dword [esp + 0xc8], ebx
jl 0x46dc03
mov eax, dword [esp + 0x58]
test eax, eax
je 0x46f0b2
mov ecx, eax
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov edx, dword [esp + 0xd8]
cmp dword [edx + 4], 0x13
jne case.default.0x46d2e7
mov eax, dword [esp + 0x8c]
test eax, eax
jne case.default.0x46d2e7
mov byte [esp + 0x78], 7
mov edx, dword [esp + 0x78]
push 0
lea ecx, [esp + 0xdc]
push 1
mov eax, 2
push ecx
mov ecx, dword [esp + 0x5c]
push edx
push eax
mov dword [esp + 0xec], 1
call fcn.004322a0
lea ecx, [esp + 0x64]
call dword [sym.imp.Staff2.dll_public:_int___thiscall_CSWMRLock::Unlock_void_]
lea ecx, [esp + 0x64]
mov dword [esp + 0x10cc], 0xffffffff
call dword [sym.imp.Staff2.dll_public_virtual:_void___thiscall_CSWMRLock::destructor_void_]
mov ecx, dword [esp + 0x10c4]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x10c0
ret 0xc