Function at 0x4c7d70
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x98
cmp word [ebp + 0x10], 0
xorps xmm0, xmm0
push esi
push edi
mov edi, ecx
mov dword [esp + 0x48], edx
mov dword [esp + 0x18], edi
mov dword [esp + 0x40], 0
movlpd qword [esp + 0x70], xmm0
mov eax, dword [edi]
mov eax, dword [eax]
mov dword [esp + 0x64], eax
je 0x4c7db6
test byte [eax + 0x40], 0x80
je 0x4c7db6
xor al, al
pop edi
pop esi
mov esp, ebp
pop ebp
ret
movzx eax, word [edx]
mov dword [esp + 0x7c], eax
cmp eax, 0x3f
ja 0x4c7dae
movzx ecx, ax
xor edx, edx
xor esi, esi
movlpd qword [esp + 0x50], xmm0
mov eax, ecx
movlpd qword [esp + 0x28], xmm0
bts edx, eax
mov byte [esp + 0x20], 1
cmp eax, 0x20
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], 0
cmovae esi, edx
xor edx, esi
cmp eax, 0x40
mov eax, dword [esp + 0x54]
cmovae esi, edx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x50]
add edx, 0xffffffff
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x2c]
adc esi, 0xffffffff
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x74]
mov dword [esp + 0x5c], esi
mov esi, dword [esp + 0x70]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], esi
mov dword [esp + 0x68], eax
jmp 0x4c7e40
mov eax, dword [esp + 0x5c]
cmp edx, eax
ja 0x4c855f
jb 0x4c7e58
cmp esi, dword [esp + 0x78]
jae 0x4c8563
movzx eax, word [ebp + 0x10]
mov ecx, dword [esp + 0x38]
cmp dword [esp + 0x3c], eax
jg 0x4c855b
cmp dword [esp + 0x3c], 0
mov edi, dword [esp + 0x18]
jle 0x4c7e97
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x68]
or ecx, dword [edi + 8]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x60]
or ecx, dword [edi + 0xc]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x3c], eax
jge 0x4c7eb4
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x3c]
mov eax, dword [eax + 0x18]
mov eax, dword [eax + esi*4]
mov esi, dword [esp + 0xc]
jmp 0x4c7eb7
mov eax, dword [ebp + 0x14]
test dword [eax + 0x24], 0x400
mov dword [esp + 0x40], eax
jne 0x4c8555
mov edx, eax
movzx eax, byte [edx + 0x10]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 4]
shl ecx, 4
mov edi, dword [ecx + eax + 0x38]
xor eax, eax
mov dword [esp + 0x4c], edi
mov dword [esp + 0x28], eax
cmp dword [esp + 0x38], eax
jle 0x4c802e
xor esi, esi
mov dword [esp + 0x14], esi
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov dword [esp + 0x50], ecx
cmovae edx, ecx
and ecx, dword [esp + 0xc]
mov eax, edx
mov dword [esp + 0x30], edx
and eax, dword [esp + 0x10]
or ecx, eax
jne 0x4c800e
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 4]
mov esi, dword [esi + eax]
test esi, esi
je 0x4c7f54
mov eax, dword [esi + 4]
test eax, 0x1000
je 0x4c7f54
test eax, 0x40000
je 0x4c7f4d
mov eax, dword [esi + 0x14]
mov eax, dword [eax + 4]
mov esi, dword [eax]
jmp 0x4c7f50
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x4c7f32
cmp byte [esi], 0x98
jne 0x4c800e
cmp dword [esi + 0x1c], edi
jne 0x4c800e
mov eax, dword [esp + 0x60]
mov edx, edi
mov ecx, dword [esp + 0x68]
not eax
push 0
push 0x182
not ecx
push eax
movsx eax, word [esi + 0x20]
push ecx
mov ecx, dword [esp + 0x28]
push eax
add ecx, 0x148
call fcn.004c4580
mov edi, eax
add esp, 0x14
test edi, edi
je 0x4c800a
test byte [edi + 0x12], 0x82
je 0x4c7ff2
cmp word [esi + 0x20], 0
jl 0x4c7ff2
mov eax, dword [esp + 0x48]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x14]
mov edx, dword [edx + eax]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
call fcn.0048cf80
test eax, eax
jne 0x4c7fcb
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 8]
mov esi, dword [eax]
mov eax, dword [esp + 0x18]
mov edx, dword [edi]
mov ecx, dword [eax]
call fcn.0048cf80
test eax, eax
jne 0x4c7fe5
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 8]
mov edx, dword [eax]
mov ecx, esi
call fcn.0045cc50
test eax, eax
jne 0x4c800a
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
or eax, dword [esp + 0x50]
or edx, dword [esp + 0x30]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x28]
add dword [esp + 0x14], 0x18
inc eax
mov esi, dword [esp + 0x14]
mov dword [esp + 0x28], eax
cmp eax, dword [esp + 0x38]
jl 0x4c7ef5
mov edx, dword [esp + 0x40]
mov eax, dword [edx + 0x24]
test eax, 0x1000
jne 0x4c833a
test eax, 0x100
je 0x4c8052
xor edi, edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x50], edi
lea eax, [edi + 1]
jmp 0x4c8080
mov edi, dword [edx + 0x1c]
mov dword [esp + 0x34], edi
test edi, edi
je 0x4c7dae
test byte [edi + 0x38], 4
jne 0x4c7dae
movzx eax, word [edi + 0x32]
cmp byte [edi + 0x36], 0
mov dword [esp + 0x50], eax
movzx eax, word [edi + 0x34]
setne byte [esp + 0x20]
movzx eax, ax
xor cl, cl
xor esi, esi
mov byte [esp + 0x1e], 0
mov byte [esp + 0x1f], 0
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], esi
mov dword [esp + 0x70], eax
test eax, eax
jle 0x4c833a
mov dword [esp + 0x30], esi
lea esp, [esp]
movzx ecx, word [edx + 0x18]
cmp esi, ecx
jge 0x4c80e5
cmp word [edx + 0x2a], 0
jne 0x4c80e5
mov eax, dword [edx + 0x30]
mov eax, dword [eax + esi*4]
movzx eax, word [eax + 0x12]
test eax, 0x182
je 0x4c80e5
test eax, 0x100
je 0x4c831d
mov byte [esp + 0x20], 0
jmp 0x4c831d
test edi, edi
je 0x4c810b
mov eax, dword [edi + 4]
movsx edx, word [eax + esi*2]
mov eax, dword [edi + 0x1c]
mov dword [esp + 0x14], edx
mov al, byte [esi + eax]
mov byte [esp + 0xb], al
mov eax, dword [edi + 0xc]
movsx eax, word [eax + 0x20]
cmp edx, eax
jne 0x4c8117
jmp 0x4c8110
mov byte [esp + 0xb], 0
or edx, 0xffffffff
mov dword [esp + 0x14], edx
cmp byte [esp + 0x20], 0
je 0x4c8145
test edx, edx
js 0x4c8145
cmp esi, ecx
jl 0x4c8145
mov eax, dword [edi + 0xc]
mov ecx, edx
mov edx, dword [esp + 0x20]
add ecx, ecx
xor esi, esi
movzx edx, dl
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0xc], 0
cmove edx, esi
mov dword [esp + 0x20], edx
xor esi, esi
mov byte [esp + 0xa], 1
xor edi, edi
mov edi, edi
cmp esi, dword [esp + 0x38]
jge 0x4c8254
xor edx, edx
xor ecx, ecx
mov eax, esi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0xc]
and ecx, dword [esp + 0x10]
or edx, ecx
jne 0x4c8245
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 4]
mov ecx, dword [edi + ecx]
test ecx, ecx
je 0x4c81b2
nop
mov eax, dword [ecx + 4]
test eax, 0x1000
je 0x4c81b2
test eax, 0x40000
je 0x4c81ab
mov eax, dword [ecx + 0x14]
mov ecx, dword [eax + 4]
mov ecx, dword [ecx]
jmp 0x4c81ae
mov ecx, dword [ecx + 0xc]
test ecx, ecx
jne 0x4c8190
mov eax, dword [ebp + 0xc]
mov edx, dword [esp + 0x14]
and eax, 0x300
neg eax
sbb al, al
and byte [esp + 0xa], al
cmp edx, 0xffffffff
jl 0x4c81e3
cmp byte [ecx], 0x98
jne 0x4c8245
mov eax, dword [esp + 0x4c]
cmp dword [ecx + 0x1c], eax
jne 0x4c8245
movsx eax, word [ecx + 0x20]
cmp eax, edx
jne 0x4c8245
jmp 0x4c8208
mov eax, dword [esp + 0x34]
push dword [esp + 0x4c]
mov eax, dword [eax + 0x28]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x34]
mov edx, dword [edx + eax]
call fcn.004928d0
add esp, 4
test eax, eax
jne 0x4c8245
mov edx, dword [esp + 0x14]
test edx, edx
js 0x4c8282
mov eax, dword [esp + 0x48]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0x18]
mov edx, dword [edx + edi]
mov ecx, dword [eax]
call fcn.0048cf80
test eax, eax
jne 0x4c822c
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [edx + ecx*4]
mov ecx, dword [eax]
call fcn.0045cc50
test eax, eax
je 0x4c8282
inc esi
add edi, 0x18
cmp byte [esp + 0xa], 0
jne 0x4c8150
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x4c8267
mov eax, dword [esp + 0x50]
movzx eax, ax
cmp ecx, eax
jge 0x4c826c
mov byte [esp + 0x20], 0
mov ecx, dword [esp + 0x28]
test cl, cl
je 0x4c833a
mov byte [esp + 0x20], 1
jmp 0x4c8345
test dword [ebp + 0xc], 0x100
jne 0x4c82e0
cmp byte [esp + 0x1e], 0
lea ecx, [esi + esi*2]
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 4]
je 0x4c82ac
mov dl, byte [esp + 0xb]
xor dl, byte [esp + 0x1f]
cmp dl, byte [eax + ecx*8 + 0xc]
jne 0x4c8254
jmp 0x4c82e0
mov dh, byte [eax + ecx*8 + 0xc]
xor dh, byte [esp + 0xb]
mov byte [esp + 0x1f], dh
je 0x4c82db
mov eax, dword [esp + 0x3c]
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [ebp + 0x18]
cmovae edx, ecx
or dword [eax], ecx
or dword [eax + 4], edx
mov byte [esp + 0x1e], 1
cmp dword [esp + 0x14], 0
mov eax, 1
mov edx, dword [esp + 0x28]
movzx edx, dl
cmovl edx, eax
xor eax, eax
bts eax, esi
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x40]
xor ecx, ecx
cmp esi, 0x20
cmovae ecx, eax
xor eax, ecx
cmp esi, 0x40
mov esi, dword [esp + 0x24]
cmovae ecx, eax
or dword [esp + 0xc], eax
or dword [esp + 0x10], ecx
add dword [esp + 0x30], 0x18
inc esi
mov dword [esp + 0x24], esi
cmp esi, dword [esp + 0x70]
jge 0x4c826c
mov edi, dword [esp + 0x34]
jmp 0x4c80b0
cmp byte [esp + 0x20], 0
je 0x4c8539
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x6c]
or ecx, dword [eax + 8]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x44]
or ecx, dword [eax + 0xc]
xor eax, eax
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x50], eax
test ecx, ecx
jle 0x4c853d
xor esi, esi
mov dword [esp + 0x24], esi
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov dword [esp + 0x70], ecx
cmovae edx, ecx
and ecx, dword [esp + 0xc]
mov eax, edx
mov dword [esp + 0x14], edx
and eax, dword [esp + 0x10]
or ecx, eax
jne 0x4c851b
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x18]
add ecx, 0x44
mov eax, dword [eax + 4]
mov edx, dword [esi + eax]
mov dword [esp + 0x28], edx
test edx, edx
jne 0x4c83dd
xorps xmm0, xmm0
movlpd qword [esp + 0x28], xmm0
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], eax
jmp 0x4c8484
cmp byte [edx], 0x98
jne 0x4c8426
mov esi, dword [ecx]
xor eax, eax
test esi, esi
jle 0x4c83fc
mov edi, dword [edx + 0x1c]
add ecx, 4
cmp dword [ecx], edi
je 0x4c840f
inc eax
add ecx, 4
cmp eax, esi
jl 0x4c83f0
xorps xmm0, xmm0
movlpd qword [esp + 0x28], xmm0
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
jmp 0x4c8474
xor esi, esi
xor edi, edi
bts esi, eax
cmp eax, 0x20
cmovae edi, esi
xor esi, edi
cmp eax, 0x40
cmovae edi, esi
jmp 0x4c8474
mov edx, dword [edx + 0x10]
call fcn.004c3e10
mov ecx, dword [esp + 0x18]
mov edi, edx
mov edx, dword [esp + 0x28]
mov esi, eax
lea ecx, [ecx + 0x44]
mov edx, dword [edx + 0xc]
call fcn.004c3e10
mov ecx, dword [esp + 0x18]
or esi, eax
mov eax, dword [esp + 0x28]
or edi, edx
lea ecx, [ecx + 0x44]
test dword [eax + 4], 0x800
mov edx, dword [eax + 0x14]
je 0x4c8467
call fcn.004c3120
jmp 0x4c846c
call fcn.004c3ea0
or esi, eax
or edi, edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x30], esi
or esi, edi
mov dword [esp + 0x34], edi
jne 0x4c84e7
mov esi, dword [esp + 0x24]
mov dword [esp + 0x98], 0
xorps xmm0, xmm0
movdqa xmmword [esp + 0x80], xmm0
movq qword [esp + 0x90], xmm0
mov byte [esp + 0x94], 1
mov dword [esp + 0x84], 0x48eba0
mov dword [esp + 0x88], 0x48ecb0
mov dword [esp + 0x98], 0
test edx, edx
je 0x4c84e7
lea ecx, [esp + 0x80]
call fcn.0048aa60
cmp byte [esp + 0x94], 0
je 0x4c851b
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x44]
not ecx
and ecx, dword [esp + 0x30]
not eax
and eax, dword [esp + 0x34]
or ecx, eax
mov esi, dword [esp + 0x24]
jne 0x4c851b
mov eax, dword [esp + 0xc]
or eax, dword [esp + 0x70]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x10]
or eax, dword [esp + 0x14]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x50]
add esi, 0x18
mov ecx, dword [esp + 0x38]
inc eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x24], esi
cmp eax, ecx
jl 0x4c8377
jmp 0x4c853d
mov ecx, dword [esp + 0x38]
inc dword [esp + 0x3c]
cmp byte [esp + 0x20], 0
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
je 0x4c855b
jmp 0x4c7e40
cmp byte [eax + 0x1d], 0
jne 0x4c8569
mov eax, dword [esp + 0x5c]
cmp esi, dword [esp + 0x78]
jne 0x4c8573
cmp edx, eax
jne 0x4c8573
mov al, byte [esp + 0x7c]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp byte [esp + 0x20], 0
jne 0x4c85dc
lea eax, [ecx - 1]
mov dword [esp + 0x44], eax
test eax, eax
jle 0x4c7dae
mov edi, dword [esp + 0x10]
lea ecx, [ecx]
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
mov eax, ecx
adc edx, 0xffffffff
and eax, esi
mov esi, edx
and esi, edi
cmp eax, ecx
jne 0x4c85bb
cmp esi, edx
je 0x4c85d2
mov eax, dword [esp + 0x44]
dec eax
mov dword [esp + 0x44], eax
test eax, eax
jle 0x4c7dae
mov esi, dword [esp + 0xc]
jmp 0x4c8590
mov al, byte [esp + 0x44]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
pop edi
or al, 0xff
pop esi
mov esp, ebp
pop ebp
ret