Function at 0x100469f0
Capabilities:
Access peb ldr_data
Check os version
Get process filename
Resolve function by hash
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x24
mov eax, dword fs:[0x30]
push ebx
push ebp
xor ebx, ebx
mov dword [esp + 0x18], 0
mov eax, dword [eax + 0xc]
push esi
push edi
xor edi, edi
mov dword [esp + 0x10], ebx
mov ebp, dword [eax + 0x14]
mov dword [esp + 0x18], edi
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x1c], ebp
test ebp, ebp
je 0x10046c10
nop
mov esi, dword [ebp + 0x28]
xor ecx, ecx
movzx edx, word [ebp + 0x24]
nop dword [eax]
mov al, byte [esi]
ror ecx, 0xd
cmp al, 0x61
movzx eax, al
jb 0x10046a4f
add ecx, 0xffffffe0
add edx, 0xffff
add ecx, eax
inc esi
test dx, dx
jne 0x10046a40
cmp ecx, 0x6a4abc5b
jne 0x10046b26
mov esi, dword [ebp + 0x10]
mov ebp, 4
mov eax, dword [esi + 0x3c]
mov eax, dword [eax + esi + 0x78]
add eax, esi
mov dword [esp + 0x14], eax
mov edi, dword [eax + 0x20]
mov ebx, dword [eax + 0x24]
add edi, esi
add ebx, esi
mov edx, dword [edi]
add edx, esi
xor eax, eax
mov cl, byte [edx]
ror eax, 0xd
lea edx, [edx + 1]
movsx ecx, cl
add eax, ecx
mov cl, byte [edx]
test cl, cl
jne 0x10046a90
cmp eax, 0xec0e4e8e
je 0x10046abd
cmp eax, 0x7c0dfcaa
je 0x10046abd
cmp eax, 0x91afca54
je 0x10046abd
cmp eax, 0x60e0ceef
jne 0x10046b12
movzx ecx, word [ebx]
mov edx, dword [esp + 0x14]
lea ecx, [esi + ecx*4]
add ecx, dword [edx + 0x1c]
cmp eax, 0xec0e4e8e
jne 0x10046adb
mov eax, dword [ecx]
add eax, esi
mov dword [esp + 0x20], eax
jmp 0x10046b0c
cmp eax, 0x7c0dfcaa
jne 0x10046aec
mov eax, dword [ecx]
add eax, esi
mov dword [esp + 0x10], eax
jmp 0x10046b0c
cmp eax, 0x91afca54
jne 0x10046afd
mov eax, dword [ecx]
add eax, esi
mov dword [esp + 0x18], eax
jmp 0x10046b0c
cmp eax, 0x60e0ceef
jne 0x10046b0c
mov eax, dword [ecx]
add eax, esi
mov dword [esp + 0x28], eax
add ebp, 0xffff
add edi, 4
add ebx, 2
test bp, bp
jne 0x10046a88
jmp 0x10046bd8
cmp ecx, 0x3cfa685d
jne 0x10046be4
mov esi, dword [ebp + 0x10]
mov ebx, 2
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax + esi + 0x78]
mov eax, dword [ecx + esi + 0x24]
add ecx, esi
mov dword [esp + 0x30], ecx
mov ebp, dword [ecx + 0x20]
mov edi, dword [ecx + 0x18]
add ebp, esi
add eax, esi
mov dword [esp + 0x14], eax
nop dword [eax]
test edi, edi
je 0x10046bd8
mov edx, dword [ebp]
add edx, esi
xor ecx, ecx
mov al, byte [edx]
nop dword [eax]
ror ecx, 0xd
lea edx, [edx + 1]
movsx eax, al
add ecx, eax
mov al, byte [edx]
test al, al
jne 0x10046b70
cmp ecx, 0x534c0ab8
je 0x10046b91
cmp ecx, 0xff7f061a
jne 0x10046bca
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x30]
movzx eax, word [eax]
lea eax, [esi + eax*4]
add eax, dword [edx + 0x1c]
cmp ecx, 0x534c0ab8
jne 0x10046bb4
mov eax, dword [eax]
add eax, esi
mov dword [esp + 0x24], eax
jmp 0x10046bc4
cmp ecx, 0xff7f061a
jne 0x10046bc4
mov eax, dword [eax]
add eax, esi
mov dword [esp + 0x2c], eax
add ebx, 0xffff
add dword [esp + 0x14], 2
add ebp, 4
dec edi
test bx, bx
jne 0x10046b60
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
cmp dword [esp + 0x20], 0
je 0x10046c01
test ebx, ebx
je 0x10046c01
test edi, edi
je 0x10046c01
cmp dword [esp + 0x28], 0
je 0x10046c01
cmp dword [esp + 0x24], 0
jne 0x10046c10
mov ebp, dword [ebp]
mov dword [esp + 0x1c], ebp
test ebp, ebp
jne 0x10046a30
mov ebp, dword [esp + 0x3c]
push 0x40
push 0x3000
mov ebx, dword [ebp + 0x3c]
add ebx, ebp
mov dword [esp + 0x1c], ebx
push dword [ebx + 0x50]
push 0
call edi
mov edx, dword [ebx + 0x54]
mov edi, eax
mov dword [esp + 0x3c], edi
mov ecx, ebp
test edx, edx
je 0x10046c4e
mov esi, edi
sub esi, ebp
nop
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [esi + ecx - 1], al
sub edx, 1
jne 0x10046c40
movzx eax, word [ebx + 0x14]
movzx ebx, word [ebx + 6]
test ebx, ebx
je 0x10046c97
mov edi, dword [esp + 0x14]
add edi, 0x2c
add edi, eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [edi - 8]
dec ebx
mov edx, dword [edi]
add ecx, eax
mov esi, dword [edi - 4]
add edx, ebp
test esi, esi
je 0x10046c8c
mov al, byte [edx]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
lea edx, [edx + 1]
sub esi, 1
jne 0x10046c78
mov eax, dword [esp + 0x3c]
add edi, 0x28
test ebx, ebx
jne 0x10046c67
mov edi, dword [esp + 0x3c]
mov edx, dword [esp + 0x14]
mov ebp, dword [edx + 0x80]
add ebp, edi
mov dword [esp + 0x1c], ebp
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x10046d31
add eax, edi
push eax
call dword [esp + 0x24]
mov esi, dword [ebp]
mov ebx, eax
add esi, edi
mov edi, dword [ebp + 0x10]
add edi, dword [esp + 0x3c]
cmp dword [edi], 0
je 0x10046d1b
mov ebp, dword [esp + 0x3c]
test esi, esi
je 0x10046cf6
mov ecx, dword [esi]
test ecx, ecx
jns 0x10046cf6
mov eax, dword [ebx + 0x3c]
movzx ecx, cx
mov eax, dword [eax + ebx + 0x78]
sub ecx, dword [eax + ebx + 0x10]
mov eax, dword [eax + ebx + 0x1c]
lea eax, [eax + ecx*4]
mov eax, dword [eax + ebx]
add eax, ebx
jmp 0x10046d03
mov eax, dword [edi]
add eax, 2
add eax, ebp
push eax
push ebx
call dword [esp + 0x18]
mov dword [edi], eax
add edi, 4
test esi, esi
lea eax, [esi + 4]
cmove eax, esi
cmp dword [edi], 0
mov esi, eax
jne 0x10046cd0
mov ebp, dword [esp + 0x1c]
mov eax, dword [ebp + 0x20]
add ebp, 0x14
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x1c], ebp
test eax, eax
jne 0x10046cb2
mov edx, dword [esp + 0x14]
mov esi, edi
sub esi, dword [edx + 0x34]
cmp dword [edx + 0xa4], 0
je 0x10046deb
mov ebp, dword [edx + 0xa0]
add ebp, edi
mov eax, dword [ebp + 4]
lea ecx, [ebp + 4]
mov dword [esp + 0x20], ecx
test eax, eax
je 0x10046deb
nop dword [eax]
mov edx, dword [ebp]
lea ebx, [ebp + 8]
add edx, edi
lea edi, [eax - 8]
shr edi, 1
je 0x10046dcf
nop
movzx ecx, word [ebx]
dec edi
mov ax, cx
shr ax, 0xc
cmp ax, 0xa
jne 0x10046d8c
and ecx, 0xfff
add dword [ecx + edx], esi
jmp 0x10046dc4
cmp ax, 3
jne 0x10046d9d
and ecx, 0xfff
add dword [ecx + edx], esi
jmp 0x10046dc4
cmp ax, 1
jne 0x10046db4
and ecx, 0xfff
mov eax, esi
shr eax, 0x10
add word [ecx + edx], ax
jmp 0x10046dc4
cmp ax, 2
jne 0x10046dc4
and ecx, 0xfff
add word [ecx + edx], si
add ebx, 2
test edi, edi
jne 0x10046d70
mov ecx, dword [esp + 0x20]
add ebp, dword [ecx]
mov eax, dword [ebp + 4]
lea ecx, [ebp + 4]
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x20], ecx
test eax, eax
jne 0x10046d60
mov edx, dword [esp + 0x14]
mov esi, dword [edx + 0x28]
push 0
push 0
push 0xffffffffffffffff
add esi, edi
call dword [esp + 0x30]
mov edi, dword [esp + 0x38]
push edi
push 1
push dword [esp + 0x44]
call esi
test edi, edi
je 0x10046e2a
cmp byte [edi], 0
je 0x10046e2a
mov eax, dword [esp + 0x2c]
push 0
test eax, eax
je 0x10046e26
call eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 8
call dword [esp + 0x2c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret 8