Function at 0x7a0490
Capabilities:
Encode data using xor
Generate random numbers via winapi
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x160
mov edi, dword [ebp + 8]
mov eax, dword [0xa47d50]
xor eax, ebp
mov dword [esp + 0x158], eax
xorps xmm0, xmm0
movaps xmmword [esp + 0x70], xmm0
movaps xmmword [esp + 0x60], xmm0
movaps xmmword [esp + 0x50], xmm0
movaps xmmword [esp + 0x40], xmm0
movaps xmmword [esp + 0x30], xmm0
movaps xmmword [esp + 0x20], xmm0
movaps xmmword [esp + 0x10], xmm0
test edi, edi
je 0x7a087e
test byte [0xa57014], 1
jne 0x7a087e
lea eax, [esp + 0x10]
push eax
call fcn.007b58b0
add esp, 4
mov dword [esp + 0xc0], 0
sub esp, 0x14
movaps xmm0, xmmword [0x9a91c0]
movups xmmword [esp + 4], xmm0
lea ebx, [esp + 0xd4]
mov dword [esp], ebx
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
je 0x7a0589
lea eax, [esp + 0x80]
push eax
push 0x20
push dword [esp + 0xc8]
call dword [sym.imp.ADVAPI32.dll_CryptGenRandom]
test eax, eax
jne 0x7a06f6
push 2
call fcn.008d0f88
add esp, 4
mov edx, eax
movzx eax, byte [0xa26328]
cmp al, 0xbd
je 0x7a06e4
mov cl, 0x4b
nop word cs:[eax + eax]
mov al, 0x73
lock cmpxchg byte [0xa26328], cl
je 0x7a0669
cmp al, 0xbd
jne 0x7a0570
jmp 0x7a06e4
push 2
call fcn.008d0f88
add esp, 4
mov edx, eax
movzx eax, byte [0xa2630d]
cmp al, 0x71
je 0x7a0652
mov cl, 0xb2
nop word cs:[eax + eax]
mov al, 0xc1
lock cmpxchg byte [0xa2630d], cl
je 0x7a05c5
cmp al, 0x71
jne 0x7a05b0
jmp 0x7a0652
mov dword [esp + 0xc], edx
xor ecx, ecx
mov eax, 0x7b7cbf60
mov dword [esp + 8], 0x7b7cbf5f
mov esi, 0x8d3dcb09
nop dword [eax]
mov edi, eax
mul esi
mov ebx, edx
mov eax, dword [esp + 8]
mul esi
shr edx, 4
imul eax, edx, 0xffffffe3
movzx edx, byte [ecx + 0xa262f0]
xor dl, byte [eax + ecx + 0x7c17514f]
xor dl, 0x9c
mov byte [ecx + 0xa262f0], dl
cmp ecx, 0x1c
je 0x7a063c
shr ebx, 4
imul eax, ebx, 0xffffffe3
lea eax, [eax + 0x7c175150]
movzx edx, byte [ecx + 0xa262f1]
xor dl, byte [eax + ecx]
xor dl, 0x9c
mov byte [ecx + 0xa262f1], dl
add ecx, 2
mov eax, edi
add eax, 2
add dword [esp + 8], 2
jmp 0x7a05e0
mov al, 0x71
xchg byte [0xa2630d], al
mov edi, dword [ebp + 8]
lea ebx, [esp + 0xc0]
mov edx, dword [esp + 0xc]
push edx
push 1
push 0x1c
push 0xa262f0
call fcn.008d1364
add esp, 0x10
jmp 0x7a0705
mov dword [esp + 8], edx
xor ecx, ecx
mov esi, 0x8933fb53
mov edi, 0x8933fb52
nop dword [eax]
mov eax, esi
mov edx, 0x51eb851f
mul edx
mov ebx, edx
mov eax, edi
mov edx, 0x51eb851f
mul edx
shr edx, 3
imul eax, edx, 0xffffffe7
movzx eax, byte [eax + ecx - 0x7631729e]
xor al, 0xa4
add byte [ecx + 0xa26310], al
shr ebx, 3
imul eax, ebx, 0xffffffe7
movzx eax, byte [eax + ecx - 0x7631729d]
xor al, 0xa4
add byte [ecx + 0xa26311], al
add ecx, 2
add esi, 2
add edi, 2
cmp ecx, 0x18
jne 0x7a0680
mov al, 0xbd
xchg byte [0xa26328], al
mov edi, dword [ebp + 8]
lea ebx, [esp + 0xc0]
mov edx, dword [esp + 8]
push edx
push 1
push 0x17
push 0xa26310
call fcn.008d1364
add esp, 0x10
push 0
push dword [esp + 0xc4]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
lea esi, [esp + 0x80]
push 0x20
push esi
lea eax, [esp + 0x18]
push eax
call fcn.007b5a10
add esp, 0xc
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0x13c], 0
mov dword [esp + 0x138], 0
push ebx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x7a07a7
call sub.KERNEL32.dll_GetTickCount
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0xc4]
mov dword [esp + 0x84], edx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x88], eax
lea eax, [esp + 0x138]
push eax
call fcn.008d3568
add esp, 4
mov eax, dword [esp + 0x138]
mov ecx, dword [esp + 0x13c]
mov dword [esp + 0x90], ecx
mov dword [esp + 0x8c], eax
push 0x20
push esi
lea esi, [esp + 0x18]
push esi
call fcn.007b5a10
add esp, 0xc
lea eax, [esp + 0xa0]
push esi
push eax
mov esi, eax
call fcn.007b5db0
add esp, 8
xorps xmm0, xmm0
movaps xmmword [esp + 0x120], xmm0
movaps xmmword [esp + 0x110], xmm0
movaps xmmword [esp + 0x100], xmm0
movaps xmmword [esp + 0xf0], xmm0
movaps xmmword [esp + 0xe0], xmm0
movaps xmmword [esp + 0xd0], xmm0
movaps xmmword [esp + 0xc0], xmm0
push ebx
call fcn.007b58b0
add esp, 4
push 0x20
push esi
push ebx
call fcn.007b5a10
add esp, 0xc
push 0x10
push edi
push ebx
call fcn.007b5a10
add esp, 0xc
lea eax, [edi + 0x10]
push 0x10
push eax
push ebx
call fcn.007b5a10
add esp, 0xc
lea esi, [esp + 0x138]
push ebx
push esi
call fcn.007b5db0
add esp, 8
lea eax, [edi + 0x28]
push 0
push 0
push 0x10
push esi
push eax
call fcn.00795900
add esp, 0x14
movups xmm0, xmmword [esp + 0x138]
movups xmmword [edi + 0x10], xmm0
movups xmm0, xmmword [esp + 0x148]
movups xmmword [edi], xmm0
mov dword [edi + 0x20], 0
mov dword [edi + 0x24], 1
mov ecx, dword [esp + 0x158]
xor ecx, ebp
call fcn.008ea1d3
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret