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

Disassembly:
push 0xffffffffffffffff
push 0x48db8c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x9d0
push ebx
mov ebx, ecx
push ebp
push esi
mov eax, dword [ebx + 0x30]
push edi
lea ecx, [esp + 0x68]
mov dword [esp + 0x3c], ebx
mov eax, dword [eax + 0x9c]
push eax
call dword [sym.imp.Staff2.dll_public:_void___thiscall_CSWMRLock::constructor_class_CSWMRG__]
lea ecx, [esp + 0x68]
mov dword [esp + 0x9e8], 0
call dword [sym.imp.Staff2.dll_public:_int___thiscall_CSWMRLock::ReadLock_void_]
mov edi, dword [esp + 0x9f0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x119]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea ebp, [ebx + 0x31dc]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x1c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x118]
and ecx, 3
mov dword [esp + 0x80], ebp
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x64]
push ecx
push edx
push eax
mov ecx, ebp
call fcn.00488210
test eax, eax
je 0x46cc7f
mov ecx, dword [esp + 0x9f4]
mov dl, byte [ecx + 0x12]
push edx
call dword [sym.imp.Staff2.dll_char___cdecl_STAFFOppositeDir_char_]
add esp, 4
mov byte [esp + 0x130], al
mov eax, dword [esp + 0x64]
lea ecx, [esp + 0x118]
push eax
push ecx
mov ecx, ebp
call fcn.00488410
movsx edx, word [esp + 0x1e]
movsx eax, word [esp + 0x1c]
push edx
push eax
mov ecx, ebx
call fcn.00472c10
movsx ecx, word [esp + 0x1e]
movsx edx, word [esp + 0x1c]
push ecx
push edx
mov ecx, ebx
mov dword [esp + 0x3c], eax
call fcn.00472ca0
movsx ecx, word [esp + 0x1c]
mov dword [esp + 0xa0], eax
movsx eax, word [esp + 0x1e]
push eax
push ecx
mov ecx, ebx
call fcn.00472cf0
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x64]
push 1
mov edx, dword [eax + 0x42c8]
lea ecx, [eax + 0x37d8]
mov dword [esp + 0x34], ecx
lea esi, [eax + 0x42d0]
push edx
mov ecx, ebx
mov dword [esp + 0x80], esi
call fcn.004644b0
mov dword [esp + 0x9c], eax
mov ax, word [esp + 0x12c]
test ax, ax
jle 0x46b2da
mov edi, 1
movsx eax, ax
jmp 0x46b2ec
jge 0x46b2e8
movsx eax, ax
mov edi, 6
neg eax
jmp 0x46b2ec
xor edi, edi
xor eax, eax
mov edx, dword [esp + 0x132]
mov ecx, dword [esi + 0x64]
and edx, 0x800
mov dword [esp + 0x50], ecx
cmp edx, 0x800
jne 0x46b373
cmp edi, 1
jne 0x46b343
cmp eax, 0x34
jl 0x46b317
cmp eax, 0x3f
jle 0x46b36e
cmp eax, 0x89
je 0x46b36e
cmp eax, 0x8a
je 0x46b36e
cmp eax, 0xf0
je 0x46b36e
cmp eax, 0xf1
je 0x46b36e
cmp eax, 0xbe
jl 0x46b373
cmp eax, 0xc2
jle 0x46b36e
jmp 0x46b373
cmp edi, 6
jne 0x46b373
cmp eax, 0x54
je 0x46b36e
cmp eax, 0x72
je 0x46b36e
cmp eax, 0x86
je 0x46b36e
cmp eax, 0x9a
je 0x46b36e
cmp eax, 0xae
je 0x46b36e
cmp eax, 0xc2
jne 0x46b373
add dword [esp + 0x50], 2
mov cl, byte [esp + 0x136]
and cl, 4
cmp cl, 4
jne 0x46b3f0
cmp edi, 1
jne 0x46b3bd
cmp eax, 0x34
jl 0x46b391
cmp eax, 0x3f
jle 0x46b3e8
cmp eax, 0x89
je 0x46b3e8
cmp eax, 0x8a
je 0x46b3e8
cmp eax, 0xf0
je 0x46b3e8
cmp eax, 0xf1
je 0x46b3e8
cmp eax, 0xbe
jl 0x46b3f0
cmp eax, 0xc2
jle 0x46b3e8
jmp 0x46b3f0
cmp edi, 6
jne 0x46b3f0
cmp eax, 0x54
je 0x46b3e8
cmp eax, 0x72
je 0x46b3e8
cmp eax, 0x86
je 0x46b3e8
cmp eax, 0x9a
je 0x46b3e8
cmp eax, 0xae
je 0x46b3e8
cmp eax, 0xc2
jne 0x46b3f0
mov dword [esp + 0x50], 0x19
mov edx, dword [esp + 0x9f4]
mov al, byte [edx]
test al, al
jne 0x46b524
mov eax, edx
or ecx, 0xffffffff
lea edx, [esp + 0x149]
lea edi, [eax + 1]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x54]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x148]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x60]
push ecx
push edx
push eax
mov ecx, ebp
call fcn.00488210
test eax, eax
je 0x46cc7f
mov ebx, dword [esp + 0x56]
mov ebp, dword [esp + 0x1e]
movsx ecx, bx
movsx eax, bp
sub eax, ecx
mov esi, dword [esp + 0x54]
mov edi, dword [esp + 0x1c]
cdq
mov ecx, eax
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 0x46b47d
mov ecx, eax
mov dl, byte [esp + 0x20]
mov al, byte [esp + 0x58]
cmp dl, al
je 0x46b4ac
test dl, dl
jne 0x46b497
cmp si, di
jle 0x46b497
cmp bx, bp
jg 0x46b4a5
test al, al
jne 0x46b4ac
cmp di, si
jle 0x46b4ac
cmp bp, bx
jle 0x46b4ac
mov edx, 1
jmp 0x46b4ae
xor edx, edx
mov eax, dword [esp + 0x50]
add edx, ecx
cmp edx, eax
ja 0x46cc7f
mov eax, dword [esp + 0x60]
cmp dword [eax + 0x43a4], 2
je 0x46cc7f
mov cl, byte [eax + 0x4026]
and cl, 8
cmp cl, 8
jne 0x46b4fa
mov ecx, dword [eax + 0x4158]
test ecx, ecx
je 0x46cc7f
mov edx, dword [esp + 0x30]
test byte [edx + 0x84e], 8
je 0x46cc7f
mov ecx, dword [esp + 0x9f8]
test ecx, ecx
jne 0x46b604
mov al, byte [eax + 0x37fc]
test al, al
jl 0x46b604
cmp al, 9
jg 0x46b604
jmp 0x46cc7f
cmp al, 2
jne 0x46cc7f
mov eax, dword [esp + 0x9f4]
or ecx, 0xffffffff
lea edx, [esp + 0x149]
lea edi, [eax + 1]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x54]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x148]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x60]
push ecx
mov ecx, dword [ebx + 0x32c8]
push edx
push eax
add ecx, 0x40
call fcn.0040a290
test eax, eax
je 0x46cc7f
mov ebx, dword [esp + 0x56]
mov ebp, dword [esp + 0x1e]
movsx ecx, bx
movsx eax, bp
sub eax, ecx
mov esi, dword [esp + 0x54]
mov edi, dword [esp + 0x1c]
cdq
mov ecx, eax
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 0x46b5b4
mov ecx, eax
mov dl, byte [esp + 0x20]
mov al, byte [esp + 0x58]
cmp dl, al
je 0x46b5e3
test dl, dl
jne 0x46b5ce
cmp si, di
jle 0x46b5ce
cmp bx, bp
jg 0x46b5dc
test al, al
jne 0x46b5e3
cmp di, si
jle 0x46b5e3
cmp bp, bx
jle 0x46b5e3
mov edx, 1
jmp 0x46b5e5
xor edx, edx
mov eax, dword [esp + 0x50]
add edx, ecx
cmp edx, eax
ja 0x46cc7f
mov eax, dword [esp + 0x60]
cmp dword [eax + 0x16c], 1
je 0x46cc7f
mov ecx, dword [esp + 0x30]
lea eax, [ecx + 0x6e0]
mov edx, eax
mov eax, dword [edx]
test al, al
mov ecx, dword [edx + 4]
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], ecx
mov ecx, dword [edx + 8]
mov dword [esp + 0xe0], ecx
mov edx, dword [edx + 0xc]
mov dword [esp + 0xe4], edx
je 0x46cc7f
movsx ecx, word [esp + 0xda]
mov esi, dword [esp + 0x3c]
push ecx
push eax
lea ecx, [esi + 0x32e8]
call fcn.00484e80
xor edi, edi
cmp eax, edi
je 0x46cc7f
mov ebx, dword [esi + 0x32c4]
mov eax, dword [esp + 0x54]
mov cx, word [esp + 0x58]
xor edx, edx
cmp ebx, 0x4e
mov dword [esp + 0x14], eax
sete dl
mov dword [esp + 0xa4], edx
lea edx, [esp + 0x48]
mov word [esp + 0x18], cx
lea eax, [esp + 0x40]
push edx
mov edx, dword [esp + 0x54]
lea ecx, [esp + 0xec]
push eax
push ecx
lea eax, [esp + 0x60]
push edx
lea ecx, [esp + 0xa0]
push eax
push ecx
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x74], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x94], 0x800
call fcn.00488600
cmp eax, edi
je 0x46c1d9
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x64]
cmp ecx, eax
je 0x46c1a1
cmp dword [eax + 0x43a4], 2
je 0x46c1a1
mov ecx, dword [esp + 0x3c]
lea edx, [esp + 0x40]
lea eax, [esp + 0x1c]
push edx
push eax
add ecx, 0x323c
call fcn.00486030
test eax, eax
je 0x46c1a1
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x48]
mov ecx, dword [edx + 0x21b0]
test ecx, ecx
jle 0x46b730
cmp ecx, dword [eax + 0x21b0]
je 0x46c1a1
mov cx, word [esp + 0x14]
cmp cx, word [esp + 0x40]
jne 0x46b74c
mov dx, word [esp + 0x16]
cmp dx, word [esp + 0x42]
je 0x46b9e0
mov ebx, dword [esp + 0x1e]
mov ax, word [esp + 0x20]
movsx ecx, word [esp + 0x16]
movsx esi, bx
mov word [esp + 0x28], ax
mov ebp, dword [esp + 0x1c]
mov eax, esi
mov dword [esp + 0x24], ebp
sub eax, ecx
cdq
mov ecx, eax
xor ecx, edx
movsx edi, bp
sub ecx, edx
mov eax, edi
movsx edx, word [esp + 0x14]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
mov dword [esp + 0x84], eax
jg 0x46b798
mov dword [esp + 0x84], ecx
mov cl, byte [esp + 0x18]
mov al, byte [esp + 0x20]
cmp al, cl
je 0x46b7d5
test al, al
jne 0x46b7b6
cmp word [esp + 0x14], bp
jle 0x46b7b6
cmp word [esp + 0x16], bx
jg 0x46b7c8
test cl, cl
jne 0x46b7d5
cmp bp, word [esp + 0x14]
jle 0x46b7d5
cmp bx, word [esp + 0x16]
jle 0x46b7d5
mov dword [esp + 0x88], 1
jmp 0x46b7e0
mov dword [esp + 0x88], 0
movsx ecx, word [esp + 0x42]
mov eax, esi
sub eax, ecx
mov cx, word [esp + 0x40]
cdq
mov esi, eax
mov eax, edi
xor esi, edx
sub esi, edx
movsx edx, cx
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, esi
jle 0x46b807
mov esi, eax
mov dl, byte [esp + 0x44]
mov al, byte [esp + 0x20]
cmp al, dl
je 0x46b83a
test al, al
jne 0x46b823
cmp cx, bp
jle 0x46b823
cmp word [esp + 0x42], bx
jg 0x46b833
test dl, dl
jne 0x46b83a
cmp bp, cx
jle 0x46b83a
cmp bx, word [esp + 0x42]
jle 0x46b83a
mov edx, 1
jmp 0x46b83c
xor edx, edx
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x84]
mov di, word [esp + 0x24]
add edx, esi
mov si, word [esp + 0x26]
add eax, ecx
cmp eax, edx
jle 0x46b932
mov bx, word [esp + 0x14]
mov bp, word [esp + 0x16]
jmp 0x46b87b
mov bp, word [esp + 0x16]
mov bx, word [esp + 0x14]
mov si, word [esp + 0x26]
movsx eax, si
movsx edx, bp
sub eax, edx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
movsx eax, di
movsx edx, bx
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x46b89d
mov ecx, eax
mov dl, byte [esp + 0x28]
mov al, byte [esp + 0x18]
cmp dl, al
je 0x46b8cc
test dl, dl
jne 0x46b8b7
cmp bx, di
jle 0x46b8b7
cmp bp, si
jg 0x46b8c5
test al, al
jne 0x46b8cc
cmp di, bx
jle 0x46b8cc
cmp si, bp
jle 0x46b8cc
mov edx, 1
jmp 0x46b8ce
xor edx, edx
add edx, ecx
cmp edx, 1
jl 0x46c1a1
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
call dword [sym.imp.Staff2.dll_void___cdecl_STAFFGetNextPIS_struct_PIS___struct_PIS__]
mov di, word [esp + 0x2c]
add esp, 8
cmp di, word [esp + 0x40]
jne 0x46b86c
mov si, word [esp + 0x26]
cmp si, word [esp + 0x42]
je 0x46b9dc
mov bp, word [esp + 0x16]
mov bx, word [esp + 0x14]
jmp 0x46b87b
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x1e]
mov si, word [esp + 0x26]
jmp 0x46b932
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x1e]
movsx edx, si
movsx eax, bx
sub eax, edx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
movsx edx, di
movsx eax, bp
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x46b954
mov ecx, eax
mov dl, byte [esp + 0x28]
mov al, byte [esp + 0x20]
cmp al, dl
je 0x46b983
test al, al
jne 0x46b96e
cmp di, bp
jle 0x46b96e
cmp si, bx
jg 0x46b97c
test dl, dl
jne 0x46b983
cmp bp, di
jle 0x46b983
cmp bx, si
jle 0x46b983
mov edx, 1
jmp 0x46b985
xor edx, edx
mov eax, dword [esp + 0x50]
add edx, ecx
cmp edx, eax
jg 0x46c1a1
cmp di, word [esp + 0x40]
je 0x46c1a1
cmp si, word [esp + 0x42]
je 0x46c1a1
lea eax, [esp + 0x40]
lea ecx, [esp + 0x24]
push eax
push ecx
call dword [sym.imp.Staff2.dll_void___cdecl_STAFFGetNextPIS_struct_PIS___struct_PIS__]
mov di, word [esp + 0x2c]
add esp, 8
cmp di, word [esp + 0x14]
jne 0x46b91b
mov si, word [esp + 0x26]
cmp si, word [esp + 0x16]
jne 0x46b92a
mov eax, dword [esp + 0x48]
mov edx, dword [eax + 0x42c8]
lea ebx, [eax + 0x37d8]
mov esi, dword [esp + 0x3c]
add eax, 0x42d0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x30]
push 1
push edx
mov ecx, dword [eax + 0xaf0]
mov dword [esp + 0x54], 0
push ecx
mov ecx, esi
call fcn.00464360
mov edx, dword [ebx + 0xaf0]
mov edi, eax
push 1
push edx
mov ecx, esi
mov dword [esp + 0x90], edi
call fcn.004644b0
mov ecx, dword [esp + 0x9c]
cmp ecx, eax
jne 0x46c1a1
cmp ecx, 1
jne 0x46ba50
cmp eax, 1
jne 0x46ba50
test edi, edi
je 0x46c1a1
mov edx, dword [esp + 0x48]
mov eax, dword [ebx + 0x79c]
xor ecx, ecx
mov dword [esp + 0x60], eax
mov esi, dword [edx + 0x43a4]
mov al, byte [ebx + 0x24]
cmp esi, 2
sete cl
test al, al
mov dword [esp + 0x74], ecx
jl 0x46bc91
cmp al, 9
jg 0x46ba91
test edi, edi
jne 0x46ba91
cmp dword [esp + 0xa4], 1
je 0x46c1a1
test al, al
jl 0x46bc91
cmp al, 9
jg 0x46bc91
mov eax, dword [ebx + 0x980]
test eax, eax
jne 0x46bc91
mov eax, dword [ebx + 0xa3c]
test eax, eax
jne 0x46bc91
mov eax, dword [esp + 0x9f8]
test eax, eax
je 0x46c1a1
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x980]
test ecx, ecx
ja 0x46c1a1
mov ecx, eax
mov eax, dword [ecx + 0xa3c]
test eax, eax
ja 0x46c1a1
movsx edx, word [esp + 0x42]
movsx eax, word [esp + 0x40]
mov esi, dword [esp + 0x3c]
push edx
push eax
mov ecx, esi
call fcn.00472c10
movsx ecx, word [esp + 0x42]
movsx edx, word [esp + 0x40]
push ecx
push edx
mov ecx, esi
mov ebp, eax
call fcn.00472ca0
movsx ecx, word [esp + 0x40]
mov edi, eax
movsx eax, word [esp + 0x42]
push eax
push ecx
mov ecx, esi
call fcn.00472cf0
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x88]
test eax, eax
jne 0x46bc46
mov eax, dword [esp + 0xa0]
test eax, eax
jne 0x46c1a1
test edi, edi
jne 0x46c1a1
mov eax, dword [esp + 0x34]
test eax, eax
jne 0x46c1a1
test ebp, ebp
jne 0x46c1a1
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x98]
cmp ecx, eax
jne 0x46c1a1
test ecx, ecx
je 0x46bb88
test eax, eax
jne 0x46bbda
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + 0x3664]
cmp eax, 2
je 0x46bba6
cmp eax, 3
je 0x46bba6
cmp eax, 4
mov ecx, 0xf
jne 0x46bbab
mov ecx, 0x14
mov edx, dword [esp + 0x30]
cmp dword [edx + 0x20], ecx
jbe 0x46c1a1
cmp eax, 2
je 0x46bbcc
cmp eax, 3
je 0x46bbcc
cmp eax, 4
mov eax, 0xf
jne 0x46bbd1
mov eax, 0x14
cmp dword [ebx + 0x20], eax
jbe 0x46c1a1
mov eax, dword [esp + 0x98]
test eax, eax
jne 0x46bc46
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x46bc46
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x3c]
push ebx
push esi
mov ecx, edi
call fcn.00473630
test eax, eax
jne 0x46bc46
mov eax, dword [esp + 0x74]
test eax, eax
jne 0x46bc46
mov al, byte [esi + 0x24]
test al, al
jl 0x46bc46
cmp al, 8
jg 0x46bc46
mov al, byte [ebx + 0x24]
test al, al
jl 0x46bc46
cmp al, 8
jg 0x46bc46
mov eax, dword [esp + 0x48]
push esi
push eax
push ebx
mov ecx, edi
call fcn.00473680
mov ecx, dword [esp + 0x48]
call fcn.004400b0
test eax, eax
jne 0x46bc46
mov ecx, dword [esp + 0x48]
push 3
call fcn.0043a710
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x60]
test eax, eax
je 0x46c1a1
mov edx, dword [esp + 0x48]
cmp dword [edx + 0x43a4], 1
jne 0x46c1a1
mov al, byte [ebx + 0x84e]
and al, 8
cmp al, 8
jne 0x46bc91
mov eax, dword [ebx + 0x980]
test eax, eax
je 0x46c1a1
mov ecx, dword [esp + 0x30]
test byte [ecx + 0x84e], 8
je 0x46c1a1
mov edx, dword [esp + 0x78]
xor edi, edi
mov dword [edx + 0x78], edi
mov dx, word [ebx + 0x84e]
mov al, dl
mov dword [esp + 0x8c], edx
and al, 2
cmp al, 2
je 0x46bcd2
mov cx, word [ebx + 0x850]
and ecx, 0x400
cmp ecx, 0x400
je 0x46bcd2
mov esi, dword [esp + 0x10]
mov dword [esp + 0x84], edi
jmp 0x46bcf4
mov esi, dword [esp + 0x10]
mov eax, dword [ebx + 0xa58]
mov dword [esp + 0x84], eax
mov ecx, dword [esi + 0x98]
cmp eax, ecx
jb 0x46bcf4
mov dword [esp + 0x84], ecx
mov al, dl
and al, 0x40
cmp al, 0x40
je 0x46bd15
mov cx, word [ebx + 0x850]
and ecx, 0x400
cmp ecx, 0x400
jne 0x46bdaa
mov cl, byte [ebx + 0x6e0]
cmp cl, 1
jne 0x46bd57
mov ax, word [ebx + 0x6e2]
cmp ax, 0x34
jl 0x46bd33
cmp ax, 0x3f
jle 0x46bd87
cmp ax, 0x89
je 0x46bd87
cmp ax, 0x8a
je 0x46bd87
cmp ax, 0xf0
je 0x46bd87
cmp ax, 0xf1
je 0x46bd87
cmp ax, 0xbe
jl 0x46bd57
cmp ax, 0xc2
jle 0x46bd87
cmp cl, 6
jne 0x46bdaa
mov ax, word [ebx + 0x6e2]
cmp ax, 0x54
je 0x46bd87
cmp ax, 0x72
je 0x46bd87
cmp ax, 0x86
je 0x46bd87
cmp ax, 0x9a
je 0x46bd87
cmp ax, 0xae
je 0x46bd87
cmp ax, 0xc2
jne 0x46bdaa
mov eax, dword [esi + 0x98]
lea eax, [eax + eax*2]
lea edx, [eax + eax*4]
mov eax, 0x51eb851f
mul edx
shr edx, 5
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x8c]
jmp 0x46bdae
mov dword [esp + 0x74], edi
and edx, 0x4000
cmp edx, 0x4000
jne 0x46bdd3
mov eax, 0xcccccccd
mul dword [esi + 0x98]
shr edx, 2
mov dword [esp + 0x8c], edx
jmp 0x46bdda
mov dword [esp + 0x8c], edi
mov ebp, dword [esp + 0x30]
mov dx, word [ebp + 0x84e]
mov al, dl
mov dword [esp + 0x94], edx
and al, 2
cmp al, 2
je 0x46be11
mov cx, word [ebp + 0x850]
and ecx, 0x400
cmp ecx, 0x400
je 0x46be11
mov edi, dword [esp + 0x78]
xor esi, esi
jmp 0x46be29
mov edi, dword [esp + 0x78]
mov eax, dword [ebp + 0xa58]
mov esi, eax
mov ecx, dword [edi + 0x98]
cmp eax, ecx
jb 0x46be29
mov esi, ecx
mov al, dl
and al, 0x40
cmp al, 0x40
je 0x46be4a
mov cx, word [ebp + 0x850]
and ecx, 0x400
cmp ecx, 0x400
jne 0x46bedd
mov cl, byte [ebp + 0x6e0]
cmp cl, 1
jne 0x46be8c
mov ax, word [ebp + 0x6e2]
cmp ax, 0x34
jl 0x46be68
cmp ax, 0x3f
jle 0x46bebc
cmp ax, 0x89
je 0x46bebc
cmp ax, 0x8a
je 0x46bebc
cmp ax, 0xf0
je 0x46bebc
cmp ax, 0xf1
je 0x46bebc
cmp ax, 0xbe
jl 0x46be8c
cmp ax, 0xc2
jle 0x46bebc
cmp cl, 6
jne 0x46bedd
mov ax, word [ebp + 0x6e2]
cmp ax, 0x54
je 0x46bebc
cmp ax, 0x72
je 0x46bebc
cmp ax, 0x86
je 0x46bebc
cmp ax, 0x9a
je 0x46bebc
cmp ax, 0xae
je 0x46bebc
cmp ax, 0xc2
jne 0x46bedd
mov eax, dword [edi + 0x98]
lea eax, [eax + eax*2]
lea edx, [eax + eax*4]
mov eax, 0x51eb851f
mul edx
mov ecx, edx
mov edx, dword [esp + 0x94]
shr ecx, 5
jmp 0x46bedf
xor ecx, ecx
and edx, 0x4000
cmp edx, 0x4000
jne 0x46befd
mov eax, 0xcccccccd
mul dword [edi + 0x98]
shr edx, 2
jmp 0x46beff
xor edx, edx
lea eax, [esp + 0xe8]
push 0
push eax
lea eax, [esp + 0x120]
push eax
mov eax, dword [esp + 0x1c]
mov edi, dword [eax + 0x98]
add edi, dword [eax + 0x48]
mov eax, dword [esp + 0x98]
add edi, eax
mov eax, dword [esp + 0x80]
add edi, eax
mov eax, dword [esp + 0x90]
add edi, eax
mov eax, dword [esp + 0x84]
push edi
mov edi, dword [eax + 0x98]
add edi, dword [eax + 0x48]
add edi, esi
mov esi, dword [esp + 0x4c]
add edi, edx
add edi, ecx
mov ecx, esi
push edi
call fcn.0045fab0
lea ecx, [esp + 0x54]
lea edx, [esp + 0x40]
push ecx
push edx
mov edi, eax
call dword [sym.imp.Staff2.dll_char___cdecl_STAFFGetDirection_struct_PIS___struct_PIS__]
add esp, 8
cmp al, 5
mov byte [esp + 0x100], al
jne 0x46bf84
mov byte [esp + 0x100], 2
mov eax, dword [esp + 0x48]
lea ecx, [esp + 0xe8]
push eax
push ecx
mov ecx, dword [esp + 0x88]
call fcn.00488410
mov eax, dword [esp + 0x88]
test eax, eax
jne 0x46bfb7
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x46bfb7
mov eax, 1
jmp 0x46bfb9
xor eax, eax
mov edx, dword [esp + 0x88]
mov ecx, dword [esp + 0x10]
push edx
mov edx, dword [esp + 0x68]
push eax
mov eax, dword [esp + 0x50]
push edi
push eax
mov eax, dword [esp + 0x88]
push ecx
push ebx
push edx
push eax
push ebp
mov ecx, esi
call fcn.0046f9f0
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x64]
push 1
push ecx
lea edx, [esp + 0xf0]
push ebx
push edx
push eax
lea ecx, [esp + 0x12c]
push ebp
push ecx
mov ecx, esi
call fcn.0045f750
mov eax, dword [esp + 0x60]
test eax, eax
je 0x46c020
mov edx, eax
mov eax, dword [ebx + 0x79c]
cmp edx, eax
je 0x46c1a1
mov eax, dword [esp + 0x48]
cmp dword [eax + 0x43a4], 2
jne 0x46c042
or bl, 0xff
xor ecx, ecx
mov dword [esp + 0x102], ecx
mov dword [esp + 0x106], ecx
jmp 0x46c08b
mov ecx, dword [ebx + 0x79c]
cmp ecx, 0x1312d00
jbe 0x46c06f
mov edx, dword [esp + 0x10]
mov eax, 0x51eb851f
mul dword [edx + 8]
mov esi, edx
mov eax, ecx
shr esi, 5
xor edx, edx
div esi
cmp al, 0x64
jae 0x46c089
mov bl, al
jmp 0x46c08b
lea eax, [ecx + ecx*4]
mov ecx, dword [esp + 0x10]
xor edx, edx
lea eax, [eax + eax*4]
shl eax, 2
div dword [ecx + 8]
cmp al, 0x64
jae 0x46c089
mov bl, al
jmp 0x46c08b
mov bl, 0x64
mov ebp, dword [esp + 0x5c]
test ebp, ebp
jne 0x46c121
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x7c]
lea edx, [ebp + 0x2f]
cmp edx, eax
mov dword [esp + 0x4c], edx
ja 0x46c0cd
lea edi, [esp + ebp + 0x1e0]
mov ecx, 0xb
lea esi, [esp + 0xe8]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [esp + ebp + 0x20e], bl
jmp 0x46c19d
lea esi, [eax + eax]
push esi
call sub.MFC42.DLL_operatornew
mov ecx, ebp
mov dword [esp + 0x80], esi
mov edx, ecx
lea esi, [esp + 0x1e4]
mov edi, eax
add esp, 4
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov dword [esp + 0x5c], eax
and ecx, 3
add eax, ebp
rep movsb byte es:[edi], byte [esi]
mov ecx, 0xb
lea esi, [esp + 0xe8]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x2c], eax
jmp 0x46c1a1
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x7c]
lea edx, [ecx + 0x2f]
cmp edx, eax
mov dword [esp + 0x4c], edx
ja 0x46c14e
lea eax, [ecx + ebp]
mov ecx, 0xb
lea esi, [esp + 0xe8]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
jmp 0x46c19d
lea ecx, [eax + eax]
push ecx
call sub.MFC42.DLL_operatornew
mov ecx, dword [esp + 0x30]
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 + 0x64], eax
rep movsb byte es:[edi], byte [esi]
call sub.MFC42.DLL_operatordelete
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x34]
add esp, 8
add eax, ecx
mov ecx, 0xb
lea esi, [esp + 0xe8]
mov edi, eax
mov edx, dword [esp + 0x4c]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
mov dword [esp + 0x2c], edx
lea eax, [esp + 0x48]
lea ecx, [esp + 0x40]
push eax
mov eax, dword [esp + 0x54]
lea edx, [esp + 0xec]
push ecx
push edx
lea ecx, [esp + 0x60]
push eax
lea edx, [esp + 0xa0]
push ecx
mov ecx, dword [esp + 0x94]
push edx
call fcn.00488700
test eax, eax
jne 0x46b6d4
mov esi, dword [esp + 0x3c]
push 0xffffffffffffffff
mov ecx, esi
call fcn.00464990
mov ecx, esi
mov edi, eax
call fcn.00464a70
cmp eax, 1
jne 0x46c219
mov ecx, dword [esp + 0x30]
mov eax, dword [esi + 0x3574]
push eax
mov edx, dword [ecx + 0xaf0]
lea ecx, [esi + 0x3310]
push edx
call fcn.00402860
test eax, eax
je 0x46cb99
test edi, edi
jle 0x46c245
cmp edi, 0x28
jg 0x46c245
mov eax, dword [esp + 0x30]
push edi
mov ecx, dword [eax + 0xaf0]
push ecx
lea ecx, [esi + 0x3310]
call fcn.00402700
test eax, eax
je 0x46cb99
mov esi, dword [esp + 0x3c]
lea eax, [esp + 0x10]
mov esi, dword [esi + 0x32c8]
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0xb0]
mov edx, dword [esi + 0x40]
push eax
mov eax, dword [esp + 0x5c]
lea ecx, [esi + 0x40]
push eax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0xa4]
push eax
call dword [edx + 0x44]
test eax, eax
je 0x46cb99
mov esi, dword [esp + 0x3c]
mov eax, dword [esi + 0x32c4]
mov ecx, dword [esp + 0x10]
cmp eax, 0xb4
mov edx, 1
jne 0x46c2a7
mov edi, dword [esp + 0x30]
cmp dword [edi + 0xaf0], 2
jne 0x46c2ba
cmp eax, 0xb5
jne 0x46c2c9
mov eax, dword [esp + 0x30]
cmp dword [eax + 0xaf0], edx
je 0x46c2c9
mov eax, dword [ecx + 0x11c]
cmp byte [eax], 0x57
je 0x46cb5b
cmp dword [ecx + 0x16c], edx
je 0x46cb5b
mov eax, dword [ecx + 0x174]
test eax, eax
jne 0x46cb5b
cmp byte [ecx + 0xec], 3
jne 0x46c2fb
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx + 0x70]
test eax, eax
je 0x46cb5b
lea edx, [esp + 0x34]
lea eax, [esp + 0x1c]
push edx
push eax
lea ecx, [esi + 0x323c]
call fcn.00486030
test eax, eax
je 0x46cb5b
mov eax, dword [esp + 0xa0]
test eax, eax
jne 0x46cb5b
mov cx, word [esp + 0x14]
cmp cx, word [esp + 0x34]
jne 0x46c343
mov dx, word [esp + 0x16]
cmp dx, word [esp + 0x36]
je 0x46c5c1
mov ebx, dword [esp + 0x1e]
mov ax, word [esp + 0x20]
movsx ecx, word [esp + 0x16]
movsx esi, bx
mov word [esp + 0x28], ax
mov ebp, dword [esp + 0x1c]
mov eax, esi
mov dword [esp + 0x24], ebp
sub eax, ecx
cdq
mov ecx, eax
xor ecx, edx
movsx edi, bp
sub ecx, edx
mov eax, edi
movsx edx, word [esp + 0x14]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
mov dword [esp + 0x74], eax
jg 0x46c389
mov dword [esp + 0x74], ecx
mov cl, byte [esp + 0x18]
mov al, byte [esp + 0x20]
cmp al, cl
je 0x46c3c3
test al, al
jne 0x46c3a7
cmp word [esp + 0x14], bp
jle 0x46c3a7
cmp word [esp + 0x16], bx
jg 0x46c3b9
test cl, cl
jne 0x46c3c3
cmp bp, word [esp + 0x14]
jle 0x46c3c3
cmp bx, word [esp + 0x16]
jle 0x46c3c3
mov dword [esp + 0x60], 1
jmp 0x46c3cb
mov dword [esp + 0x60], 0
movsx ecx, word [esp + 0x36]
mov eax, esi
sub eax, ecx
mov cx, word [esp + 0x34]
cdq
mov esi, eax
mov eax, edi
xor esi, edx
sub esi, edx
movsx edx, cx
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, esi
jle 0x46c3f2
mov esi, eax
mov dl, byte [esp + 0x38]
mov al, byte [esp + 0x20]
cmp al, dl
je 0x46c425
test al, al
jne 0x46c40e
cmp cx, bp
jle 0x46c40e
cmp word [esp + 0x36], bx
jg 0x46c41e
test dl, dl
jne 0x46c425
cmp bp, cx
jle 0x46c425
cmp bx, word [esp + 0x36]
jle 0x46c425
mov edx, 1
jmp 0x46c427
xor edx, edx
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x74]
mov di, word [esp + 0x24]
add edx, esi
mov si, word [esp + 0x26]
add eax, ecx
cmp eax, edx
jle 0x46c517
mov bp, word [esp + 0x16]
mov bx, word [esp + 0x14]
jmp 0x46c460
mov bp, word [esp + 0x16]
mov bx, word [esp + 0x14]
mov si, word [esp + 0x26]
movsx eax, si
movsx edx, bp
sub eax, edx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
movsx eax, di
movsx edx, bx
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x46c482
mov ecx, eax
mov dl, byte [esp + 0x28]
mov al, byte [esp + 0x18]
cmp dl, al
je 0x46c4b1
test dl, dl
jne 0x46c49c
cmp bx, di
jle 0x46c49c
cmp bp, si
jg 0x46c4aa
test al, al
jne 0x46c4b1
cmp di, bx
jle 0x46c4b1
cmp si, bp
jle 0x46c4b1
mov edx, 1
jmp 0x46c4b3
xor edx, edx
add edx, ecx
cmp edx, 1
jl 0x46cb5b
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
call dword [sym.imp.Staff2.dll_void___cdecl_STAFFGetNextPIS_struct_PIS___struct_PIS__]
mov di, word [esp + 0x2c]
add esp, 8
cmp di, word [esp + 0x34]
jne 0x46c451
mov si, word [esp + 0x26]
cmp si, word [esp + 0x36]
je 0x46c5c1
mov bp, word [esp + 0x16]
mov bx, word [esp + 0x14]
jmp 0x46c460
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x1e]
mov si, word [esp + 0x26]
jmp 0x46c517
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x1e]
movsx edx, si
movsx eax, bx
sub eax, edx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
movsx edx, di
movsx eax, bp
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x46c539
mov ecx, eax
mov dl, byte [esp + 0x28]
mov al, byte [esp + 0x20]
cmp al, dl
je 0x46c568
test al, al
jne 0x46c553
cmp di, bp
jle 0x46c553
cmp si, bx
jg 0x46c561
test dl, dl
jne 0x46c568
cmp bp, di
jle 0x46c568
cmp bx, si
jle 0x46c568
mov edx, 1
jmp 0x46c56a
xor edx, edx
mov eax, dword [esp + 0x50]
add edx, ecx
cmp edx, eax
jg 0x46cb5b
cmp di, word [esp + 0x34]
je 0x46cb5b
cmp si, word [esp + 0x36]
je 0x46cb5b
lea eax, [esp + 0x34]
lea ecx, [esp + 0x24]
push eax
push ecx
call dword [sym.imp.Staff2.dll_void___cdecl_STAFFGetNextPIS_struct_PIS___struct_PIS__]
mov di, word [esp + 0x2c]
add esp, 8
cmp di, word [esp + 0x14]
jne 0x46c500
mov si, word [esp + 0x26]
cmp si, word [esp + 0x16]
jne 0x46c50f
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x78]
mov edi, dword [esp + 0x30]
mov edx, dword [esi + 0x120]
mov dword [ebp + 0x78], 0
mov eax, dword [edi + 0x794]
mov dword [esp + 0x94], edx
test eax, eax
jle 0x46c5fa
mov ecx, dword [esi + 0x11c]
mov edx, dword [ecx + 0x34]
test edx, edx
jg 0x46c609
test eax, eax
jge 0x46c610
mov edx, dword [esi + 0x11c]
mov eax, dword [edx + 0x34]
test eax, eax
jge 0x46c610
mov dword [ebp + 0x6c], 1
mov eax, dword [esi + 0x11c]
cmp byte [eax], 0x62
jne 0x46c62f
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x298], eax
mov esi, dword [esp + 0x10]
mov bx, word [edi + 0x84e]
mov dl, bl
and dl, 2
cmp dl, 2
je 0x46c660
mov ax, word [edi + 0x850]
and eax, 0x400
cmp eax, 0x400
je 0x46c660
mov dword [esp + 0x80], 0
jmp 0x46c67e
mov eax, dword [edi + 0xa58]
mov ecx, dword [ebp + 0x98]
cmp eax, ecx
mov dword [esp + 0x80], eax
jb 0x46c67e
mov dword [esp + 0x80], ecx
mov cl, bl
and cl, 0x40
cmp cl, 0x40
je 0x46c6a1
mov dx, word [edi + 0x850]
and edx, 0x400
cmp edx, 0x400
jne 0x46c72d
mov cl, byte [edi + 0x6e0]
cmp cl, 1
jne 0x46c6e3
mov ax, word [edi + 0x6e2]
cmp ax, 0x34
jl 0x46c6bf
cmp ax, 0x3f
jle 0x46c713
cmp ax, 0x89
je 0x46c713
cmp ax, 0x8a
je 0x46c713
cmp ax, 0xf0
je 0x46c713
cmp ax, 0xf1
je 0x46c713
cmp ax, 0xbe
jl 0x46c6e3
cmp ax, 0xc2
jle 0x46c713
cmp cl, 6
jne 0x46c72d
mov ax, word [edi + 0x6e2]
cmp ax, 0x54
je 0x46c713
cmp ax, 0x72
je 0x46c713
cmp ax, 0x86
je 0x46c713
cmp ax, 0x9a
je 0x46c713
cmp ax, 0xae
je 0x46c713
cmp ax, 0xc2
jne 0x46c72d
mov eax, dword [ebp + 0x98]
lea eax, [eax + eax*2]
lea ecx, [eax + eax*4]
mov eax, 0x51eb851f
mul ecx
mov edi, edx
shr edi, 5
jmp 0x46c72f
xor edi, edi
and ebx, 0x4000
cmp ebx, 0x4000
jne 0x46c74f
mov eax, 0xcccccccd
mul dword [ebp + 0x98]
mov ebx, edx
shr ebx, 2
jmp 0x46c751
xor ebx, ebx
lea edx, [esp + 0xa8]
push 0
lea eax, [esp + 0x11c]
push edx
push eax
push esi
mov esi, dword [esp + 0x4c]
mov ecx, dword [esi + 0x32c8]
call fcn.0047ae20
mov ecx, dword [ebp + 0x98]
mov edx, dword [ebp + 0x48]
add ecx, edx
push eax
add ecx, ebx
add ecx, edi
mov edi, dword [esp + 0x90]
add ecx, edi
push ecx
mov ecx, esi
call fcn.0045fab0
mov ebx, eax
test ebx, ebx
jne 0x46c873
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x16c]
test eax, eax
jne 0x46c873
mov eax, dword [edx + 0x11c]
cmp byte [eax], 0x4e
jne 0x46c873
mov ecx, dword [eax + 0x54]
test ecx, ecx
je 0x46c873
mov ax, word [eax + 0x14]
push ebx
push ebx
push ecx
lea ecx, [esp + 0x40]
push eax
push ecx
mov ecx, dword [esi + 0x32c8]
push edx
lea edx, [esp + 0x4c]
lea eax, [esp + 0xc0]
push edx
push eax
call fcn.004813c0
mov ecx, dword [esi + 0x32c8]
mov eax, dword [ecx + 0x9c]
cmp eax, 1
mov edi, eax
jg 0x46c808
mov edi, 1
mov ecx, dword [esp + 0x10]
xor eax, eax
mov edx, dword [ecx + 0x11c]
mov ax, word [edx + 0x18]
cdq
idiv edi
mov dword [ecx + 0x104], eax
mov eax, dword [esi + 0x32c8]
mov eax, dword [eax + 0x9c]
cmp eax, 1
mov edi, eax
jg 0x46c839
mov edi, 1
mov ecx, dword [esp + 0x10]
xor eax, eax
mov edx, dword [ecx + 0x11c]
mov ax, word [edx + 0x18]
cdq
idiv edi
test edx, edx
jle 0x46c861
mov eax, dword [ecx + 0x104]
inc eax
mov dword [ecx + 0x104], eax
mov ecx, dword [esp + 0x10]
xor eax, eax
mov dword [ecx + 0x118], eax
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x2a0], eax
lea edx, [esp + 0x54]
lea eax, [esp + 0x34]
push edx
push eax
call dword [sym.imp.Staff2.dll_char___cdecl_STAFFGetDirection_struct_PIS___struct_PIS__]
add esp, 8
cmp al, 5
mov byte [esp + 0xc0], al
jne 0x46c899
mov byte [esp + 0xc0], 2
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x34]
push ecx
mov ecx, dword [esi + 0x32c8]
lea eax, [esp + 0xac]
push edx
push eax
add ecx, 0x40
call fcn.0040a390
mov ecx, dword [esp + 0x10]
push ebx
lea edx, [esp + 0x58]
push ecx
mov ecx, dword [esp + 0x6c]
lea eax, [esp + 0xb0]
push edx
mov edx, dword [esp + 0x3c]
push eax
push ecx
push ebp
push edx
mov ecx, esi
call fcn.0046f4f0
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x64]
push 1
lea ecx, [esp + 0xac]
push eax
push ecx
push edx
lea eax, [esp + 0x128]
push ebp
push eax
mov ecx, esi
call fcn.0045f840
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x16c]
test eax, eax
jne 0x46c9dd
mov eax, dword [ecx + 0x11c]
cmp byte [eax], 0x4e
jne 0x46c9dd
mov edx, dword [eax + 0x54]
test edx, edx
je 0x46c9dd
push 0
push 0
push edx
mov dx, word [eax + 0x14]
lea eax, [esp + 0x40]
push edx
push eax
push ecx
lea ecx, [esp + 0x4c]
lea edx, [esp + 0xc0]
push ecx
mov ecx, dword [esi + 0x32c8]
push edx
call fcn.004813c0
mov eax, dword [esi + 0x32c8]
mov eax, dword [eax + 0x9c]
cmp eax, 1
mov edi, eax
jg 0x46c96e
mov edi, 1
mov ecx, dword [esp + 0x10]
xor eax, eax
mov edx, dword [ecx + 0x11c]
mov ax, word [edx + 0x18]
cdq
idiv edi
mov dword [ecx + 0x104], eax
mov eax, dword [esi + 0x32c8]
mov eax, dword [eax + 0x9c]
cmp eax, 1
mov esi, eax
jg 0x46c99f
mov esi, 1
mov ecx, dword [esp + 0x10]
xor eax, eax
mov edx, dword [ecx + 0x11c]
mov ax, word [edx + 0x18]
cdq
idiv esi
test edx, edx
jle 0x46c9c7
mov eax, dword [ecx + 0x104]
inc eax
mov dword [ecx + 0x104], eax
mov ecx, dword [esp + 0x10]
xor eax, eax
mov dword [ecx + 0x118], eax
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x2a0], eax
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x94]
test eax, eax
je 0x46c9f4
cmp eax, dword [ecx + 0x120]
je 0x46cb5b
cmp dword [ecx + 0x16c], 1
jne 0x46ca12
or bl, 0xff
xor edx, edx
mov dword [esp + 0xc2], edx
mov dword [esp + 0xc6], edx
jmp 0x46ca59
mov esi, dword [ecx + 0x120]
cmp esi, 0x1312d00
jbe 0x46ca3e
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 0x46ca57
mov bl, al
jmp 0x46ca59
lea eax, [esi + esi*4]
xor edx, edx
lea eax, [eax + eax*4]
shl eax, 2
div dword [ecx + 0x2bc]
cmp al, 0x64
jae 0x46ca57
mov bl, al
jmp 0x46ca59
mov bl, 0x64
mov ecx, dword [esp + 0x5c]
test ecx, ecx
jne 0x46cacf
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x7c]
lea edx, [ebp + 0x2f]
cmp edx, eax
mov dword [esp + 0x4c], edx
ja 0x46ca9b
lea edi, [esp + ebp + 0x1e0]
mov ecx, 0xb
lea esi, [esp + 0xa8]
mov dword [esp + 0x2c], edx
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [esp + ebp + 0x20e], bl
jmp 0x46cb5b
lea esi, [eax + eax]
push esi
call sub.MFC42.DLL_operatornew
mov ecx, ebp
mov dword [esp + 0x80], esi
mov edx, ecx
lea esi, [esp + 0x1e4]
mov edi, eax
add esp, 4
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov dword [esp + 0x5c], eax
and ecx, 3
add eax, ebp
rep movsb byte es:[edi], byte [esi]
jmp 0x46cb3e
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x7c]
lea edx, [eax + 0x2f]
cmp edx, esi
mov dword [esp + 0x4c], edx
ja 0x46caff
add eax, ecx
mov ecx, 0xb
lea esi, [esp + 0xa8]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
mov dword [esp + 0x2c], edx
jmp 0x46cb5b
mov ecx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x5c]
lea edx, [ecx + ecx]
push edx
call sub.MFC42.DLL_operatornew
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x60], eax
mov edi, eax
mov eax, ecx
mov esi, ebp
push ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call sub.MFC42.DLL_operatordelete
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x34]
add esp, 8
lea eax, [ecx + edx]
mov ecx, 0xb
lea esi, [esp + 0xa8]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov byte [eax + 0x2e], bl
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x2c], eax
mov esi, dword [esp + 0x3c]
mov eax, dword [esi + 0x32c8]
lea ecx, [eax + 0x40]
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x38]
push eax
lea eax, [esp + 0xb0]
mov edx, dword [ecx]
push eax
mov eax, dword [esp + 0x5c]
push eax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0xa4]
push eax
call dword [edx + 0x48]
test eax, eax
jne 0x46c284
mov ecx, dword [esp + 0x9f0]
mov ebx, dword [esp + 0x3c]
lea edx, [esp + 0xe8]
push ecx
push edx
mov ecx, ebx
call fcn.00467d00
mov ecx, 0xb
mov esi, eax
lea edi, [esp + 0x178]
mov eax, dword [esp + 0x9f4]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov ecx, 0xb
lea esi, [esp + 0x148]
lea edi, [esp + 0x1a6]
mov dl, byte [eax + 0x16]
rep movsd dword es:[edi], dword [esi]
mov cx, word [eax + 0x14]
movsw word es:[edi], word [esi]
mov word [esp + 0x1d4], cx
mov cl, byte [eax + 0x17]
mov byte [esp + 0x1d7], cl
mov ecx, dword [esp + 0x2c]
mov byte [esp + 0x1d6], dl
mov edx, dword [eax + 0x18]
cmp ecx, 0x2ed1
mov dword [esp + 0x1d8], edx
ja 0x46cc2d
mov eax, 0xae4c415d
mul ecx
shr edx, 5
mov byte [esp + 0x1dc], dl
jmp 0x46cc3a
mov ecx, 0x2dd3
mov byte [esp + 0x1dc], 0xff
mov esi, dword [esp + 0x5c]
push ecx
test esi, esi
jne 0x46cc61
lea eax, [esp + 0x1e4]
lea ecx, [esp + 0x17c]
push eax
lea edx, [esp + 0x24]
push ecx
push edx
mov ecx, ebx
call fcn.004702d0
jmp 0x46cc7f
lea eax, [esp + 0x17c]
push esi
lea ecx, [esp + 0x24]
push eax
push ecx
mov ecx, ebx
call fcn.004702d0
push esi
call sub.MFC42.DLL_operatordelete
add esp, 4
lea ecx, [esp + 0x68]
call dword [sym.imp.Staff2.dll_public:_int___thiscall_CSWMRLock::Unlock_void_]
lea ecx, [esp + 0x68]
mov dword [esp + 0x9e8], 0xffffffff
call dword [sym.imp.Staff2.dll_public_virtual:_void___thiscall_CSWMRLock::destructor_void_]
mov ecx, dword [esp + 0x9e0]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x9dc
ret 0xc