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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov dword [edx], 1
mov ebp, dword [esp + 0x7c]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], 0
mov dword [esp + 0x30], 1
test ebp, ebp
je 0x510db0
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x38]
lea edx, [esp + 0x34]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x30]
call fcn.0050f9e0
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x20], 1
mov eax, edx
shr eax, 0x18
and edi, 0x10000000
mov dword [ebx + 4], eax
mov dword [esp + 0x1c], edi
je 0x5105d0
shr edx, 0x10
mov dword [esp + 0x1c], 0
movzx edx, dl
sub edx, 1
je 0x5105d0
test edx, 0xffff0000
je 0x510fa4
mov ecx, 0x11
mov edx, 0xffff
shr edx, 8
add ecx, 8
test dl, 0xf0
je 0x5105a3
shr edx, 4
add ecx, 4
test dl, 0xc
je 0x5105ae
shr edx, 2
add ecx, 2
and edx, 2
je 0x5105b6
add ecx, 1
mov edx, 1
shl edx, cl
mov edi, edx
mov dword [esp + 0x20], edx
lea edx, [edx - 1]
and edx, eax
mov dword [esp + 0x1c], edx
xor edx, edx
div edi
mov edi, dword [esp + 0x10]
mov dword [edi + 8], eax
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x78]
mov edx, eax
mov ecx, eax
shr edx, 8
shr ecx, 4
and edx, 0xf
and ecx, 0xf
cmp edx, 0xf
mov dword [esp + 0x28], ecx
sete bl
and edi, 0xfffffffd
cmp dword [esp + 0x78], 1
mov dword [esp + 0x18], edi
setbe byte [esp + 0x2c]
cmp dword [esp + 0x78], 3
sete cl
or cl, byte [esp + 0x2c]
je 0x510620
test bl, bl
jne 0x510a81
mov ecx, dword [esp + 0x78]
mov edi, dword [esp + 0x10]
test ecx, ecx
mov dword [edi + 0x78], edx
jne 0x510aa0
cmp edx, 6
je 0x510ac2
test bl, bl
jne 0x510ac2
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x28]
mov dword [edi + 0x74], ebx
mov edi, dword [esp + 0x10]
and eax, 0xf
mov dword [edi + 0x70], eax
mov eax, dword [esp + 0x78]
test eax, eax
jne 0x51066b
cmp dword [edi + 0x78], 6
je 0x511140
mov edi, dword [esp + 0x10]
test ebp, ebp
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
lea ebx, [edi + 0x30]
je 0x510dd2
lea esi, [esp + 0x48]
lea eax, [esp + 0x40]
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x44]
mov dword [esp + 4], ebp
mov dword [esp], esi
call fcn.0050f9e0
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x70], 0x80000003
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x48]
mov dword [ebx + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [ebx + 8], eax
ja 0x511080
mov edi, dword [esp + 0x18]
test edi, edi
je 0x510ae0
cmp dword [esp + 0x70], 0x80000007
jbe 0x51074b
test ebp, ebp
mov dword [esp + 0x30], 0x80000008
je 0x510fc0
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x38]
lea edx, [esp + 0x34]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x30]
call fcn.0050f9e0
mov eax, dword [esp + 0x38]
mov ecx, eax
shr ecx, 0xc
and ecx, 0xf
jne 0x510ff1
movzx ecx, al
add ecx, 1
mov edi, dword [esp + 0x10]
xor edx, edx
mov eax, dword [edi + 4]
mov dword [edi + 0x18], 0
div ecx
mov dword [edi + 8], eax
mov dword [edi + 0x1c], edx
mov eax, dword [esp + 0x10]
mov dword [eax + 0x28], 0
mov dword [eax + 0x2c], 0
mov eax, dword [esp + 0x74]
test byte [eax + 0x1a], 0x40
je 0x510e80
test ebp, ebp
mov dword [esp + 0x30], 0x8000001e
je 0x511000
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x38]
lea edx, [esp + 0x34]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x30]
call fcn.0050f9e0
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
cmp dword [edi + 0x78], 0x16
mov dword [edi + 4], eax
movzx eax, byte [esp + 0x34]
je 0x511163
movzx edx, byte [esp + 0x38]
mov dword [edi + 0x10], edx
jbe 0x51116e
mov ebx, dword [esp + 0x10]
mov dword [ebx + 0x1c], eax
xor ebx, ebx
mov edi, dword [esp + 0x10]
jmp 0x510801
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x38]
lea edx, [esp + 0x34]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x30]
call fcn.0050f9e0
mov esi, dword [esp + 0x30]
mov eax, dword [edi + 0x28]
and esi, 0x1f
je 0x51083a
add eax, 1
add ebx, 1
mov dword [edi + 0x28], eax
test ebp, ebp
mov dword [esp + 0x30], 0x8000001d
mov dword [esp + 0x38], ebx
jne 0x5107d0
mov eax, 0x8000001d
mov ecx, ebx
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
mov eax, dword [edi + 0x28]
and esi, 0x1f
jne 0x5107f8
lea eax, [eax + eax*4]
mov dword [esp + 0x10], edi
shl eax, 3
mov dword [esp], eax
call sub.msvcrt.dll_memset
test eax, eax
mov ebx, eax
mov dword [edi + 0x2c], eax
je 0x5111d0
mov edi, esi
jmp 0x51091b
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x38]
lea edx, [esp + 0x34]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x30]
call fcn.0050f9e0
mov esi, dword [esp + 0x30]
mov eax, esi
and eax, 0x1f
je 0x510960
cmp eax, 1
je 0x511070
cmp eax, 2
sete al
movzx eax, al
add eax, eax
mov dword [ebx], eax
mov eax, esi
mov edx, dword [esp + 0x34]
shr eax, 5
and eax, 7
mov dword [ebx + 4], eax
mov eax, esi
mov ecx, edx
shr eax, 0xe
shr ecx, 0xc
and eax, 0xfff
and ecx, 0x3ff
add eax, 1
add ecx, 1
mov dword [ebx + 8], eax
mov eax, edx
shr edx, 0x16
and eax, 0xfff
add edx, 1
mov dword [ebx + 0x14], ecx
add eax, 1
and esi, 0x200
mov esi, 0xffffffff
cmove esi, edx
mov dword [ebx + 0x10], eax
add edi, 1
mov dword [ebx + 0x1c], esi
mov esi, dword [esp + 0x38]
add ebx, 0x28
imul edx, eax
mov eax, dword [esp + 0x3c]
add esi, 1
mov dword [ebx - 8], esi
and eax, 2
imul esi, edx
mov dword [ebx - 0x10], eax
imul ecx, esi
mov dword [ebx - 4], ecx
test ebp, ebp
mov dword [esp + 0x30], 0x8000001d
mov dword [esp + 0x38], edi
jne 0x510860
mov eax, 0x8000001d
mov ecx, edi
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
mov eax, esi
and eax, 0x1f
jne 0x51088b
nop
lea esi, [esi]
cmp dword [esp + 0x18], 1
jne 0x511206
mov byte [esp + 0x18], 0
cmp dword [esp + 0x24], 0xa
jbe 0x5109a0
cmp byte [esp + 0x18], 0
je 0x5109a0
mov eax, dword [esp + 0x74]
test byte [eax + 0x12], 0x20
je 0x5109a0
mov eax, dword [esp + 0x10]
mov ecx, ebp
mov edx, 0xb
call fcn.0050fae0
nop
lea esi, [esi]
mov edi, dword [esp + 0x10]
mov eax, dword [edi + 0x28]
mov ebx, dword [edi + 4]
test eax, eax
je 0x510d37
mov ebp, dword [esp + 0x10]
mov edi, ebx
lea eax, [eax + eax*4]
shr edi, 3
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x18], edi
mov edx, dword [ebp + 0x2c]
mov edi, ebp
lea ecx, [edx + 4]
lea esi, [edx + eax*8 + 4]
jmp 0x5109f4
cmp ebx, 3
je 0x510d05
add ecx, 0x28
cmp ecx, esi
je 0x510d33
mov ebp, dword [ecx + 4]
mov eax, dword [esp + 0x10]
xor edx, edx
div ebp
cmp ebx, 1
mov dword [ecx + 8], eax
jne 0x5109e0
mov eax, dword [edi + 0x78]
cmp eax, 0x17
je 0x510d0f
cmp eax, 0x10
jne 0x510d61
cmp dword [edi + 0x74], 9
jne 0x5109e9
cmp dword [ecx], 3
jne 0x5109e9
mov eax, dword [ecx + 0x18]
cmp eax, 0xffffffff
je 0x510a33
test al, 1
jne 0x5109e9
cmp ebp, 7
jbe 0x5109e9
mov edx, ebp
shr edx, 1
cmp ebp, 0x10
mov ebp, 6
cmovne ebp, edx
shr dword [ecx + 0x20], 1
cmp eax, 0xffffffff
mov dword [ecx + 4], ebp
je 0x510a5e
mov edx, eax
shr edx, 0x1f
add eax, edx
sar eax, 1
mov dword [ecx + 0x18], eax
mov eax, dword [esp + 0x10]
xor edx, edx
div dword [esp + 0x20]
mov dword [esp + 0x1c], eax
mov eax, edx
xor edx, edx
div ebp
mov edx, dword [esp + 0x1c]
lea eax, [eax + edx*2]
mov dword [ecx + 8], eax
jmp 0x5109e9
mov esi, eax
mov edi, dword [esp + 0x10]
shr esi, 0x14
mov ecx, esi
movzx esi, cl
add esi, 0xf
mov dword [edi + 0x78], esi
mov esi, dword [esp + 0x78]
test esi, esi
je 0x510ac2
lea esi, [esi]
cmp dword [esp + 0x18], 1
jne 0x510aab
test bl, bl
jne 0x510ac2
cmp dword [esp + 0x78], 2
jne 0x510644
sub edx, 6
cmp edx, 1
ja 0x510644
mov edx, eax
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x10]
shr edx, 0xc
and edx, 0xf0
add ecx, edx
mov dword [ebx + 0x74], ecx
jmp 0x51064f
mov eax, dword [esp + 0x10]
mov byte [esp + 0x18], 1
mov dword [eax + 0x28], 0
mov dword [eax + 0x2c], 0
mov eax, dword [esp + 0x78]
test eax, eax
sete byte [esp + 0x28]
cmp dword [esp + 0x24], 3
jbe 0x5109a0
mov edi, dword [esp + 0x10]
xor ebx, ebx
mov eax, dword [edi + 0x28]
mov dword [esp + 0x2c], eax
jmp 0x510b8a
lea eax, [esp + 0x3c]
lea edx, [esp + 0x34]
lea ecx, [esp + 0x38]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x30]
call fcn.0050f9e0
mov eax, dword [esp + 0x30]
mov edx, dword [edi + 0x28]
test al, 0x1f
je 0x510bc2
mov ecx, eax
shr ecx, 5
and ecx, 7
cmp ecx, 3
jne 0x510b5f
mov esi, dword [esp + 0x14]
mov esi, dword [esi + 0x10]
test esi, esi
jne 0x510bc2
add edx, 1
test ebx, ebx
mov dword [edi + 0x28], edx
jne 0x510b87
shr eax, 0x1a
xor edx, edx
lea ecx, [eax + 1]
mov eax, dword [esp + 0x20]
div ecx
xor edx, edx
mov ecx, eax
mov eax, dword [esp + 0x1c]
div ecx
mov dword [edi + 0x18], edx
mov dword [edi + 0x1c], eax
add ebx, 1
test ebp, ebp
mov dword [esp + 0x30], 4
mov dword [esp + 0x38], ebx
jne 0x510b20
mov eax, 4
mov ecx, ebx
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], ecx
mov edx, dword [edi + 0x28]
test al, 0x1f
jne 0x510b47
lea eax, [edx + edx*4]
mov dword [esp + 0x10], edi
shl eax, 3
mov dword [esp + 4], eax
mov eax, dword [edi + 0x2c]
mov dword [esp], eax
call sub.msvcrt.dll_srand
test eax, eax
je 0x511024
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x10]
lea edx, [edi + edi*4]
mov dword [ebx + 0x2c], eax
xor edi, edi
lea ebx, [eax + edx*8]
jmp 0x510ccf
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x38]
lea edx, [esp + 0x34]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x30]
call fcn.0050f9e0
mov esi, dword [esp + 0x30]
mov edx, esi
and edx, 0x1f
je 0x51102f
mov ecx, dword [esp + 0x14]
mov eax, esi
shr eax, 5
and eax, 7
mov ecx, dword [ecx + 0x10]
test ecx, ecx
je 0x510c47
cmp eax, 3
je 0x51102f
cmp edx, 1
je 0x511060
cmp edx, 2
sete dl
movzx edx, dl
add edx, edx
mov dword [ebx], edx
mov dword [ebx + 4], eax
mov eax, esi
shr eax, 0xe
and eax, 0xfff
add eax, 1
mov dword [ebx + 8], eax
mov edx, dword [esp + 0x34]
mov ecx, edx
mov eax, edx
shr edx, 0x16
shr ecx, 0xc
and eax, 0xfff
add edx, 1
and ecx, 0x3ff
add eax, 1
add ecx, 1
and esi, 0x200
mov esi, 0xffffffff
cmove esi, edx
mov dword [ebx + 0x14], ecx
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x1c], esi
mov esi, dword [esp + 0x38]
add ebx, 0x28
imul edx, eax
add edi, 1
add esi, 1
mov dword [ebx - 8], esi
mov eax, dword [esp + 0x3c]
imul esi, edx
and eax, 2
imul ecx, esi
mov dword [ebx - 0x10], eax
mov dword [ebx - 4], ecx
test ebp, ebp
mov dword [esp + 0x30], 4
mov dword [esp + 0x38], edi
jne 0x510c00
mov eax, 4
mov ecx, edi
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
jmp 0x510c1c
cmp dword [edi + 0x78], 0x18
jne 0x5109e9
cmp dword [ecx], 3
jne 0x5109e9
cmp ebp, 6
jne 0x5109e9
mov eax, dword [esp + 0x18]
add ecx, 0x28
mov dword [ecx - 0x20], eax
cmp ecx, esi
jne 0x5109f4
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov esi, dword [edi + 4]
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.004ffab0
test eax, eax
je 0x510f90
mov dword [edi + 8], 0
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp eax, 0x15
jne 0x5109e9
mov eax, dword [edi + 0x74]
sub eax, 1
cmp eax, 1
ja 0x5109e9
cmp dword [ecx], 3
jne 0x5109e9
cmp ebp, 6
jne 0x5109e9
mov eax, dword [esp + 0x10]
xor edx, edx
div dword [esp + 0x20]
mov ebp, eax
mov eax, 0xaaaaaaab
mul edx
shr edx, 2
lea eax, [edx + ebp*2]
mov dword [ecx + 8], eax
jmp 0x5109e9
mov eax, 1
mov ecx, ebp
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
jmp 0x510541
mov eax, ebp
mov ecx, ebp
mov esi, ebx
cpuid
xchg esi, ebx
cmp dword [esp + 0x70], 0x80000003
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x44], esi
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x48], edx
mov dword [eax + 0x30], esi
mov dword [ebx + 4], edx
mov dword [ebx + 8], ecx
jbe 0x5106d9
mov ebx, dword [esp + 0x10]
mov eax, 0x80000002
mov ecx, ebp
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [ebx + 0x3d], eax
mov dword [ebx + 0x41], esi
mov eax, 0x80000003
mov dword [ebx + 0x45], ecx
mov dword [ebx + 0x49], edx
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [ebx + 0x4d], eax
mov dword [ebx + 0x51], esi
mov eax, 0x80000004
mov dword [ebx + 0x55], ecx
mov dword [ebx + 0x59], edx
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], ecx
mov dword [esp + 0x4c], edx
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x40]
mov dword [ebx + 0x5d], eax
mov eax, dword [esp + 0x44]
mov dword [ebx + 0x61], eax
mov eax, dword [esp + 0x48]
mov dword [ebx + 0x65], eax
mov eax, dword [esp + 0x4c]
mov dword [ebx + 0x69], eax
jmp 0x5106d9
cmp dword [esp + 0x70], 0x80000004
jbe 0x510960
test ebp, ebp
mov dword [esp + 0x30], 0x80000005
je 0x5111a4
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x38]
lea edx, [esp + 0x34]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x30]
call fcn.0050f9e0
mov eax, dword [esp + 0x10]
mov ecx, 1
mov dword [esp + 4], 1
mov dword [esp], 1
lea esi, [eax + 0x28]
lea ebx, [eax + 0x2c]
mov eax, dword [esp + 0x38]
mov edx, ebx
mov dword [esp + 8], eax
mov eax, esi
call fcn.005103f0
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], 1
mov ecx, 1
mov dword [esp], 2
mov edx, ebx
mov dword [esp + 8], eax
mov eax, esi
call fcn.005103f0
cmp dword [esp + 0x70], 0x80000005
jbe 0x510960
test ebp, ebp
mov dword [esp + 0x30], 0x80000006
je 0x511180
lea eax, [esp + 0x3c]
lea ecx, [esp + 0x38]
lea edx, [esp + 0x34]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x30]
call fcn.0050f9e0
mov eax, dword [esp + 0x38]
test ah, 0xf0
jne 0x5111e0
mov eax, dword [esp + 0x3c]
test ah, 0xf0
je 0x510960
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
mov ecx, 3
mov dword [esp], 0
mov edx, ebx
mov dword [esp + 4], eax
mov eax, esi
call fcn.005103f0
jmp 0x510960
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.004ff5f0
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
test dh, 0xff
mov ecx, 1
je 0x510598
jmp 0x510592
mov ecx, dword [esp + 0x38]
mov eax, 0x80000008
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x34], esi
mov dword [esp + 0x3c], edx
mov ecx, eax
shr ecx, 0xc
and ecx, 0xf
je 0x51072d
mov eax, 1
shl eax, cl
mov ecx, eax
jmp 0x510733
mov ecx, dword [esp + 0x38]
mov eax, 0x8000001e
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
jmp 0x510797
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x10]
mov dword [esi + 0x28], eax
cmp dword [esp + 0x24], 0x1e
jbe 0x510970
cmp byte [esp + 0x28], 0
je 0x510970
mov eax, dword [esp + 0x10]
mov ecx, ebp
mov edx, 0x1f
call fcn.0050fae0
jmp 0x5109a0
mov dword [ebx], 1
jmp 0x510c5d
mov dword [ebx], 1
jmp 0x5108a1
lea eax, [esp + 0x4c]
lea edx, [esp + 0x44]
mov ecx, esi
mov dword [esp + 4], ebp
mov dword [esp + 0x44], 0
mov dword [esp], eax
lea eax, [esp + 0x40]
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x40], 0x80000002
call fcn.0050f9e0
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x40]
lea edx, [esp + 0x44]
mov ecx, esi
mov dword [esp + 0x40], 0x80000003
mov dword [edi + 0x3d], eax
mov eax, dword [esp + 0x44]
mov dword [edi + 0x41], eax
mov eax, dword [esp + 0x48]
mov dword [edi + 0x45], eax
mov eax, dword [esp + 0x4c]
mov dword [edi + 0x49], eax
lea eax, [esp + 0x4c]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x40]
call fcn.0050f9e0
mov eax, dword [esp + 0x40]
lea edx, [esp + 0x44]
mov ecx, esi
mov dword [esp + 0x40], 0x80000004
mov dword [edi + 0x4d], eax
mov eax, dword [esp + 0x44]
mov dword [edi + 0x51], eax
mov eax, dword [esp + 0x48]
mov dword [edi + 0x55], eax
mov eax, dword [esp + 0x4c]
mov dword [edi + 0x59], eax
lea eax, [esp + 0x4c]
mov dword [esp + 4], ebp
mov dword [esp], eax
lea eax, [esp + 0x40]
call fcn.0050f9e0
jmp 0x510e56
mov eax, dword [edi + 0x74]
cmp eax, 0x57
je 0x511153
cmp eax, 0x85
jne 0x51066b
mov eax, dword [esp + 0x14]
mov dword [eax + 0x10], 1
jmp 0x51066b
mov ebx, dword [esp + 0x10]
mov dword [ebx + 0x10], 0
mov esi, dword [esp + 0x10]
mov dword [esi + 0x14], eax
jmp 0x5107c6
mov ecx, dword [esp + 0x38]
mov eax, 0x80000006
mov edi, ebx
cpuid
xchg edi, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
jmp 0x510f48
mov ecx, dword [esp + 0x38]
mov eax, 0x80000005
mov esi, ebx
cpuid
xchg esi, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], edx
jmp 0x510eba
mov eax, dword [esp + 0x10]
mov dword [eax + 0x28], 0
jmp 0x510960
mov dword [esp + 8], eax
mov dword [esp + 4], 1
mov ecx, 2
mov dword [esp], 0
mov edx, ebx
mov eax, esi
call fcn.005103f0
jmp 0x510f55
mov byte [esp + 0x28], 0
mov byte [esp + 0x18], 0
jmp 0x510b02