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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x100
movzx ebx, word [ebp + 0x10]
test ebx, ebx
mov dword [esp + 0x38], edx
je 0x4c258d
mov eax, dword [ecx]
mov eax, dword [eax]
test byte [eax + 0x50], 0x40
mov edx, dword [esp + 0x38]
jne 0x4c320a
mov dword [esp + 0x28], ecx
movzx ecx, word [edx]
xor eax, eax
cmp ecx, 0x3f
ja 0x4c320c
mov esi, 0xffffffff
shl esi, cl
test cl, 0x20
cmove eax, esi
mov edx, 0xffffffff
cmove esi, edx
movzx edx, word [ebp + 0xc]
mov dword [esp + 0x30], edx
test edx, 0x803
sete dl
mov dword [esp + 8], ecx
test ecx, ecx
je 0x4c31bd
not esi
mov dword [esp + 0x50], esi
not eax
xor ecx, ecx
mov cl, dl
xor ecx, 0x183
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x28]
lea edx, [ecx + 0x58]
mov dword [esp + 0x88], edx
add ecx, 0x1f8
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x74], 0
xor esi, esi
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], 0
xor ecx, ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x84], ebx
nop word cs:[eax + eax]
mov dword [esp + 0x40], ecx
test ecx, ecx
je 0x4c2670
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x18]
or edx, dword [edi + 8]
mov ecx, dword [esp + 0x54]
or ecx, dword [edi + 0xc]
mov dword [esp + 0x54], ecx
jmp 0x4c2674
mov edx, dword [esp + 0x58]
mov ecx, dword [ebp + 0x14]
cmp dword [esp + 0x40], ebx
mov dword [esp + 0x58], edx
jae 0x4c2698
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x18]
mov edi, dword [esp + 0x40]
mov ecx, dword [ecx + edi*4]
test dword [esp + 0x30], 0x800
jne 0x4c26f0
mov dword [esp + 0x18], ecx
test byte [ecx + 0x29], 4
mov ecx, dword [esp + 0x28]
jne 0x4c3177
mov dword [esp + 0xc], esi
test byte [esp + 0x30], 0x80
mov edi, dword [esp + 0x18]
je 0x4c26bf
mov word [edi + 0x1e], 0
mov eax, dword [ecx + 4]
movzx ecx, byte [edi + 0x10]
shl ecx, 6
mov eax, dword [eax + ecx + 0x30]
mov dword [esp + 0x5c], eax
not edx
mov dword [esp + 0x34], edx
mov eax, dword [esp + 0x54]
not eax
mov dword [esp + 0x14], eax
xor ebx, ebx
jmp 0x4c271b
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x10]
jmp 0x4c3143
or dword [esp + 0xc], edi
mov eax, dword [esp + 0x24]
or dword [esp + 0x10], eax
nop dword [eax]
inc ebx
cmp ebx, dword [esp + 8]
je 0x4c29c0
xor esi, esi
mov ecx, ebx
mov eax, 1
shld esi, eax, cl
mov edi, 1
shl edi, cl
test bl, 0x20
cmovne esi, edi
mov eax, 0
cmovne edi, eax
mov eax, esi
and eax, dword [esp + 0x10]
mov ecx, edi
mov edx, dword [esp + 0xc]
and ecx, edx
or ecx, eax
jne 0x4c2710
mov dword [esp + 0x24], esi
mov eax, ebx
shl eax, 4
mov ecx, dword [esp + 0x38]
mov esi, dword [ecx + eax + 8]
test esi, esi
je 0x4c2710
lea edx, [ecx + eax]
add edx, 8
jmp 0x4c2779
add esi, 0xc
mov esi, dword [esi]
test esi, esi
je 0x4c2710
mov eax, dword [esi + 4]
test eax, 0x82000
je 0x4c2792
test eax, 0x80000
je 0x4c2770
mov esi, dword [esi + 0x14]
add esi, 8
jmp 0x4c2773
movzx eax, byte [esi]
cmp eax, 0xa9
je 0x4c27a7
cmp eax, 0xa7
jne 0x4c2710
mov ecx, dword [esp + 0x5c]
cmp dword [esi + 0x1c], ecx
jne 0x4c2710
mov dword [esp + 0x1c], edx
movzx edx, word [esi + 0x20]
lea eax, [esp + 0xa8]
pcmpeqd xmm0, xmm0
movdqu xmmword [eax + 0x30], xmm0
movdqu xmmword [eax + 0x20], xmm0
movdqu xmmword [eax + 0x10], xmm0
movdqu xmmword [eax], xmm0
mov dword [eax + 0x44], 0xffffffff
mov dword [eax + 0x40], 0xffffffff
mov eax, dword [esp + 0x88]
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x9c], 0
mov byte [esp + 0xa8], 0
mov dword [esp + 0x98], 0
mov eax, dword [esp + 0x70]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa0], 0
mov dword [esp + 0xac], ecx
mov word [esp + 0xa9], 0x101
cmp dx, 0xfffe
je 0x4c2710
mov word [esp + 0xd8], dx
lea ecx, [esp + 0x90]
call fcn.004be080
test eax, eax
je 0x4c2710
mov dword [esp + 4], 0
jmp 0x4c289d
mov eax, dword [esp + 4]
test eax, eax
cmove eax, edx
mov dword [esp + 4], eax
lea ecx, [esp + 0x90]
call fcn.004be080
test eax, eax
je 0x4c28cf
mov dword [esp], eax
mov ecx, dword [eax + 0x20]
mov edx, dword [eax + 0x24]
mov dword [esp + 0x20], edx
and edx, dword [esp + 0x14]
mov eax, ecx
and eax, dword [esp + 0x34]
or eax, edx
jne 0x4c288d
or ecx, dword [esp + 0x20]
mov edx, dword [esp]
jne 0x4c2880
movzx eax, word [edx + 0xc]
test al, 0x82
je 0x4c2880
mov ecx, dword [esp + 0x1c]
jmp 0x4c2934
mov edx, dword [esp + 4]
test edx, edx
mov ecx, dword [esp + 0x1c]
je 0x4c2710
movzx eax, word [edx + 0xc]
cmp ax, 1
jne 0x4c2934
mov ecx, dword [esp + 0x18]
movzx edx, word [ecx + 0x2c]
mov dword [esp], edx
test edx, edx
je 0x4c2710
mov dword [esp + 0x2c], eax
mov eax, dword [ecx + 0x34]
mov dword [esp + 0x20], eax
xor ecx, ecx
nop dword [eax]
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x20]
cmp edx, dword [eax + ecx*4]
je 0x4c2928
inc ecx
cmp dword [esp], ecx
jne 0x4c2910
jmp 0x4c2710
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x2c]
test al, 0x82
je 0x4c26fd
cmp word [esi + 0x20], 0
js 0x4c26fd
mov dword [esp], edx
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
mov edx, dword [ecx]
mov ecx, esi
call fcn.00475f60
mov ecx, esi
mov esi, eax
test eax, eax
jne 0x4c2966
mov eax, dword [ecx]
mov esi, dword [eax + 8]
mov eax, dword [esp]
mov edx, dword [eax]
call fcn.00437f70
test eax, eax
je 0x4c2710
mov ecx, dword [esi]
mov dword [esp], ecx
mov esi, dword [eax]
xor edx, edx
jmp 0x4c29a4
movzx ecx, byte [ecx + 0x52a853]
cmp cl, byte [eax + 0x52a853]
jne 0x4c2710
inc edx
mov eax, dword [esp]
movzx ecx, byte [eax + edx]
movzx eax, byte [esi + edx]
cmp cl, al
jne 0x4c2990
test ecx, ecx
jne 0x4c29a3
jmp 0x4c26fd
mov edi, dword [esp + 0x18]
mov edx, dword [edi + 0x28]
test edx, 0x1000
jne 0x4c2a40
xor ebx, ebx
mov eax, 1
test edx, 0x100
jne 0x4c2a49
mov ecx, dword [edi + 0x20]
test ecx, ecx
mov eax, dword [esp + 0x3c]
je 0x4c320a
test byte [ecx + 0x37], 4
jne 0x4c320a
movzx esi, word [ecx + 0x34]
cmp byte [ecx + 0x36], 0
setne byte [esp]
test edx, 0x8000
sete dl
and dl, byte [esp]
mov dword [esp + 0x14], edx
mov dword [esp + 0x68], esi
test esi, esi
je 0x4c3162
mov dword [esp + 0x1c], ecx
movzx eax, word [ecx + 0x32]
mov dword [esp + 0x64], eax
mov ecx, dword [esp + 0x40]
mov eax, 1
jmp 0x4c2a6b
mov edx, dword [esp + 8]
jmp 0x4c2f51
mov cl, 1
mov dword [esp + 0x14], ecx
mov dword [esp + 0x68], 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x64], 0
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0xc]
xor edx, edx
mov dword [esp + 0x60], 1
shld edx, eax, cl
mov eax, 1
shl eax, cl
test cl, 0x20
cmovne edx, eax
mov dword [esp + 0x80], edx
cmovne eax, ebx
mov dword [esp + 0x7c], eax
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x2c], 0
movzx ecx, word [edi + 0x18]
cmp ebx, ecx
mov dword [esp + 4], ebx
jae 0x4c2ac7
movzx eax, word [edi + 0x2e]
cmp ebx, eax
jae 0x4c2b70
xor eax, eax
mov edx, dword [esp + 0x1c]
test edx, edx
mov dword [esp + 0xc], esi
je 0x4c2b40
mov dword [esp], eax
mov edi, edx
mov edx, dword [edx + 4]
mov esi, dword [edi + 0xc]
movzx edx, word [edx + ebx*2]
mov edi, dword [edi + 0x1c]
movzx eax, byte [edi + ebx]
and al, 1
mov dword [esp + 0x4c], eax
cmp dx, word [esi + 0x20]
mov edi, 0xffff
cmove edx, edi
movsx edi, dx
mov dword [esp + 0x24], edi
cmp byte [esp + 0x14], 0
je 0x4c2bae
test dx, dx
mov eax, dword [esp]
js 0x4c2bb5
mov dl, 1
cmp ebx, ecx
jb 0x4c2b5e
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x24]
lea edx, [edx + edx*2]
test byte [ecx + edx*4 + 4], 0xf
setne dl
jmp 0x4c2b5e
mov dl, 1
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x4c], 0
cmp byte [esp + 0x14], 0
mov ecx, 0
je 0x4c2bc0
mov ecx, edx
jmp 0x4c2bc0
mov eax, dword [edi + 0x34]
mov edx, dword [eax + ebx*4]
movzx ebx, word [edx + 0xc]
test dword [esp + 0x70], ebx
je 0x4c2e40
test ebx, 0x180
mov ecx, dword [esp + 0x14]
movzx ecx, cl
mov eax, 0
cmovne ecx, eax
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 8]
mov edi, dword [esp + 0x18]
jmp 0x4c2ef9
xor ecx, ecx
mov eax, dword [esp]
jmp 0x4c2bc0
cmp dx, 0xfffe
setne cl
nop dword [eax]
mov dword [esp + 0x14], ecx
test al, al
mov edx, dword [esp + 8]
jne 0x4c2f10
xor ebx, ebx
mov al, 1
mov dword [esp], eax
nop word [eax + eax]
xor edi, edi
mov ecx, ebx
mov eax, 1
shld edi, eax, cl
mov esi, 1
shl esi, cl
test bl, 0x20
cmovne edi, esi
mov eax, 0
cmovne esi, eax
mov eax, edi
and eax, dword [esp + 0x10]
mov ecx, esi
and ecx, dword [esp + 0xc]
or ecx, eax
jne 0x4c2d94
mov dword [esp + 0x34], edi
mov edi, ebx
shl edi, 4
mov eax, dword [esp + 0x38]
mov edx, dword [eax + edi + 8]
test edx, edx
je 0x4c2d90
lea ecx, [eax + edi]
add ecx, 8
jmp 0x4c2c4d
add edx, 0xc
mov edx, dword [edx]
test edx, edx
je 0x4c2d90
mov eax, dword [edx + 4]
test eax, 0x82000
je 0x4c2c66
test eax, 0x80000
je 0x4c2c40
mov edx, dword [edx + 0x14]
add edx, 8
jmp 0x4c2c43
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x30]
and eax, 0xc0
mov ecx, dword [esp]
movzx ecx, cl
cmove ecx, eax
mov dword [esp], ecx
cmp dword [esp + 0x24], 0xffffffff
jl 0x4c2cbb
movzx eax, byte [edx]
cmp eax, 0xa9
je 0x4c2c9b
cmp eax, 0xa7
jne 0x4c2d90
mov eax, dword [esp + 0x5c]
cmp dword [edx + 0x1c], eax
jne 0x4c2d90
mov dword [esp + 0x6c], edi
movsx eax, word [edx + 0x20]
cmp dword [esp + 0x24], eax
je 0x4c2d17
jmp 0x4c2d90
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x28]
mov ecx, dword [esp + 4]
shl ecx, 4
mov eax, dword [eax + ecx + 8]
jmp 0x4c2cd9
add edx, 0xc
mov edx, dword [edx]
test edx, edx
je 0x4c2cf4
mov ecx, dword [edx + 4]
test ecx, 0x82000
je 0x4c2cf6
test ecx, 0x80000
je 0x4c2cd0
mov edx, dword [edx + 0x14]
add edx, 8
jmp 0x4c2cd3
xor edx, edx
test eax, eax
mov dword [esp + 0x6c], edi
jne 0x4c2dbd
xor eax, eax
xor ecx, ecx
push dword [esp + 0x5c]
push eax
call fcn.0049a470
add esp, 8
test eax, eax
jne 0x4c2d90
cmp dword [esp + 0x24], 0xffffffff
je 0x4c2de0
mov eax, dword [esp + 0x28]
mov edi, dword [eax]
mov eax, dword [esp + 0x20]
mov edx, dword [eax]
mov ecx, edi
call fcn.00475f60
test eax, eax
jne 0x4c2d3e
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x20]
mov ecx, dword [esp + 4]
mov edi, dword [eax + ecx*4]
xor edx, edx
jmp 0x4c2d65
test eax, eax
je 0x4c2de0
inc edx
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + edx]
movzx ecx, byte [edi + edx]
cmp al, cl
je 0x4c2d60
movzx eax, byte [eax + 0x52a853]
cmp al, byte [ecx + 0x52a853]
je 0x4c2d64
nop word cs:[eax + eax]
mov edx, dword [esp + 8]
cmp byte [esp], 0
je 0x4c2f10
inc ebx
cmp ebx, edx
jb 0x4c2be0
jmp 0x4c2f10
add eax, 0xc
mov eax, dword [eax]
test eax, eax
je 0x4c2d02
mov ecx, dword [eax + 4]
test ecx, 0x82000
je 0x4c2d04
test ecx, 0x80000
je 0x4c2db0
mov eax, dword [eax + 0x14]
add eax, 8
jmp 0x4c2db3
test byte [esp + 0x30], 0x80
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 4]
je 0x4c2df4
inc eax
mov word [ecx + 0x1e], ax
test byte [esp + 0x30], 0x40
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x6c]
mov dword [esp + 0x10], ecx
jne 0x4c2eb0
cmp byte [esp + 0x48], 0
mov eax, dword [esp + 0x38]
je 0x4c2e49
mov ebx, dword [esp + 0x4c]
xor bl, byte [esp + 0x44]
movzx eax, byte [eax + edi + 0x10]
and al, 1
mov cl, 1
mov dword [esp + 0x48], ecx
cmp bl, al
mov ebx, dword [esp + 0x34]
je 0x4c2eb0
jmp 0x4c2f10
test bl, 1
jne 0x4c2e75
xor eax, eax
jmp 0x4c2e99
movzx eax, byte [eax + edi + 0x10]
and al, 1
xor al, byte [esp + 0x4c]
mov dword [esp + 0x44], eax
mov al, 1
mov dword [esp + 0x48], eax
je 0x4c2ea2
mov eax, dword [ebp + 0x18]
mov ecx, dword [esp + 0x7c]
or dword [eax], ecx
mov ecx, dword [esp + 0x80]
or dword [eax + 4], ecx
jmp 0x4c2eb0
mov dword [esp + 0xc], esi
mov edx, dword [edx]
mov edi, dword [esp + 0x60]
nop
mov esi, edi
cmp ecx, edi
je 0x4c2e90
mov ebx, dword [eax + esi*4]
lea edi, [esi + 1]
cmp dword [ebx], edx
jne 0x4c2e80
cmp ecx, esi
setne al
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 4]
jmp 0x4c2ac9
mov dword [esp + 0x44], 0
nop word [eax + eax]
mov eax, dword [esp + 0x38]
test byte [eax + edi + 0x10], 2
mov edi, dword [esp + 0x18]
je 0x4c2ed1
movzx eax, word [edi + 0x18]
cmp dword [esp + 4], eax
jne 0x4c2f10
mov edi, dword [esp + 0x18]
or byte [edi + 0x2a], 8
cmp dword [esp + 0x24], 0xffffffff
mov ecx, dword [esp + 0x2c]
movzx ecx, cl
mov eax, 1
cmove ecx, eax
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0xc]
or eax, esi
mov esi, eax
or dword [esp + 0x10], ebx
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 4]
inc ebx
inc dword [esp + 0x60]
cmp ebx, dword [esp + 0x68]
jne 0x4c2aaf
jmp 0x4c2f3f
movzx eax, word [esp + 0x64]
mov ecx, dword [esp + 4]
cmp ecx, eax
mov ebx, dword [esp + 0x14]
movzx ebx, bl
mov eax, 0
cmovb ebx, eax
test ecx, ecx
cmove ebx, ecx
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
or cl, byte [esp + 0x14]
je 0x4c31ab
mov dword [esp + 0xc], esi
mov ecx, dword [esp + 0x74]
or ecx, dword [edi + 0xc]
mov eax, dword [esp + 0x78]
or eax, dword [edi + 8]
mov dword [esp + 0x78], eax
not eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x74], ecx
not ecx
mov dword [esp + 0x14], ecx
xor ebx, ebx
jmp 0x4c2fa3
xor eax, eax
and edx, dword [esp + 0x14]
and eax, dword [esp + 0x34]
or eax, edx
mov eax, 0
cmovne edi, eax
cmovne esi, eax
or dword [esp + 0x10], esi
or dword [esp + 0xc], edi
mov edx, dword [esp + 8]
inc ebx
cmp ebx, edx
je 0x4c3130
xor esi, esi
mov ecx, ebx
mov eax, 1
shld esi, eax, cl
mov edi, 1
shl edi, cl
test bl, 0x20
cmovne esi, edi
mov eax, 0
cmovne edi, eax
mov eax, esi
and eax, dword [esp + 0x10]
mov ecx, edi
and ecx, dword [esp + 0xc]
or ecx, eax
jne 0x4c2f9a
mov eax, ebx
shl eax, 4
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + eax + 8]
xor edx, edx
test ecx, ecx
je 0x4c2f77
mov eax, dword [ecx + 4]
mov dword [esp + 0x20], ecx
cmp byte [ecx], 0xa7
jne 0x4c3063
mov ecx, eax
and ecx, 0x20
jne 0x4c3063
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0x1c]
mov dword [esp], eax
mov eax, 1
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x24], edi
mov edi, dword [esp]
cmp dword [ecx + 0x200], edi
mov edi, dword [esp + 0x24]
je 0x4c2f79
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x1fc]
cmp eax, 2
jl 0x4c306a
mov dword [esp + 4], esi
dec eax
xor ecx, ecx
nop word [eax + eax]
mov esi, eax
mov edx, dword [esp]
mov eax, dword [esp + 0x28]
cmp dword [eax + ecx*4 + 0x204], edx
je 0x4c3102
inc ecx
mov eax, esi
cmp esi, ecx
jne 0x4c3040
mov esi, dword [esp + 4]
jmp 0x4c306a
test eax, 0x810000
je 0x4c30e3
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x90], xmm0
mov dword [esp + 0xa4], 0xffffffff
mov dword [esp + 0xa0], 0xffffffff
mov word [esp + 0xa4], 1
mov dword [esp + 0x94], 0x499e30
mov dword [esp + 0x98], 0x499fa0
mov dword [esp + 0xa8], 0
lea ecx, [esp + 0x90]
mov edx, dword [esp + 0x20]
call fcn.00499fb0
xor eax, eax
cmp word [esp + 0xa4], 0
mov edx, 0
jne 0x4c2f79
jmp 0x4c2f96
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x20]
call fcn.004bd5e0
mov ecx, eax
or ecx, edx
jne 0x4c2f79
jmp 0x4c306a
inc cl
xor edx, edx
mov eax, 1
shld edx, eax, cl
mov eax, 1
shl eax, cl
test cl, 0x20
cmovne edx, eax
mov ecx, 0
cmovne eax, ecx
mov esi, dword [esp + 4]
jmp 0x4c2f79
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x84]
xor edx, edx
cmp esi, eax
mov dword [esp + 0x10], ecx
sbb ecx, dword [esp + 0x50]
jae 0x4c31ad
mov edi, dword [esp + 0x40]
lea ecx, [edi + 1]
cmp edi, ebx
jb 0x4c2650
jmp 0x4c31ad
mov dword [esp + 0x2c], 0
mov edx, dword [esp + 8]
mov esi, dword [esp + 0xc]
jmp 0x4c2f3f
mov ecx, dword [esp + 0x18]
cmp byte [ecx + 0x1d], 0
sete dl
mov ecx, dword [esp + 0x30]
and ecx, 0x280
cmp ecx, 0x80
sete cl
or cl, dl
mov ecx, dword [esp + 0x10]
cmove ecx, dword [esp + 0x50]
mov dword [esp + 0x10], ecx
cmove esi, eax
xor edx, edx
jmp 0x4c31ad
mov dl, 1
xor eax, esi
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x10]
xor ecx, ebx
or ecx, eax
jne 0x4c31c3
mov eax, dword [esp + 8]
jmp 0x4c320c
mov al, 0xff
test dl, dl
mov ecx, dword [esp + 8]
je 0x4c320c
mov edi, esi
xor esi, esi
not ebx
not edi
mov eax, ecx
nop word [eax + eax]
cmp eax, 2
jl 0x4c320a
dec eax
mov edx, 0xffffffff
mov ecx, eax
shl edx, cl
test al, 0x20
mov ecx, 0xffffffff
cmovne ecx, edx
cmovne edx, esi
not edx
and edx, edi
not ecx
and ecx, ebx
or ecx, edx
jne 0x4c31e0
jmp 0x4c320c
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret