Function at 0x7c8760
Capabilities:
Inspect section memory permissions
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xc0
mov esi, dword [ecx + 4]
mov edi, dword [ecx]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x74], edx
mov eax, dword [esi + 0xac]
movzx ecx, byte [edi + 0x284]
mov dword [esp + 0x88], eax
mov eax, edx
movsd xmm0, qword [esi + 0xa4]
and eax, 0x7ffffff
mov dword [esp + 0x90], eax
shr eax, cl
call 0x7c87ad
pop ecx
mov dword [esp + 0x78], ecx
movsd qword [esp + 0x80], xmm0
mov dword [esi + 0xa4], 0
mov dword [esi + 0xa8], 1
mov dword [esi + 0xac], 0
mov edx, dword [esi + 0x94]
cmp eax, edx
jae 0x7c97e1
mov edx, dword [esi + 0x90]
movzx ecx, byte [edi + 0x58]
mov ebx, dword [edx + eax*8]
mov edx, dword [edx + eax*8 + 4]
mov eax, dword [edi + 0x280]
mov dword [esi + 0x48], 0
mov byte [esp + 0x24], cl
mov dword [esi + 0x64], 0
test edx, edx
je 0x7c97c9
mov dword [esp + 0x10], eax
movzx eax, byte [eax + 0x164]
mov dword [esp + 8], 9
mov byte [esp + 0x20], al
lea eax, [ebx + 8]
test byte [eax], 2
je 0x7c8863
cmp edx, 0xc
jbe 0x7c993b
mov ecx, dword [ebx + 0x11]
test ecx, ecx
je 0x7c8863
cmp ecx, 0x40000000
jae 0x7c99b5
shl ecx, 2
add ecx, 0xd
mov dword [esp + 8], ecx
jb 0x7c99bf
mov ecx, dword [esp + 8]
cmp edx, ecx
jb 0x7c990e
mov dword [esp + 0x48], edx
sub edx, ecx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x94], edi
mov dword [esp + 0xc], esi
mov dword [esp + 0x6c], eax
mov dword [esp + 4], edx
je 0x7c89b2
mov ebx, dword [esi + 0x44]
mov edx, dword [esi + 0x40]
add ecx, eax
xor edi, edi
mov dword [esp + 8], 0
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x2c], edx
mov ebx, dword [esi + 0x34]
mov edx, dword [esi + 0x38]
mov esi, ecx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x18], edx
jmp 0x7c88d4
mov eax, dword [esp + 4]
add esi, ebx
sub eax, ebx
test eax, eax
mov dword [esp + 4], eax
je 0x7c89b4
mov dword [esp + 0x14], edi
xor edi, edi
xor ecx, ecx
xor ebx, ebx
nop
movzx eax, byte [esi + ebx]
mov edx, esi
movzx esi, al
test al, al
jns 0x7c8910
and esi, 0x7f
inc ebx
shl esi, cl
add ecx, 7
or edi, esi
cmp dword [esp + 4], ebx
mov esi, edx
jne 0x7c88e0
xor esi, esi
xor ebx, ebx
jmp 0x7c891f
inc ebx
shl esi, cl
cmp ebx, dword [esp + 4]
ja 0x7c98a3
or esi, edi
mov ecx, dword [esp + 8]
mov eax, esi
and esi, 1
mov edi, dword [esp + 0x14]
shr eax, 1
neg esi
xor esi, eax
add ecx, esi
cmp dword [esp + 0x1c], ecx
mov dword [esp + 0x8c], ecx
jbe 0x7c939b
mov eax, dword [esp + 0x2c]
mov dword [esp + 8], ecx
mov esi, edx
mov ecx, dword [eax + ecx*4]
cmp ecx, edi
jae 0x7c8971
cmp ecx, dword [esp + 0x18]
jae 0x7c97bb
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 8]
cmp dword [eax + ecx*4], edx
je 0x7c88c0
cmp edi, dword [esp + 0x18]
mov dword [esp + 0x98], edi
jae 0x7c982f
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 8]
mov dword [eax + edi*4], ecx
mov ecx, dword [esp + 0x8c]
cmp ecx, dword [esp + 0x1c]
jae 0x7c978d
mov eax, dword [esp + 0x2c]
mov dword [eax + ecx*4], edi
mov ecx, dword [esp + 0xc]
inc edi
mov dword [ecx + 0x48], edi
jmp 0x7c88c0
xor edi, edi
mov edx, dword [esp + 0x48]
cmp edx, 5
jb 0x7c9918
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
add edx, 0xfffffffb
cmp edx, 3
jbe 0x7c98d1
mov ecx, dword [ebp + 8]
lea eax, [ebx + 0x98]
lea edx, [ebx + 0x4c]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], edx
mov eax, ecx
shr eax, 8
mov dword [esp + 4], eax
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0xd]
test ecx, ecx
mov dword [esp + 8], ecx
je 0x7c8be2
mov ecx, dword [eax + 9]
mov eax, dword [ebp + 8]
mov dword [esp + 0x14], edi
test al, 1
jne 0x7c8a2e
mov eax, dword [esp + 4]
cmp al, 0xa
je 0x7c8a39
movzx edx, al
mov esi, ecx
cmp edx, 0xd
jne 0x7c8a50
cmp byte [esp + 0x20], 0
jne 0x7c8a40
jmp 0x7c8a4b
mov eax, dword [esp + 4]
mov esi, ecx
or esi, 0x2a
jmp 0x7c8a50
cmp byte [esp + 0x20], 0
jne 0x7c8a4b
mov edx, dword [esp + 0x6c]
mov esi, ecx
test byte [edx], 8
jne 0x7c8a50
mov esi, ecx
or esi, 0x20
mov edi, dword [esp + 0x10]
mov ebx, esi
mov edx, dword [ebp + 8]
mov dword [esp + 0x18], ecx
or ebx, 8
cmp byte [edi + 0x160], al
mov edi, dword [esp + 0x6c]
movzx eax, byte [edi]
cmovne ebx, esi
test dl, 1
cmovne ebx, esi
test al, 8
jne 0x7c8a85
mov edi, dword [esp + 0x14]
test dl, 1
je 0x7c8ab6
jmp 0x7c8af6
cmp byte [esp + 0x20], 0
je 0x7c8a9e
mov edi, dword [esp + 0x14]
test dl, 1
jne 0x7c8aae
cmp byte [esp + 4], 0xd
je 0x7c8ab6
jmp 0x7c8aae
mov edi, dword [esp + 0x14]
test dl, 1
jne 0x7c8aae
cmp byte [esp + 4], 0xa
je 0x7c8ab6
or ebx, 0x10
test dl, 1
jne 0x7c8af6
movzx esi, byte [esp + 4]
and al, 4
mov edx, 0x280
shr al, 2
mov ah, byte [esi + 0x850f84]
test ah, ah
setne cl
xor cl, al
mov ecx, 0x140
cmovne edx, ecx
or edx, ebx
mov ebx, edx
or ebx, 0x28000
test al, al
je 0x7c8b26
test ah, ah
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 8]
jne 0x7c8b39
jmp 0x7c8b1c
shr al, 2
mov ecx, edi
mov esi, 0x28140
mov edi, 0x28280
test al, 1
cmovne edi, esi
mov esi, dword [esp + 0x10]
or ebx, edi
test al, 1
mov eax, dword [esp + 8]
mov edi, ecx
mov edx, ebx
je 0x7c8b39
or ebx, 0x2800
mov edx, ebx
jmp 0x7c8b39
or edx, 0x1400
test ah, ah
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 8]
cmove edx, ebx
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0xc]
not ecx
and eax, ecx
test eax, edx
je 0x7c8be2
mov ecx, edx
mov edx, dword [ebx + 0x38]
cmp edi, edx
ja 0x7c98f1
mov ebx, dword [ebx + 0x34]
test edi, edi
je 0x7c8ba2
mov esi, dword [esp + 0x2c]
shl edi, 2
mov dword [esp + 8], ecx
nop dword [eax]
mov edx, dword [ebx]
mov ecx, dword [esp + 0x10]
add ebx, 4
push esi
push dword [esp + 0x20]
push dword [esp + 0x10]
call fcn.004d58b0
add esp, 0xc
add edi, 0xfffffffc
jne 0x7c8b70
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov ebx, dword [ecx + 0x34]
mov edx, dword [ecx + 0x38]
mov edi, dword [ecx + 0x64]
jmp 0x7c8ba8
mov ecx, dword [esp + 0xc]
xor edi, edi
mov eax, dword [ecx + 0x30]
movups xmm0, xmmword [ecx + 0x4c]
mov dword [ecx + 0x4c], eax
mov dword [ecx + 0x50], ebx
mov dword [ecx + 0x54], edx
mov ebx, ecx
mov eax, dword [ecx + 0x44]
movsd xmm1, qword [ecx + 0x5c]
movsd xmm2, qword [ecx + 0x3c]
movups xmmword [ecx + 0x30], xmm0
movsd qword [ecx + 0x58], xmm2
movsd qword [ecx + 0x40], xmm1
mov dword [ecx + 0x60], eax
mov dword [ecx + 0x48], edi
mov dword [ecx + 0x64], 0
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x88]
sub eax, edx
cmp eax, 8
jbe 0x7c937e
mov eax, dword [esp + 0x84]
mov ecx, dword [ebp + 8]
mov dword [eax + edx + 4], 0
mov dword [eax + edx], 0
mov byte [eax + edx + 8], 0
add edx, 9
mov dword [esp + 0x88], edx
mov dword [esp + 0x38], edx
movsd xmm0, qword [esp + 0x80]
movsd qword [esp + 0x30], xmm0
mov eax, dword [esi + 0x138]
test al, 0x3c
je 0x7c8c93
test cl, 1
jne 0x7c8c93
mov edx, dword [esp + 4]
cmp byte [esi + 0x160], dl
jne 0x7c8c93
mov edx, dword [esp + 0x38]
test edx, edx
je 0x7c98fd
cmp edx, 4
jbe 0x7c98d0
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 1]
mov ebx, ecx
mov edx, ecx
or bl, 4
shr edx, 0x10
mov byte [eax + 1], bl
mov byte [eax + 2], ch
shr ecx, 0x18
mov byte [eax + 3], dl
mov ebx, dword [esp + 0xc]
mov byte [eax + 4], cl
mov ecx, dword [ebp + 8]
mov eax, dword [esi + 0x138]
test al, 0x30
je 0x7c8cfa
cmp byte [esp + 0x20], 0
je 0x7c8cac
test cl, 1
jne 0x7c8cfa
cmp byte [esp + 4], 0xd
je 0x7c8cb8
jmp 0x7c8cfa
test cl, 1
jne 0x7c8cfa
cmp byte [esp + 4], 0xa
jne 0x7c8cfa
mov edx, dword [esp + 0x38]
test edx, edx
je 0x7c98fd
cmp edx, 4
jbe 0x7c98d0
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 1]
mov ebx, ecx
mov edx, ecx
or bl, 0x10
shr edx, 0x10
mov byte [eax + 1], bl
mov byte [eax + 2], ch
shr ecx, 0x18
mov byte [eax + 3], dl
mov ebx, dword [esp + 0xc]
mov byte [eax + 4], cl
mov ecx, dword [ebp + 8]
mov eax, dword [esi + 0x138]
test eax, 0x3ffc0
je 0x7c8d4a
test cl, 1
jne 0x7c8d14
movzx eax, byte [esp + 4]
cmp byte [eax + 0x850f84], 0
jne 0x7c8d4a
mov edx, dword [esp + 0x38]
test edx, edx
je 0x7c98fd
cmp edx, 4
jbe 0x7c98d0
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 1]
mov edx, ecx
mov byte [eax + 1], cl
shr ecx, 0x18
or edx, 0x14000
mov byte [eax + 2], dh
shr edx, 0x10
mov byte [eax + 3], dl
mov byte [eax + 4], cl
mov edx, dword [ebx + 0x38]
cmp edi, edx
ja 0x7c98f1
test edi, edi
je 0x7c90af
mov eax, edi
mov edi, dword [ebx + 0x34]
mov edx, dword [esi + 0x150]
mov ecx, dword [edi]
cmp edx, ecx
jbe 0x7c93a9
movzx edx, byte [esp + 4]
lea eax, [edi + eax*4]
mov dword [esp + 8], eax
mov dword [esp + 0x18], edx
nop word cs:[eax + eax]
nop dword [eax]
mov edx, dword [esi + 0x14c]
lea ecx, [ecx + ecx*4]
add edi, 4
lea eax, [edx + ecx*4]
mov ecx, dword [edx + ecx*4]
mov ecx, dword [ecx*4 + 0x7c9a34]
add ecx, dword [esp + 0x78]
jmp ecx
mov edx, dword [esp + 0x38]
test edx, edx
je 0x7c97c9
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
test byte [ecx], 2
je 0x7c90ed
lea esi, [edx - 0xd]
mov edi, esi
and edi, 3
mov dword [esp + 0x7c], edi
jne 0x7c994a
cmp edx, 0xc
jbe 0x7c996a
shr esi, 2
mov dword [ecx + 9], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0x50]
mov ecx, esi
mov dword [esp + 0x5c], 0
push eax
call fcn.004d5d10
add esp, 4
mov eax, dword [ebx + 0xc]
mov ecx, dword [esp + 0x58]
mov edx, dword [ebx + 0x94]
mov esi, dword [esp + 0x94]
mov dword [esp + 0x14], ecx
lea eax, [eax + eax*2]
lea ecx, [ecx + edx*8 + 0x14]
lea eax, [ecx + eax*4]
mov ecx, dword [ebx + 0x88]
add eax, dword [ebx + 0xa4]
add ecx, dword [ebx + 0x7c]
add eax, dword [ebx + 0x68]
add ecx, dword [ebx + 0x38]
add ecx, dword [ebx + 0x44]
add ecx, dword [ebx + 0x54]
add ecx, dword [ebx + 0x60]
add ecx, dword [ebx + 0x98]
lea edi, [eax + ecx*4]
mov ecx, dword [esi + 0x284]
mov eax, 4
and ecx, 0x1f
shl eax, cl
add edi, eax
mov eax, dword [esi + 0x288]
mov esi, dword [esp + 0x50]
mov dword [esp + 0x78], edi
cmp edi, eax
mov edi, dword [esp + 0x54]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x10], esi
jbe 0x7c91f2
mov eax, dword [esp + 0x90]
shr eax, cl
mov ecx, eax
cmp eax, edx
jae 0x7c97fb
mov eax, dword [ebx + 0x90]
mov dword [esp + 0x18], edi
mov esi, dword [eax + ecx*8]
mov edi, dword [eax + ecx*8 + 4]
lock inc dword [esi]
jle 0x7c9939
cmp dword [ebx + 0x20], 1
jne 0x7c91d3
mov eax, dword [ebx + 0x28]
lock dec dword [eax]
jne 0x7c91d3
mov ecx, dword [ebx + 0x28]
mov edx, dword [ebx + 0x2c]
call fcn.004731d0
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x28]
mov dword [ebx + 0x20], 1
mov dword [ebx + 0x24], eax
mov dword [ebx + 0x28], esi
mov dword [ebx + 0x2c], edi
mov edi, dword [esp + 0x18]
mov ebx, dword [ecx + 4]
mov edx, edi
mov esi, edi
mov edi, dword [esp + 0x14]
mov ecx, ebx
push edi
call fcn.004d60e0
add esp, 4
test eax, eax
je 0x7c9250
mov edi, dword [eax]
mov eax, dword [ebx + 0xa8]
cmp dword [ebx + 0xa4], 0
mov ecx, dword [esp + 0x10]
mov dword [ebx + 0xa4], ecx
mov dword [ebx + 0xa8], esi
mov dword [ebx + 0xac], 0
je 0x7c9243
push eax
push 0
push dword [0x94bf18]
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [esp + 0x4c]
mov esi, edi
xor edi, edi
jmp 0x7c971b
test edi, edi
mov dword [esp + 0x18], esi
js 0x7c9979
lea eax, [edi - 0x7ffffff5]
mov dword [esp + 0xc], ebx
cmp eax, 0x80000002
jbe 0x7c9997
add edi, 0xb
mov ebx, 4
mov eax, 4
and edi, 0xfffffffc
je 0x7c929b
movzx eax, byte [0x94bfc5]
xor ecx, ecx
mov edx, edi
call fcn.0071ee80
test eax, eax
je 0x7c99c9
mov ecx, dword [esp + 0x14]
mov dword [eax], 1
mov dword [eax + 4], 1
mov dword [esp + 0x20], eax
add eax, 8
lea esi, [ecx + 0x14]
push ecx
push dword [esp + 0x1c]
mov dword [esp + 0xc], eax
push eax
call fcn.007bd9b0
add esp, 0xc
mov edi, dword [esp + 0xc]
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 0x94]
lea ecx, [esi + edx*8]
lea eax, [eax + eax*2]
mov esi, dword [esp + 0x28]
lea eax, [ecx + eax*4]
mov ecx, dword [edi + 0x88]
add eax, dword [edi + 0xa4]
add ecx, dword [edi + 0x7c]
add eax, dword [edi + 0x68]
add ecx, dword [edi + 0x38]
add ecx, dword [edi + 0x44]
add ecx, dword [edi + 0x54]
add ecx, dword [edi + 0x60]
add ecx, dword [edi + 0x98]
mov edi, dword [esi]
lea eax, [eax + ecx*4]
movzx ecx, byte [edi + 0x284]
shl ebx, cl
add eax, ebx
cmp eax, dword [edi + 0x288]
jbe 0x7c93d0
cmp dword [edi + 0x48], 1
jne 0x7c93c5
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x6c]
cmp eax, dword [edi + 0x4c]
jb 0x7c93c5
cmp dword [edi + 0x50], 1
jne 0x7c93db
mov esi, dword [esp + 0xc]
mov eax, dword [edi + 0x54]
mov ebx, dword [esi + 0x70]
cmp dword [esi + 0xb0], 0
je 0x7c93b3
mov ecx, dword [esi + 0xb8]
mov dword [esp + 8], eax
mov eax, ebx
mov ebx, dword [esi + 0xb4]
mov esi, ecx
sub esi, ebx
neg esi
sub ecx, ebx
mov ebx, eax
mov eax, dword [esp + 8]
cmovb ecx, esi
jmp 0x7c93b5
lea ecx, [esp + 0x80]
push 9
call fcn.007c54d0
add esp, 4
mov edx, dword [esp + 0x88]
jmp 0x7c8bfb
mov edx, dword [esp + 0x1c]
push 0x851cb0
call fcn.007c1be0
push 0x850794
call fcn.007c1be0
xor ecx, ecx
add ecx, ebx
mul edx
mov edx, 0xffffffff
cmovno edx, eax
cmp ecx, edx
jb 0x7c93db
mov esi, dword [esp + 0x28]
mov ecx, esi
call fcn.004d4850
mov ecx, esi
call fcn.004d4ee0
test eax, eax
je 0x7c93f9
mov ecx, dword [esp + 0x20]
mov edi, 1
lock dec dword [ecx]
jne 0x7c93f2
mov edx, dword [esp + 0x14]
call fcn.004731d0
xor ebx, ebx
jmp 0x7c96c8
cmp dword [esp + 0x14], 0
mov dword [esp + 8], edx
je 0x7c9805
mov eax, dword [esp + 4]
mov edx, dword [esp + 0xc]
mov ebx, dword [edi + 0x284]
mov dword [esp + 0x48], edi
mov edi, 1
movzx esi, byte [eax]
mov eax, dword [edx + 0x74]
mov edx, dword [edx + 0x7c]
and ebx, 0x1f
mov ecx, ebx
shl edi, cl
sub eax, edx
and esi, 1
cmp eax, edi
jb 0x7c979b
mov eax, dword [esp + 0xc]
shl esi, 0x1b
cmp ebx, 3
mov eax, dword [eax + 0x78]
jb 0x7c9487
movaps xmm0, xmmword [0x7d4550]
mov ecx, edi
mov dword [esp + 0x24], esi
and edi, 6
lea esi, [eax + edx*4 + 0x10]
and ecx, 0xfffffff8
add edx, ecx
mov ebx, ecx
nop word cs:[eax + eax]
movups xmmword [esi - 0x10], xmm0
movups xmmword [esi], xmm0
add esi, 0x20
add ebx, 0xfffffff8
jne 0x7c9470
mov esi, dword [esp + 0x24]
test ecx, ecx
jne 0x7c949f
mov ecx, edx
nop dword [eax]
lea edx, [ecx + 1]
mov dword [eax + ecx*4], 0x80000000
dec edi
mov ecx, edx
jne 0x7c9490
or esi, dword [esp + 8]
mov edi, dword [esp + 0xc]
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x48]
mov dword [edi + 0x7c], edx
mov ecx, dword [esi + 0x26c]
mov eax, dword [esi + 0x260]
mov edx, dword [esi + 0x268]
mov ebx, dword [esi + 0x264]
or edx, dword [esi + 0x278]
or eax, dword [esi + 0x270]
or ecx, dword [esi + 0x27c]
or ebx, dword [esi + 0x274]
or eax, edx
or ebx, ecx
or ebx, eax
je 0x7c9664
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x284]
and ecx, 0x1f
cmp ecx, 0x1b
jae 0x7c99d5
mov edx, 2
shl edx, cl
cmp edx, 0x8000000
jae 0x7c9a06
mov eax, dword [esp + 0x48]
or edx, 0x20000000
xor esi, esi
mov dword [esp + 0x70], edx
add eax, 0x260
mov dword [esp + 0x2c], eax
cmp esi, 0x101
mov eax, pe_nt_image_headers32
cmovae eax, esi
mov dword [esp + 0x1c], eax
nop word cs:[eax + eax]
nop dword [eax]
cmp dword [esp + 0x1c], esi
je 0x7c9664
mov eax, esi
mov dword [esp + 0xb8], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xac], 1
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 4], esi
mov ecx, eax
mov eax, dword [esp + 4]
and al, 7
and cl, 0x78
shr cl, 3
neg cl
movsx ebx, cl
mov ecx, eax
mov esi, dword [esp + ebx + 0xb4]
mov edx, dword [esp + ebx + 0xb8]
shld edx, esi, cl
shl esi, cl
not cl
mov dword [esp + 8], edx
mov edx, dword [esp + ebx + 0xb0]
mov ebx, dword [esp + ebx + 0xac]
mov edi, edx
shr edi, 1
shr edi, cl
mov ecx, eax
mov eax, dword [esp + 0x2c]
or edi, esi
mov esi, dword [esp + 4]
shld edx, ebx, cl
shl ebx, cl
mov ecx, dword [esp + 8]
shr esi, 3
and esi, 0x10
and edi, dword [eax + esi + 8]
and ebx, dword [eax + esi]
and ecx, dword [eax + esi + 0xc]
and edx, dword [eax + esi + 4]
mov eax, dword [esp + 4]
or ebx, edi
mov edi, dword [esp + 0xc]
or edx, ecx
lea esi, [eax + 1]
or edx, ebx
je 0x7c9550
cmp eax, 0xff
ja 0x7c9664
mov ecx, dword [esp + 0x48]
shl eax, 8
mov edx, edi
movzx eax, ax
push dword [esp + 0x70]
push eax
push dword [esp + 0x2c]
call fcn.004d4fb0
add esp, 0xc
jmp 0x7c9530
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x20]
add dword [edi + 0x68], eax
lock inc dword [ecx]
jle 0x7c9939
mov edx, dword [edi + 0x94]
cmp edx, dword [edi + 0x8c]
jne 0x7c969b
lea ecx, [edi + 0x8c]
call fcn.004c7a80
mov ecx, dword [esp + 0x20]
mov edx, dword [edi + 0x94]
mov eax, dword [edi + 0x90]
mov esi, dword [esp + 0x14]
mov dword [eax + edx*8], ecx
mov dword [eax + edx*8 + 4], esi
inc edx
mov dword [edi + 0x94], edx
mov edx, ecx
mov ecx, edi
push dword [esp + 0x24]
push esi
call fcn.004d50a0
add esp, 8
xor edi, edi
mov bl, 1
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov ecx, dword [eax + 4]
mov eax, dword [ecx + 0xa8]
cmp dword [ecx + 0xa4], 0
mov dword [ecx + 0xa4], edx
mov dword [ecx + 0xa8], esi
mov esi, ecx
mov dword [ecx + 0xac], 0
je 0x7c970d
push eax
push 0
push dword [0x94bf18]
call dword [sym.imp.kernel32.dll_HeapFree]
test bl, bl
mov ebx, esi
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x24]
je 0x7c9781
cmp dword [esp + 0x78], eax
jbe 0x7c9756
mov ecx, dword [ebx + 0x24]
mov eax, dword [ebx + 0x20]
mov edx, dword [ebx + 0x2c]
mov dword [esp + 0x74], ecx
mov ecx, dword [ebx + 0x28]
cmp eax, 1
mov dword [ebx + 0x20], 0
je 0x7c975c
cmp eax, 2
je 0x7c9766
mov ecx, str.state_saver_does_not_have_saved_state_ID0
mov edx, 0x28
push 0x84ed9c
call fcn.007c2000
mov eax, dword [esp + 0x28]
jmp 0x7c976d
lock dec dword [ecx]
jne 0x7c9766
call fcn.004731d0
mov eax, dword [esp + 0x28]
mov ebx, dword [eax + 4]
mov ecx, dword [eax]
mov edx, ebx
push esi
push dword [ebp + 8]
push dword [esp + 0x7c]
call fcn.004d4fb0
add esp, 0xc
mov eax, edi
mov edx, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [esp + 0x1c]
push 0x851ca0
call fcn.007c1be0
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0xc]
lea ecx, [esi + 0x74]
push edi
call fcn.007c7a80
add esp, 4
mov edx, dword [esi + 0x7c]
mov esi, dword [esp + 0x24]
jmp 0x7c943c
mov edx, dword [esp + 0x18]
push 0x851cc0
call fcn.007c1be0
xor ecx, ecx
xor edx, edx
push 0x851760
call fcn.007c1be0
push 0x8509e0
call fcn.007c1be0
mov ecx, eax
push 0x84ec84
call fcn.007c1be0
xor ecx, ecx
xor edx, edx
push 0x8517f0
call fcn.007c1be0
push 0x84eedc
call fcn.007c1be0
xor ecx, ecx
xor edx, edx
push 0x851750
call fcn.007c1be0
xor ecx, ecx
xor edx, edx
push 0x851800
call fcn.007c1be0
xor ecx, ecx
xor edx, edx
push 0x851810
call fcn.007c1be0
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x98]
lea ecx, [esp + 0x7c]
mov dword [esp + 0x30], 0x851c78
mov dword [esp + 0x34], 3
mov dword [esp + 0x40], 0
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], fcn.00412930
mov dword [esp + 0x58], ecx
lea ecx, [esp + 0x50]
lea edx, [esp + 0x8c]
mov dword [esp + 0x5c], fcn.00412930
mov dword [esp + 0x60], edx
mov dword [esp + 0x38], ecx
lea ecx, [esp + 0x30]
mov edx, 0x851c90
mov dword [esp + 0x64], 0x4c5f70
mov dword [esp + 0x3c], 3
mov dword [esp + 0x7c], eax
call fcn.007c1b50
mov edx, dword [esp + 4]
mov ecx, ebx
push 0x8517a0
call fcn.007c1b80
mov ecx, ebx
push 0x851840
call fcn.007c1b80
mov ecx, 4
mov edx, eax
push 0x8516b4
call fcn.007c1c40
dec edx
mov ecx, 4
push 0x850f54
call fcn.007c1c40
mov ecx, 1
xor edx, edx
push 0x851740
call fcn.007c1b80
mov ecx, edi
push 0x851cd0
call fcn.007c1c40
mov ecx, 1
xor edx, edx
push 0x851770
call fcn.007c1b80
push 0x8517b0
call fcn.007c1b80
mov ecx, 5
push 0x851780
call fcn.007c1b80
dec eax
mov ecx, 4
mov edx, eax
push 0x850f54
call fcn.007c1c40
ud2
mov ecx, 0xd
push 0x8517e0
call fcn.007c1c40
mov dword [esp + 0x50], 0
lea eax, [esp + 0x50]
lea ecx, [esp + 0x7c]
mov edx, 0x93c034
push 0x851830
push eax
call fcn.007c6c20
mov ecx, 0xd
push 0x851820
call fcn.007c1c40
mov ecx, 0x93b384
mov edx, 0x2b
push 0x84dff4
push 0x84df18
lea eax, [esp + 0x58]
push eax
call fcn.007c1f60
mov ecx, 0x93b384
mov edx, 0x2b
push 0x7d72a4
push 0x7d7198
lea eax, [esp + 0x58]
push eax
call fcn.007c1f60
mov ecx, 0x8517c0
call fcn.007c1fe0
mov ecx, 0x8517d0
call fcn.007c1fe0
mov ecx, 4
mov edx, edi
call fcn.007c1490
mov eax, 1
mov edx, 0x2b
mov dword [esp + 0x54], 0
shl eax, cl
mov ecx, 0x93b384
mov dword [esp + 0x50], eax
push 0x84eeec
push 0x84df38
lea eax, [esp + 0x58]
push eax
call fcn.007c1f60
mov ecx, 0x93b384
mov edx, 0x2b
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0x8000000
push 0x84eefc
push 0x84df38
lea eax, [esp + 0x58]
push eax
call fcn.007c1f60
sbb eax, 0x58000006
push es
add byte [eax], al
mov esi, 0x2000006
push es
add byte [eax], al
add al, byte [esi]
add byte [eax], al
add al, byte [esi]
add byte [eax], al
add al, byte [esi]
add byte [eax], al
add al, byte [esi]
add byte [eax], al
pop ds
pop es
add byte [eax], al
int3