Function at 0x406390
Capabilities:
Get session user name

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42a638
mov eax, dword fs:[0]
push eax
sub esp, 0x8b0
mov eax, dword [0x43581c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x8ac], ecx
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
sub ebx, ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x8b0], eax
mov dword [ebp - 0x898], ebx
lea eax, [ebp - 0x898]
push eax
push 0x431748
push 1
push ebx
push 0x431768
mov byte [ebp - 4], 1
call dword [0x42b19c]
or eax, eax
jne 0x406a11
mov eax, dword [ebp - 0x898]
or eax, eax
je 0x406a17
push esi
lea ecx, [ebp - 0x8a0]
call fcn.00406af0
mov byte [ebp - 4], 2
cmp dword [ebp + 0x10], ebx
jne 0x4064a4
xor eax, eax
push 0x400
push eax
mov word [ebp - 0x43c], ax
lea eax, [ebp - 0x43a]
push eax
call fcn.00413f20
mov esi, dword [sym.imp.ADVAPI32.dll_GetUserNameW]
add esp, 0xc
lea eax, [ebp - 0x894]
push eax
lea eax, [ebp - 0x43c]
push eax
mov dword [ebp - 0x894], 0x201
call esi
push ecx
lea ecx, [ebp - 0x8a0]
call fcn.00406bc0
lea ecx, [ebp - 0x43c]
lea edx, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x406480
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x43c]
push eax
lea ecx, [ebp - 0x8a0]
call fcn.00406e90
jmp 0x4064aa
mov esi, dword [sym.imp.ADVAPI32.dll_GetUserNameW]
mov eax, dword [ebp - 0x898]
push dword [ebp - 0x8a0]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
mov dword [ebp - 0x89c], 0
lea edx, [ebp - 0x89c]
push edx
push 0x431738
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x898]
push 0x431758
push dword [ebp - 0x8a0]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x20]
test eax, eax
mov eax, dword [ebp - 0x89c]
jne 0x4069df
or eax, eax
je 0x4069df
lea edx, [ebp - 0x888]
push edx
mov dword [ebp - 0x888], 0
mov ecx, dword [eax]
push 0x431738
push eax
call dword [ecx]
mov ecx, eax
mov eax, dword [ebp - 0x888]
xor edx, edx
test ecx, ecx
cmovs eax, edx
mov dword [ebp - 0x888], eax
mov byte [ebp - 4], 4
or eax, eax
je 0x4069c0
mov eax, dword [section..data]
mov ecx, section..data
mov dword [ebp - 0x890], 0x200
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x884], edi
sub eax, eax
push 0x400
mov byte [ebp - 4], 5
push eax
mov word [ebp - 0x840], ax
lea eax, [ebp - 0x83e]
push eax
call fcn.00413f20
xorps xmm0, xmm0
xor eax, eax
add esp, 0xc
mov word [ebp - 0x38], ax
movq qword [ebp - 0x36], xmm0
movq qword [ebp - 0x2e], xmm0
movq qword [ebp - 0x26], xmm0
movq qword [ebp - 0x1e], xmm0
cmp dword [ebp + 0x10], eax
jne 0x406617
lea eax, [ebp - 0x8bc]
push eax
lea eax, [ebp - 0x840]
push eax
mov dword [ebp - 0x8bc], 0x201
call esi
test eax, eax
je 0x4069b5
lea eax, [ebp - 0x8b4]
push eax
lea eax, [ebp - 0x38]
push eax
mov dword [ebp - 0x8b4], 0x11
call dword [0x42b004]
or eax, eax
je 0x4069b5
lea eax, [ebp - 0x840]
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x884]
push 0x431c3c
push eax
call fcn.004071c0
mov edi, dword [ebp - 0x884]
add esp, 0x10
mov dword [ebp - 0x890], 0x2200
mov eax, dword [ebp - 0x888]
push dword [ebp - 0x890]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x70]
test eax, eax
jne 0x4069b5
mov eax, dword [ebp - 0x888]
push 0
mov ecx, dword [eax]
push edi
push eax
call dword [ecx + 0x78]
or eax, eax
jne 0x4069b5
mov edx, dword [ebp - 0x8b0]
test edx, edx
je 0x40667d
push edx
pop ecx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x406657
sub ecx, esi
sar ecx, 1
je 0x40667d
mov eax, dword [ebp - 0x888]
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x48]
test eax, eax
jne 0x4069b5
mov dword [ebp - 0x88c], 0
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x888]
lea edx, [ebp - 0x88c]
push edx
lea edx, [ebp - 0x8b8]
mov dword [ebp - 0x8b8], 0
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0xc]
or eax, eax
mov eax, dword [ebp - 0x88c]
jne 0x4069a7
test eax, eax
je 0x4069a7
mov eax, dword [ebp - 0x888]
push 0xffffffffffffffff
mov ecx, dword [eax]
push eax
call dword [ecx + 0xa8]
test eax, eax
je 0x4066e9
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x88c]
jmp 0x4069ab
push 0x2e
lea eax, [ebp - 0x87e]
push 0
push eax
call fcn.00413f20
mov eax, 0x30
mov word [ebp - 0x880], ax
xor eax, eax
add esp, 0xc
mov word [ebp - 0x850], ax
mov dword [ebp - 0x846], eax
mov word [ebp - 0x842], ax
lea eax, [ebp - 0x850]
xorps xmm0, xmm0
push eax
movq qword [ebp - 0x84e], xmm0
call dword [0x42b008]
movzx eax, word [ebp - 0x84a]
mov word [ebp - 0x878], ax
movzx eax, word [ebp - 0x84e]
mov word [ebp - 0x87a], ax
movzx eax, word [ebp - 0x850]
mov word [ebp - 0x87c], ax
lea eax, [ebp - 0x8a8]
push eax
lea eax, [ebp - 0x850]
push eax
mov dword [ebp - 0x8a8], 0
mov dword [ebp - 0x8a4], 0
call dword [0x42b00c]
cmp dword [ebp + 0x10], 0
mov edx, 0x47868c00
mov eax, 0x23c34600
cmovne eax, edx
cdq
add dword [ebp - 0x8a8], eax
mov eax, dword [section..data]
mov ecx, section..data
adc dword [ebp - 0x8a4], edx
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x890], esi
nop
push 0x6c
nop
pop ecx
mov byte [ebp - 4], 7
call fcn.00407260
or eax, eax
je 0x40681a
push 0x6c
push eax
lea ecx, [ebp - 0x890]
call fcn.00406d30
mov esi, dword [ebp - 0x890]
or eax, eax
je 0x40681a
cmp dword [esi - 0xc], 0
je 0x40681a
push esi
call fcn.0041192d
cdq
add esp, 4
or edx, edx
jl 0x40681a
jg 0x406800
or eax, eax
je 0x40681a
push 0
push 0x23c34600
push edx
push eax
call fcn.00416e10
add dword [ebp - 0x8a8], eax
adc dword [ebp - 0x8a4], edx
lea eax, [ebp - 0x850]
push eax
lea eax, [ebp - 0x8a8]
push eax
call dword [0x42b010]
movzx eax, word [ebp - 0x848]
mov word [ebp - 0x870], ax
movzx eax, word [ebp - 0x846]
mov word [ebp - 0x86e], ax
push 1
pop eax
push ecx
pop ecx
mov word [ebp - 0x85c], ax
mov eax, dword [ebp - 0x88c]
lea edx, [ebp - 0x880]
mov dword [ebp - 0x86c], 0x5a0
mov dword [ebp - 0x868], 0xf
mov dword [ebp - 0x860], 1
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0xc]
test eax, eax
je 0x4068a5
lea ecx, [ebp - 0x890]
call fcn.00406ba0
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x88c]
jmp 0x4069ab
mov eax, dword [ebp - 0x888]
push dword [ebp - 0x8ac]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x80]
or eax, eax
je 0x4068d8
lea ecx, [ebp - 0x890]
call fcn.00406ba0
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x88c]
jmp 0x4069ab
mov ecx, dword [ebp - 0x89c]
sub eax, eax
mov dword [ebp - 0x894], eax
test ecx, ecx
je 0x406910
mov eax, dword [ecx]
lea edx, [ebp - 0x894]
push edx
push 0x431c48
push ecx
call dword [eax]
mov ecx, eax
mov eax, dword [ebp - 0x894]
xor edx, edx
or ecx, ecx
cmovs eax, edx
mov dword [ebp - 0x894], eax
mov byte [ebp - 4], 8
test eax, eax
jne 0x40692f
lea ecx, [ebp - 0x890]
call fcn.00406ba0
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x88c]
jmp 0x4069ab
mov ecx, dword [eax]
push 1
push 0
push eax
call dword [ecx + 0x18]
xor ebx, ebx
test eax, eax
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x894]
sete bl
test eax, eax
je 0x406954
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [esi - 0x10]
or esi, 0xffffffff
mov byte [ebp - 4], 6
lea ecx, [edx + 0xc]
mov eax, esi
lock xadd dword [ecx], eax
dec eax
or eax, eax
jg 0x406974
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x88c]
test eax, eax
je 0x406988
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
add edi, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edi + 0xc]
push esi
pop ecx
lock xadd dword [eax], ecx
dec ecx
or ecx, ecx
jg 0x4069c3
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4069c3
mov byte [ebp - 4], 5
test eax, eax
je 0x4069b5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x884]
call fcn.00406ba0
or esi, 0xffffffff
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x888]
or eax, eax
je 0x4069d7
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x89c]
jmp 0x4069e2
or esi, 0xffffffff
mov byte [ebp - 4], 2
or eax, eax
je 0x4069f0
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x8a0]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], esi
dec esi
or esi, esi
jg 0x406a11
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x898]
mov byte [ebp - 4], 0
or eax, eax
je 0x406a25
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0041191e
mov esp, ebp
pop ebp
ret