Function at 0x416104
Capabilities:
Get session user name

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x18
push 0
push 0
dec ecx
jne 0x41610c
push ecx
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x4167af
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebx + 0x38]
call sub.Vcl50.bpl__System__LStrClr_qqrr17System_AnsiString
mov byte [ebp - 1], 0
lea eax, [ebx + 4]
call sub.Vcl50.bpl__System__LStrClr_qqrr17System_AnsiString
lea eax, [ebx + 8]
call sub.Vcl50.bpl__System__LStrClr_qqrr17System_AnsiString
lea eax, [ebx + 0xc]
mov edx, 0x4167c8
call sub.Vcl50.bpl__System__LStrAsg_qqrv
lea eax, [ebx + 0x10]
mov edx, 0x4167d4
call sub.Vcl50.bpl__System__LStrAsg_qqrv
lea eax, [ebx + 0x14]
mov edx, 0x4167e4
call sub.Vcl50.bpl__System__LStrAsg_qqrv
lea eax, [ebx + 0x18]
mov edx, 0x4167e4
call sub.Vcl50.bpl__System__LStrAsg_qqrv
call sub.kernel32.dll_GetACP
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x44]
call sub.Vcl50.bpl__Sysutils_IntToStr_qqrj
mov edx, dword [ebp - 0x44]
lea eax, [ebx + 0x1c]
call sub.Vcl50.bpl__System__LStrAsg_qqrv
mov byte [ebx + 0x22], 0
lea eax, [ebx + 0x24]
call sub.Vcl50.bpl__System__LStrClr_qqrr17System_AnsiString
mov dl, 1
mov eax, dword [sym.imp.Vcl50.bpl__Registry_TRegistry_]
call sub.Vcl50.bpl__Registry_TRegistry__bctr_qqrv
mov esi, eax
mov edx, 0x80000002
mov eax, esi
call sub.Vcl50.bpl__Registry_TRegistry_SetRootKey_qqrui
mov edx, 0x4167f0
mov eax, esi
call sub.Vcl50.bpl__Registry_TRegistry_OpenKeyReadOnly_qqrx17System_AnsiString
test al, al
jne 0x4161e9
lea eax, [ebx + 0x38]
mov edx, 0x416810
call sub.Vcl50.bpl__System__LStrAsg_qqrv
mov eax, esi
call sub.Vcl50.bpl__Registry_TRegistry_CloseKey_qqrv
mov eax, esi
call sub.Vcl50.bpl__System_TObject_Free_qqrv
jmp 0x41673b
lea ecx, [ebp - 0x48]
mov edx, 0x416824
mov eax, esi
call sub.Vcl50.bpl__Registry_TRegistry_ReadString_qqrx17System_AnsiString
mov edx, dword [ebp - 0x48]
lea eax, [ebx + 4]
call sub.Vcl50.bpl__System__LStrAsg_qqrv
lea ecx, [ebp - 0x14]
mov edx, 0x416838
mov eax, esi
call sub.Vcl50.bpl__Registry_TRegistry_ReadString_qqrx17System_AnsiString
lea eax, [ebx + 0xc]
mov edx, dword [ebp - 0x14]
call sub.Vcl50.bpl__System__LStrAsg_qqrv
mov eax, esi
call sub.Vcl50.bpl__Registry_TRegistry_CloseKey_qqrv
mov eax, esi
call sub.Vcl50.bpl__System_TObject_Free_qqrv
cmp dword [ebx + 4], 0
je 0x41673b
mov eax, dword [ebx + 4]
call sub.Vcl50.bpl__System__LStrLen_qqrv
mov edx, dword [ebx + 4]
cmp byte [edx + eax - 1], 0x5c
je 0x416254
lea eax, [ebx + 4]
mov edx, 0x41684c
call sub.Vcl50.bpl__System__LStrCat_qqrv
cmp dword [ebp - 0x14], 0
je 0x416269
mov eax, dword [ebp - 0x14]
mov edx, 0x4167c8
call sub.Vcl50.bpl__System__LStrCmp_qqrv
jne 0x416276
lea eax, [ebx + 8]
mov edx, dword [ebx + 4]
call sub.Vcl50.bpl__System__LStrAsg_qqrv
jmp 0x4162c7
mov dword [ebp - 0x18], 0x20
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x40]
push eax
call sub.advapi32.dll_GetUserNameA
push dword [ebx + 4]
push 0x416858
lea eax, [ebp - 0x4c]
lea edx, [ebp - 0x40]
mov ecx, 0x20
call sub.Vcl50.bpl__System__LStrFromArray_qqrr17System_AnsiStringpci
push dword [ebp - 0x4c]
push 0x41684c
lea eax, [ebx + 8]
mov edx, 4
call sub.Vcl50.bpl__System__LStrCatN_qqrv
lea eax, [ebx + 0x10]
lea edx, [ebp - 0x40]
mov ecx, 0x20
call sub.Vcl50.bpl__System__LStrFromArray_qqrr17System_AnsiStringpci
lea eax, [ebx + 0x24]
mov ecx, 0x41686c
mov edx, dword [ebx + 8]
call sub.Vcl50.bpl__System__LStrCat3_qqrv
mov eax, dword [ebx + 0x24]
call sub.Vcl50.bpl__Sysutils_FileExists_qqrx17System_AnsiString
test al, al
jne 0x4162fe
lea eax, [ebx + 8]
mov edx, dword [ebx + 4]
call sub.Vcl50.bpl__System__LStrAsg_qqrv
mov ecx, 0x41686c
lea eax, [ebx + 0x24]
mov edx, dword [ebx + 8]
call sub.Vcl50.bpl__System__LStrCat3_qqrv
mov ecx, dword [ebx + 0x24]
mov dl, 1
mov eax, dword [sym.imp.Vcl50.bpl__Inifiles_TIniFile_]
call sub.Vcl50.bpl__Inifiles_TCustomIniFile__bctr_qqrx17System_AnsiString
mov esi, eax
push 0x416884
lea eax, [ebp - 0x50]
push eax
mov ecx, 0x416890
mov edx, 0x4168a4
mov eax, esi
mov edi, dword [eax]
call dword [edi]
mov edx, dword [ebp - 0x50]
lea eax, [ebx + 0x3c]
call sub.Vcl50.bpl__System__LStrAsg_qqrv
push 0
lea eax, [ebp - 0x54]
push eax
mov ecx, 0x4168c0
mov edx, 0x4168d0
mov eax, esi
mov edi, dword [eax]
call dword [edi]
mov edx, dword [ebp - 0x54]
lea eax, [ebx + 0x44]
call sub.Vcl50.bpl__System__LStrAsg_qqrv
push 0x4167e4
lea eax, [ebp - 0x58]
push eax
mov ecx, 0x4168e8
mov edx, 0x4168fc
mov eax, esi
mov edi, dword [eax]
call dword [edi]
mov edx, dword [ebp - 0x58]
lea eax, [ebx + 0x14]
call sub.Vcl50.bpl__System__LStrAsg_qqrv
push 0x4167e4
lea eax, [ebp - 0x5c]
push eax
mov edx, 0x4168fc
mov ecx, 0x416910
mov eax, esi
mov edi, dword [eax]
call dword [edi]
mov edx, dword [ebp - 0x5c]
lea eax, [ebx + 0x18]
call sub.Vcl50.bpl__System__LStrAsg_qqrv
push 0x4167c8
lea eax, [ebp - 0x1c]
push eax
mov ecx, 0x416924
mov edx, 0x41693c
mov eax, esi
mov edi, dword [eax]
call dword [edi]
lea edx, [ebp - 0x60]
mov eax, dword [ebp - 0x1c]
call sub.Vcl50.bpl__Sysutils_UpperCase_qqrx17System_AnsiString
mov edx, dword [ebp - 0x60]
lea eax, [ebp - 0x1c]
call sub.Vcl50.bpl__System__LStrLAsg_qqrv
mov eax, dword [ebp - 0x1c]
mov edx, 0x416958
call sub.Vcl50.bpl__System__LStrCmp_qqrv
je 0x416407
mov eax, dword [ebp - 0x1c]
mov edx, 0x416964
call sub.Vcl50.bpl__System__LStrCmp_qqrv
je 0x416407
mov eax, dword [ebp - 0x1c]
mov edx, 0x416970
call sub.Vcl50.bpl__System__LStrCmp_qqrv
je 0x416407
mov eax, dword [ebp - 0x1c]
mov edx, 0x41697c
call sub.Vcl50.bpl__System__LStrCmp_qqrv
jne 0x41640d
mov byte [ebx + 0x22], 1
jmp 0x416411
mov byte [ebx + 0x22], 0
push 0x41698c
lea eax, [ebp - 0x64]
push eax
mov edx, 0x41693c
mov ecx, 0x4169a0
mov eax, esi
mov edi, dword [eax]
call dword [edi]
mov eax, dword [ebp - 0x64]
lea edx, [ebp - 8]
call sub.Vcl50.bpl__Sysutils_Trim_qqrx17System_AnsiString
push 0xd3
mov edx, 0x41693c
mov ecx, 0x4169b8
mov eax, esi
mov edi, dword [eax]
call dword [edi + 8]
mov dword [ebp - 0x10], eax
mov ecx, dword [ebx + 0x40]
mov edx, 0x4169cc
mov eax, esi
mov edi, dword [eax]
call dword [edi + 0x40]
mov eax, esi
call sub.Vcl50.bpl__System_TObject_Free_qqrv
mov eax, dword [ebx + 0x14]
mov edx, 0x4167e4
call sub.Vcl50.bpl__System__LStrCmp_qqrv
je 0x416479
mov byte [ebx + 0x20], 2
jmp 0x4164a1
mov eax, dword [ebx + 0x14]
mov edx, 0x4167e4
call sub.Vcl50.bpl__System__LStrCmp_qqrv
jne 0x41649d
mov eax, dword [ebx + 0x1c]
mov edx, 0x4169e0
call sub.Vcl50.bpl__System__LStrCmp_qqrv
jne 0x41649d
mov byte [ebx + 0x20], 4
jmp 0x4164a1
mov byte [ebx + 0x20], 0
mov eax, dword [ebx + 0x14]
mov edx, 0x4169e0
call sub.Vcl50.bpl__System__LStrCmp_qqrv
jne 0x4164c5
mov eax, dword [ebx + 0x18]
mov edx, 0x4167e4
call sub.Vcl50.bpl__System__LStrCmp_qqrv
jne 0x4164c5
mov byte [ebx + 0x21], 2
jmp 0x4164ed
mov eax, dword [ebx + 0x14]
mov edx, 0x4167e4
call sub.Vcl50.bpl__System__LStrCmp_qqrv
jne 0x4164e9
mov eax, dword [ebx + 0x18]
mov edx, 0x4169e0
call sub.Vcl50.bpl__System__LStrCmp_qqrv
jne 0x4164e9
mov byte [ebx + 0x21], 1
jmp 0x4164ed
mov byte [ebx + 0x21], 0
mov eax, dword [ebp - 8]
call sub.Vcl50.bpl__System__LStrLen_qqrv
test eax, eax
jle 0x416522
mov eax, dword [ebp - 8]
call sub.Vcl50.bpl__System__LStrLen_qqrv
mov edx, dword [ebp - 8]
cmp byte [edx + eax - 1], 0x3b
jne 0x416522
mov eax, dword [ebp - 8]
call sub.Vcl50.bpl__System__LStrLen_qqrv
mov edx, eax
lea eax, [ebp - 8]
mov ecx, 1
call sub.Vcl50.bpl__System__LStrDelete_qqrv
xor esi, esi
cmp dword [ebp - 8], 0
je 0x41655b
lea eax, [ebx + 0x28]
push eax
xor eax, eax
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x70], 1
xor eax, eax
mov dword [ebp - 0x6c], eax
xor eax, eax
mov dword [ebp - 0x68], eax
lea eax, [ebp - 0x74]
mov ecx, 0xc
mov edx, 3
call sub.Vcl50.bpl__System_VarArrayCreate_qqrpxixii
jmp 0x416656
lea eax, [ebx + 0x38]
mov edx, 0x4169ec
call sub.Vcl50.bpl__System__LStrAsg_qqrv
jmp 0x41673b
mov edx, dword [ebp - 8]
mov eax, 0x416a00
call sub.Vcl50.bpl__Sysutils_AnsiPos_qqrx17System_AnsiStringt1
mov edi, eax
mov edx, esi
lea eax, [ebx + 0x28]
call sub.Vcl50.bpl__System__VarArrayRedim_qqrr14System_Varianti
test edi, edi
jle 0x416601
push esi
push 0
push 2
lea eax, [ebp - 0x88]
push eax
mov ecx, edi
dec ecx
mov edx, 1
mov eax, dword [ebp - 8]
call sub.Vcl50.bpl__System__LStrCopy_qqrv
mov edx, dword [ebp - 0x88]
lea eax, [ebp - 0x84]
call sub.Vcl50.bpl__System__VarFromLStr_qqrr14System_Variantx17System_AnsiString
lea eax, [ebp - 0x84]
push eax
lea eax, [ebx + 0x28]
push eax
call sub.Vcl50.bpl__System__VarArrayPut_qr14System_Variantrx14System_Variantii
add esp, 0x14
push esi
push 1
push 2
lea eax, [ebp - 0x98]
mov edx, dword [ebp - 0x10]
call sub.Vcl50.bpl__System__VarFromInt_qqrv
lea eax, [ebp - 0x98]
push eax
lea eax, [ebx + 0x28]
push eax
call sub.Vcl50.bpl__System__VarArrayPut_qr14System_Variantrx14System_Variantii
add esp, 0x14
lea eax, [ebp - 8]
mov ecx, edi
mov edx, 1
call sub.Vcl50.bpl__System__LStrDelete_qqrv
jmp 0x416655
push esi
push 0
push 2
lea eax, [ebp - 0xa8]
mov edx, dword [ebp - 8]
call sub.Vcl50.bpl__System__VarFromLStr_qqrr14System_Variantx17System_AnsiString
lea eax, [ebp - 0xa8]
push eax
lea eax, [ebx + 0x28]
push eax
call sub.Vcl50.bpl__System__VarArrayPut_qr14System_Variantrx14System_Variantii
add esp, 0x14
push esi
push 1
push 2
lea eax, [ebp - 0xb8]
mov edx, dword [ebp - 0x10]
call sub.Vcl50.bpl__System__VarFromInt_qqrv
lea eax, [ebp - 0xb8]
push eax
lea eax, [ebx + 0x28]
push eax
call sub.Vcl50.bpl__System__VarArrayPut_qr14System_Variantrx14System_Variantii
add esp, 0x14
lea eax, [ebp - 8]
call sub.Vcl50.bpl__System__LStrClr_qqrr17System_AnsiString
inc esi
cmp dword [ebp - 8], 0
jne 0x41656d
mov eax, dword [ebx + 0x40]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jne 0x416692
lea eax, [ebp - 0xbc]
mov ecx, 0x416a0c
mov edx, dword [ebx + 4]
call sub.Vcl50.bpl__System__LStrCat3_qqrv
mov edx, dword [ebp - 0xbc]
mov eax, dword [ebx + 0x40]
mov ecx, dword [eax]
call dword [ecx + 0x34]
jmp 0x416737
mov eax, dword [ebx + 0x40]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x416737
inc eax
mov dword [ebp - 0x20], eax
xor esi, esi
lea ecx, [ebp - 8]
mov edx, esi
mov eax, dword [ebx + 0x40]
call sub.Vcl50.bpl__Classes_TStrings_GetName_qqri
lea ecx, [ebp - 0xc]
mov edx, dword [ebp - 8]
mov eax, dword [ebx + 0x40]
call sub.Vcl50.bpl__Classes_TStrings_GetValue_qqrx17System_AnsiString
lea eax, [ebp - 0xc0]
push eax
mov eax, dword [ebp - 0xc]
call sub.Vcl50.bpl__System__LStrLen_qqrv
mov edx, eax
mov ecx, 1
mov eax, dword [ebp - 0xc]
call sub.Vcl50.bpl__System__LStrCopy_qqrv
mov eax, dword [ebp - 0xc0]
mov edx, 0x41684c
call sub.Vcl50.bpl__System__LStrCmp_qqrv
je 0x416701
lea eax, [ebp - 0xc]
mov edx, 0x41684c
call sub.Vcl50.bpl__System__LStrCat_qqrv
lea ecx, [ebp - 0xc4]
mov edx, dword [ebx + 4]
mov eax, dword [ebp - 0xc]
call fcn.00415fa4
mov edx, dword [ebp - 0xc4]
lea eax, [ebp - 0xc]
call sub.Vcl50.bpl__System__LStrLAsg_qqrv
mov ecx, dword [ebp - 0xc]
mov edx, esi
mov eax, dword [ebx + 0x40]
mov edi, dword [eax]
call dword [edi + 0x20]
inc esi
dec dword [ebp - 0x20]
jne 0x4166a9
mov byte [ebp - 1], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4167b6
lea eax, [ebp - 0xc4]
mov edx, 3
call sub.Vcl50.bpl__System__LStrArrayClr_qqrv
lea eax, [ebp - 0xb8]
mov edx, dword [sym.imp.Vcl50.bpl___xp_14System_Variant]
mov ecx, 3
call sub.Vcl50.bpl__System__FinalizeArray_qqrv
lea eax, [ebp - 0x88]
call sub.Vcl50.bpl__System__LStrClr_qqrr17System_AnsiString
lea eax, [ebp - 0x84]
call sub.Vcl50.bpl__System__VarClr_qqrv
lea eax, [ebp - 0x64]
mov edx, 9
call sub.Vcl50.bpl__System__LStrArrayClr_qqrv
lea eax, [ebp - 0x1c]
call sub.Vcl50.bpl__System__LStrClr_qqrr17System_AnsiString
lea eax, [ebp - 0x14]
call sub.Vcl50.bpl__System__LStrClr_qqrr17System_AnsiString
lea eax, [ebp - 0xc]
mov edx, 2
call sub.Vcl50.bpl__System__LStrArrayClr_qqrv
ret