Function at 0x5f43a0
Capabilities:
Accept command line arguments
Encode data using xor
Query environment variable

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff70
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 4], edx
mov dword [ebp - 8], eax
xor eax, eax
push ebp
push 0x5f4768
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.00422678
fsub dword [0x5f4778]
fmul dword [0x5f477c]
call fcn.00405844
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
xor edx, edx
mov esi, eax
mov eax, dword [ebp - 0x14]
xor edx, edx
mov ecx, eax
add esi, ecx
mov ebx, ecx
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
xor edx, edx
not eax
xor ebx, eax
lea eax, [ebp - 0x20]
push eax
call sub.kernel32.dll_QueryPerformanceCounter_1
lea eax, [ebp - 0x28]
push eax
call sub.kernel32.dll_QueryPerformanceFrequency
call sub.winmm.dll_timeGetTime
mov edi, eax
call sub.kernel32.dll_GetCurrentProcessId
add edi, eax
add esi, edi
call sub.kernel32.dll_GetTickCount_1
mov edi, eax
call sub.kernel32.dll_GetCurrentThreadId_1
sub edi, eax
sub ebx, edi
call fcn.00405440
add esi, eax
mov eax, dword [ebp - 0x1c]
xor edx, edx
xor esi, eax
mov eax, dword [ebp - 0x20]
xor ebx, eax
mov ecx, esi
imul ecx, eax
mov edx, dword [ebp - 0x28]
mov edi, edx
sub edi, esi
imul edi, ebx
add ecx, edi
mov esi, ecx
mov ecx, ebx
imul ecx, eax
sub edx, ebx
imul edx, esi
add ecx, edx
mov ebx, ecx
call sub.kernel32.dll_GetEnvironmentStringsW
mov edi, eax
test edi, edi
je 0x5f44c8
mov eax, edi
jmp 0x5f44b8
movzx edx, word [eax]
mov ecx, edx
imul ecx, ebx
add esi, ecx
imul ecx, esi, 0x19660d
add ecx, 0x3c6ef35f
mov esi, ecx
imul edx, esi
xor ebx, edx
mov edx, ebx
shl edx, 0xd
xor ebx, edx
mov edx, ebx
shr edx, 0x11
xor ebx, edx
mov edx, ebx
shl edx, 5
xor ebx, edx
add eax, 2
test eax, eax
je 0x5f44b5
cmp word [eax], 0
jne 0x5f4476
add eax, 2
test eax, eax
je 0x5f44c2
cmp word [eax], 0
jne 0x5f44ab
push edi
call sub.kernel32.dll_FreeEnvironmentStringsW
call sub.kernel32.dll_GetCommandLineW_1
mov edi, eax
test edi, edi
je 0x5f4516
mov eax, edi
jmp 0x5f450c
movzx edx, word [eax]
mov ecx, edx
imul ecx, ebx
add esi, ecx
imul ecx, esi, 0x19660d
add ecx, 0x3c6ef35f
mov esi, ecx
imul edx, esi
xor ebx, edx
mov edx, ebx
shl edx, 0xd
xor ebx, edx
mov edx, ebx
shr edx, 0x11
xor ebx, edx
mov edx, ebx
shl edx, 5
xor ebx, edx
add eax, 2
test eax, eax
je 0x5f4516
cmp word [eax], 0
jne 0x5f44d7
lea eax, [ebp - 4]
xor ecx, ecx
mov edx, 0x1000
call fcn.00409274
lea eax, [ebp - 4]
call fcn.00408c74
mov dword [ebp - 0x2c], eax
mov edi, dword [ebp - 4]
test edi, edi
je 0x5f453c
sub edi, 4
mov edi, dword [edi]
mov edx, edi
mov eax, dword [ebp - 0x2c]
call fcn.005f42e0
test al, al
je 0x5f45a1
mov eax, dword [ebp - 4]
test eax, eax
je 0x5f4556
sub eax, 4
mov eax, dword [eax]
test eax, eax
jle 0x5f45a1
mov dword [ebp - 0x10], 1
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
movzx edx, byte [edx + ecx - 1]
mov ecx, edx
imul ecx, ebx
add esi, ecx
imul ecx, esi, 0x19660d
add ecx, 0x3c6ef35f
mov esi, ecx
imul edx, esi
xor ebx, edx
mov edx, ebx
shl edx, 0xd
xor ebx, edx
mov edx, ebx
shr edx, 0x11
xor ebx, edx
mov edx, ebx
shl edx, 5
xor ebx, edx
inc dword [ebp - 0x10]
dec eax
jne 0x5f4561
lea eax, [ebp - 4]
call fcn.005f4364
mov eax, dword [ebp - 4]
test eax, eax
je 0x5f45b5
sub eax, 4
mov eax, dword [eax]
test eax, eax
jle 0x5f4600
mov dword [ebp - 0x10], 1
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
movzx edx, byte [edx + ecx - 1]
mov ecx, edx
imul ecx, ebx
add esi, ecx
imul ecx, esi, 0x19660d
add ecx, 0x3c6ef35f
mov esi, ecx
imul edx, esi
xor ebx, edx
mov edx, ebx
shl edx, 0xd
xor ebx, edx
mov edx, ebx
shr edx, 0x11
xor ebx, edx
mov edx, ebx
shl edx, 5
xor ebx, edx
inc dword [ebp - 0x10]
dec eax
jne 0x5f45c0
lea eax, [ebp - 4]
call fcn.004086c4
mov eax, esi
not eax
mov dword [ebp - 0xc], eax
mov edx, ebx
mov dword [ebp - 0x10], 0x19
lea eax, [ebp - 0x90]
imul ecx, dword [ebp - 0xc], 0x19660d
add ecx, 0x3c6ef35f
mov dword [ebp - 0xc], ecx
mov ecx, edx
shl ecx, 0xd
xor edx, ecx
mov ecx, edx
shr ecx, 0x11
xor edx, ecx
mov ecx, edx
shl ecx, 5
xor edx, ecx
mov ecx, edx
not ecx
xor ecx, dword [ebp - 0xc]
mov dword [eax], ecx
add eax, 4
dec dword [ebp - 0x10]
jne 0x5f461e
mov eax, 0x18
mov dword [ebp - 0xc], esi
mov edx, ebx
not edx
xor ecx, ecx
mov dword [ebp - 0x10], ecx
imul ecx, dword [ebp - 0xc], 0x19660d
add ecx, 0x3c6ef35f
mov dword [ebp - 0xc], ecx
mov ecx, edx
shl ecx, 0xd
xor edx, ecx
mov ecx, edx
shr ecx, 0x11
xor edx, ecx
mov ecx, edx
shl ecx, 5
xor edx, ecx
inc eax
cmp eax, 0x19
jb 0x5f46e7
mov ecx, 0x12
lea eax, [ebp - 0x74]
mov ebx, dword [eax - 0x1c]
mov esi, ebx
shr esi, 1
xor esi, dword [eax]
and ebx, 1
imul ebx, ebx, 0x8ebfd028
xor esi, ebx
mov dword [eax - 0x1c], esi
add eax, 4
dec ecx
jne 0x5f4698
mov ecx, 0x12
lea eax, [ebp - 0x48]
lea esi, [ecx + 7]
mov esi, dword [ebp + esi*4 - 0xf4]
mov ebx, dword [eax]
mov edi, ebx
shr edi, 1
xor esi, edi
and ebx, 1
imul ebx, ebx, 0x8ebfd028
xor esi, ebx
mov dword [eax], esi
inc ecx
add eax, 4
cmp ecx, 0x19
jne 0x5f46bd
xor eax, eax
mov ecx, dword [ebp + eax*4 - 0x90]
mov ebx, ecx
shl ecx, 7
and ecx, 0x2b5b2500
xor ebx, ecx
mov ecx, ebx
mov ebx, ecx
shl ebx, 0xf
and ebx, 0xdb8b0000
xor ecx, ebx
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 0x10]
mov edi, dword [ebp - 0xc]
add edi, edx
xor ecx, edi
mov dword [ebx + esi*4 + 0x10], ecx
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0x1000
jne 0x5f4665
mov eax, dword [ebp - 0xc]
and eax, 0xfff
mov ecx, dword [ebp - 8]
mov eax, dword [ecx + eax*4 + 0x10]
and edx, 0xf
xor eax, dword [ebp + edx*4 - 0x90]
and eax, 0xfff
mov edx, dword [ebp - 8]
mov dword [edx + 0x4010], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5f476f
lea eax, [ebp - 4]
call fcn.004086c4
ret