Function at 0x403e5d
Capabilities:
Encode data using xor
Get session user name

Disassembly:
push 0xffffffffffffffff
push 0x4ee14b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x9c
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov dword [esp + 0x14], esi
call fcn.00403720
xor ebp, ebp
lea ecx, [esi + 0x2c]
mov dword [esi + 4], ebp
mov dword [esi + 0x14], ebp
call fcn.00403720
lea edi, [esi + 0x40]
lea ecx, [edi + 0x20]
cmp ecx, edi
jbe 0x403e8f
sub ecx, edi
dec ecx
shr ecx, 2
inc ecx
xor eax, eax
rep stosd dword es:[edi], eax
lea edi, [esi + 0x70]
mov dword [esp + 0xb4], ebp
lea ecx, [edi + 4]
cmp ecx, edi
jbe 0x403eab
sub ecx, edi
dec ecx
shr ecx, 2
inc ecx
xor eax, eax
rep stosd dword es:[edi], eax
lea edi, [esi + 0x74]
mov ecx, edi
call fcn.00403720
add edi, 4
lea ecx, [edi + 4]
cmp ecx, edi
jbe 0x403eca
sub ecx, edi
dec ecx
shr ecx, 2
inc ecx
xor eax, eax
rep stosd dword es:[edi], eax
push 0x4040d0
push 0x4040b0
push 2
lea eax, [esi + 0xa4]
push 0x10
push eax
call fcn.004bb975
mov dword [esi + 0x22c], ebp
mov dword [esi + 0x230], ebp
mov dword [esi + 0x234], ebp
mov dword [esi + 0x238], ebp
mov dword [esi + 0x23c], ebp
mov dword [esi + 0x240], ebp
mov dword [esi + 0x244], ebp
mov dword [esi + 0x248], ebp
mov dword [esi + 0x24c], ebp
mov dword [esi + 0x250], ebp
mov dword [esi + 0x254], ebp
mov dword [esi + 0x258], ebp
mov dword [esi + 0x25c], ebp
call dword [0x526ca8]
mov dword [esi + 0x264], eax
mov ecx, 0x25
xor eax, eax
lea edi, [esp + 0x18]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x18]
mov dword [esi + 0x1c8], 0x36ee80
push ecx
mov dword [esi + 0x1c4], ebp
mov dword [esp + 0x1c], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x403f87
cmp dword [esp + 0x28], 2
jne 0x403f80
cmp dword [esp + 0x1c], 4
jbe 0x403f87
mov ecx, 1
jmp 0x403f89
xor ecx, ecx
mov al, byte [esi + 0x1ce]
lea ebx, [esi + 0x21c]
mov dl, al
xor dl, cl
mov ecx, 0xf
and dl, 1
xor dl, al
mov al, 0x80
mov byte [esi + 0x1ce], dl
lea edx, [esi + 0x1e0]
mov byte [esi + 0x1cc], al
mov byte [esi + 0x1cd], al
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov edi, edx
cmp ebx, edi
jbe 0x404012
mov ebp, 0xfffffe18
sub ebp, esi
lea ecx, [edi + ebp + 8]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
push 8
shr eax, 0x1f
add edx, eax
mov eax, 5
sub eax, edx
lea ecx, [eax + eax*4]
xor ecx, 0x9cb1d745
mov dword [edi + 8], ecx
mov edx, dword [str.Empty]
push edx
push edi
call fcn.004bba60
add edi, 0xc
add esp, 0xc
cmp edi, ebx
jb 0x403fd0
xor ebp, ebp
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 8
push eax
push ebx
call dword [sym.imp.ADVAPI32.dll_GetUserNameA]
test eax, eax
jne 0x404031
xor ecx, ecx
mov dword [ebx], ecx
mov dword [ebx + 4], ecx
mov cl, byte [esi + 0x1df]
mov dword [esi + 0x1d1], ebp
and cl, 0xfe
lea edx, [esi + 0x1d5]
mov byte [esi + 0x1df], cl
mov eax, dword [0x4ef350]
mov dword [edx], eax
mov cl, byte [0x4ef354]
pop edi
mov byte [edx + 4], cl
mov eax, dword [0x4ef358]
lea edx, [esi + 0x1da]
mov dword [esi + 0x1da], eax
mov al, byte [esi + 0x1d0]
mov cl, byte [0x4ef35c]
or al, 7
mov byte [esi + 0x1d0], al
mov byte [edx + 4], cl
mov ecx, dword [esp + 0xa8]
mov byte [esi + 0x1cf], 0x20
mov eax, esi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xa8
ret