Function at 0x100519b4
Capabilities:
Encode data using xor
Encrypt data using aes
Hash data using sha256
Reference aes constants

Disassembly:
push 0xa60
mov eax, 0x100a4fb5
call fcn.1009e180
mov edi, edx
mov dword [ebp - 0xa68], ecx
mov eax, dword [0x1013b038]
mov ecx, 0xca
mov ebx, dword [ebp + 8]
test eax, eax
cmove eax, ecx
xor esi, esi
mov dword [0x1013b038], eax
call dword [sym.imp.API_ms_WiN_CRT_utILItY_l1_1_0.dll_rand]
xor edx, edx
push 0x24
pop ecx
div ecx
mov al, byte [edx + 0x100f8ba0]
mov byte [ebp + esi - 0x38], al
inc esi
cmp esi, 0x20
jl 0x100519e4
lea esi, [ebp - 0x38]
mov byte [ebp - 0x18], 0
mov dword [0x1013aedc], edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x10051a11
sub esi, ecx
xor eax, eax
mov dword [0x1013aee0], esi
lea ecx, [ebp - 0x38]
add esi, 0xfffffff9
cmovs esi, eax
mov byte [ebp + esi - 0x38], al
call fcn.10051986
push eax
mov edx, esi
lea ecx, [ebp - 0x38]
call fcn.1005190c
mov esi, dword [ebp - 0xa68]
pop ecx
push dword [0x1013b038]
push 0
push esi
call sub.VCrUnTImE140.DlL_memset
add esp, 0xc
lea ecx, [ebp - 0x38]
call fcn.10051986
mov edi, eax
mov dword [esi], 0x53
mov eax, 0xdfdc1c3d
mov dword [esi + 8], 0x726576
test edi, edi
mov dword [esi + 0x14], 0x1100001
push 0
cmove edi, eax
and dword [esi + 0xc], 0
mov dword [esi + 4], edi
lea eax, [edi + edi]
mov dword [esi + 0x10], eax
mov esi, dword [sym.imp.Api_MS_win_crT_time_L1_1_0.DLL__time64]
call esi
pop ecx
mov ecx, dword [ebp - 0xa68]
add eax, 0x1600b
push 0
mov dword [ecx + 0x18], eax
mov al, byte [ecx + 0x1b]
add al, byte [ecx + 0x18]
not al
mov byte [ecx + 0x1b], al
call esi
pop ecx
mov ecx, dword [ebp - 0xa68]
not eax
mov dword [ecx + 0x1c], eax
lea eax, [edi + edi]
shr eax, 3
mov dword [ecx + 0x20], eax
xor eax, eax
mov dword [ecx + 0x24], eax
test ebx, ebx
je 0x10051ad4
mov dword [ebx], edi
mov dword [ebp - 0x4d4], 0x100f9a7c
mov byte [ebp - 0x4d0], al
push 0x20
pop edx
mov dword [ebp - 4], eax
lea edi, [ebp - 0x100]
push 8
pop ecx
mov eax, 0x100f9a54
mov dword [ebp - 0x10c], edx
push 8
mov dword [ebp - 0x108], edx
mov esi, eax
rep movsd dword es:[edi], dword [esi]
pop ecx
mov esi, eax
lea edi, [ebp - 0xe0]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x10c]
mov eax, dword [ebp - 0x108]
push 0xc
pop edi
push 0xa
pop ebx
cmp esi, 0x10
je 0x10051b3b
push 0xe
pop ecx
cmp esi, 0x18
jne 0x10051b4d
cmp eax, edx
cmovne ecx, edi
jmp 0x10051b4d
cmp eax, 0x10
jne 0x10051b44
mov ecx, ebx
jmp 0x10051b4d
push 0xe
cmp eax, 0x18
pop ecx
cmove ecx, edi
cdq
and edx, 3
mov dword [ebp - 0x104], ecx
add eax, edx
sar eax, 2
mov dword [ebp - 0xa5c], eax
xor eax, eax
mov dword [ebp - 0xa58], eax
test ecx, ecx
js 0x10051ba9
mov ebx, dword [ebp - 0xa5c]
lea edx, [ebp - 0x4cc]
test ebx, ebx
jle 0x10051b92
xor eax, eax
mov ecx, ebx
mov edi, edx
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x104]
mov eax, dword [ebp - 0xa58]
inc eax
add edx, 0x20
mov dword [ebp - 0xa58], eax
cmp eax, ecx
jle 0x10051b7a
mov esi, dword [ebp - 0x10c]
push 0xa
pop ebx
xor eax, eax
mov dword [ebp - 0xa58], eax
test ecx, ecx
js 0x10051bf0
mov ebx, dword [ebp - 0xa5c]
lea edx, [ebp - 0x2ec]
test ebx, ebx
jle 0x10051bd9
xor eax, eax
mov ecx, ebx
mov edi, edx
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x104]
mov eax, dword [ebp - 0xa58]
inc eax
add edx, 0x20
mov dword [ebp - 0xa58], eax
cmp eax, ecx
jle 0x10051bc1
mov esi, dword [ebp - 0x10c]
push 0xa
pop ebx
lea eax, [ecx + 1]
mov edi, 0x100f8b64
imul eax, dword [ebp - 0xa5c]
mov dword [ebp - 0xa58], eax
mov eax, esi
cdq
and edx, 3
lea esi, [edx + eax]
lea eax, [ebp - 0xc0]
sar esi, 2
mov dword [ebp - 0xa64], eax
mov eax, 0x100ac558
mov dword [ebp - 0xa60], esi
mov dword [ebp - 0xa6c], eax
test esi, esi
jle 0x10051ccb
mov ebx, esi
movzx esi, byte [edi]
lea edi, [edi + 4]
movzx edx, byte [edi - 3]
movzx ecx, byte [edi - 2]
movzx eax, byte [edi - 1]
shl esi, 8
or esi, edx
shl esi, 8
or esi, ecx
shl esi, 8
or esi, eax
mov eax, dword [ebp - 0xa64]
mov dword [eax], esi
add eax, 4
mov dword [ebp - 0xa64], eax
sub ebx, 1
jne 0x10051c38
push 0xa
xor edi, edi
pop ebx
cmp edi, dword [ebp - 0xa58]
jge 0x10051e3c
mov eax, edi
mov ecx, dword [ebp + edi*4 - 0xc0]
cdq
idiv dword [ebp - 0xa5c]
lea esi, [edx + eax*8]
mov dword [ebp + esi*4 - 0x4cc], ecx
mov ecx, dword [ebp - 0x104]
mov esi, dword [ebp - 0xa60]
sub ecx, eax
mov eax, dword [ebp + edi*4 - 0xc0]
inc edi
lea ecx, [edx + ecx*8]
mov dword [ebp + ecx*4 - 0x2ec], eax
cmp edi, esi
jl 0x10051c74
mov ecx, dword [ebp - 0x104]
mov eax, 0x100ac558
jmp 0x10051ccd
xor edi, edi
cmp edi, dword [ebp - 0xa58]
jge 0x10051e42
movzx ecx, byte [eax]
inc eax
mov ebx, dword [ebp + esi*4 - 0xc4]
mov dword [ebp - 0xa64], eax
mov eax, ebx
sar eax, 0x10
movzx eax, al
movsx edx, byte [eax + 0x100abc58]
mov eax, ebx
sar eax, 8
xor edx, ecx
movzx eax, al
xor ecx, ecx
shl edx, 8
inc ecx
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
movzx eax, bl
shl edx, 8
sar ebx, 0x18
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
movzx eax, bl
shl edx, 8
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
xor dword [ebp - 0xc0], edx
cmp esi, 8
je 0x10051d5f
cmp esi, ecx
jle 0x10051d55
mov eax, dword [ebp + ecx*4 - 0xc4]
xor dword [ebp + ecx*4 - 0xc0], eax
inc ecx
cmp ecx, esi
jl 0x10051d42
test esi, esi
jle 0x10051e27
jmp 0x10051dde
mov eax, dword [ebp + ecx*4 - 0xc4]
xor dword [ebp + ecx*4 - 0xc0], eax
inc ecx
cmp ecx, 4
jl 0x10051d5f
mov ecx, dword [ebp - 0xb4]
mov eax, ecx
sar eax, 0x18
movzx eax, al
push 5
movsx edx, byte [eax + 0x100abc58]
mov eax, ecx
sar eax, 0x10
movzx eax, al
shl edx, 8
sar ecx, 8
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
movzx eax, cl
shl edx, 8
pop ecx
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
movzx eax, byte [ebp - 0xb4]
shl edx, 8
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
xor dword [ebp - 0xb0], edx
mov eax, dword [ebp + ecx*4 - 0xc4]
xor dword [ebp + ecx*4 - 0xc0], eax
inc ecx
cmp ecx, 8
jl 0x10051dca
xor ebx, ebx
cmp edi, dword [ebp - 0xa58]
jge 0x10051e39
mov eax, edi
mov ecx, dword [ebp + ebx*4 - 0xc0]
cdq
idiv dword [ebp - 0xa5c]
lea esi, [edx + eax*8]
mov dword [ebp + esi*4 - 0x4cc], ecx
mov ecx, dword [ebp - 0x104]
mov esi, dword [ebp - 0xa60]
sub ecx, eax
mov eax, dword [ebp + ebx*4 - 0xc0]
inc ebx
inc edi
lea ecx, [edx + ecx*8]
mov dword [ebp + ecx*4 - 0x2ec], eax
cmp ebx, esi
jl 0x10051de0
mov eax, dword [ebp - 0xa64]
cmp edi, dword [ebp - 0xa58]
jl 0x10051cd9
push 0xa
pop ebx
mov ecx, dword [ebp - 0x104]
xor edi, edi
inc edi
mov dword [ebp - 0xa60], edi
cmp ecx, edi
jle 0x10051ec9
mov eax, dword [ebp - 0xa5c]
lea esi, [ebp - 0x2cc]
test eax, eax
jle 0x10051eb8
mov ebx, esi
mov edi, eax
mov edx, dword [ebx]
mov eax, edx
sar eax, 0x18
movzx ecx, al
mov eax, edx
sar eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x100ac978]
xor ecx, dword [eax*4 + 0x100ab858]
mov eax, edx
sar eax, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x100ad178]
movzx eax, dl
xor ecx, dword [eax*4 + 0x100ac578]
mov dword [ebx], ecx
lea ebx, [ebx + 4]
sub edi, 1
jne 0x10051e63
mov ecx, dword [ebp - 0x104]
mov eax, dword [ebp - 0xa5c]
mov edi, dword [ebp - 0xa60]
inc edi
add esi, 0x20
mov dword [ebp - 0xa60], edi
cmp edi, ecx
jl 0x10051e5b
push 0xa
pop ebx
lea eax, [ebp - 0x58]
mov byte [ebp - 0x4d0], 1
push eax
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x4d4]
call fcn.1008e488
mov edi, dword [ebp - 0xa68]
lea esi, [ebp - 0x58]
push 8
add edi, 0x28
mov dword [ebp - 0x94c], 0x100f9a7c
pop ecx
rep movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x948], 0
push 0x20
pop edx
push 8
mov eax, 0x100f9a54
mov byte [ebp - 4], 1
pop ecx
mov dword [ebp - 0x584], edx
lea edi, [ebp - 0x578]
mov dword [ebp - 0x580], edx
mov esi, eax
rep movsd dword es:[edi], dword [esi]
push 8
mov esi, eax
lea edi, [ebp - 0x558]
pop ecx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x584]
mov eax, dword [ebp - 0x580]
cmp ecx, 0x10
je 0x10051f5a
push 0xe
pop ebx
cmp ecx, 0x18
jne 0x10051f6b
cmp eax, edx
push 0xc
pop edx
cmovne ebx, edx
jmp 0x10051f6b
cmp eax, 0x10
je 0x10051f6b
push 0xe
pop ebx
push 0xc
cmp eax, 0x18
pop edx
cmove ebx, edx
cdq
xor esi, esi
and edx, 3
mov dword [ebp - 0x57c], ebx
add eax, edx
sar eax, 2
mov dword [ebp - 0xa5c], eax
test ebx, ebx
js 0x10051fb2
lea edx, [ebp - 0x944]
test eax, eax
jle 0x10051fa4
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov ebx, dword [ebp - 0x57c]
mov eax, dword [ebp - 0xa5c]
inc esi
add edx, 0x20
cmp esi, ebx
jle 0x10051f8c
mov ecx, dword [ebp - 0x584]
xor esi, esi
test ebx, ebx
js 0x10051fe4
lea edx, [ebp - 0x764]
test eax, eax
jle 0x10051fd6
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov ebx, dword [ebp - 0x57c]
mov eax, dword [ebp - 0xa5c]
inc esi
add edx, 0x20
cmp esi, ebx
jle 0x10051fbe
mov ecx, dword [ebp - 0x584]
lea edx, [ebx + 1]
mov edi, 0x100f8bc8
imul edx, eax
mov eax, ecx
mov dword [ebp - 0xa58], edx
cdq
and edx, 3
lea esi, [edx + eax]
sar esi, 2
lea eax, [ebp - 0x538]
mov dword [ebp - 0xa64], esi
mov dword [ebp - 0xa60], eax
test esi, esi
jle 0x100520aa
mov ebx, esi
movzx esi, byte [edi]
lea edi, [edi + 4]
movzx edx, byte [edi - 3]
movzx ecx, byte [edi - 2]
movzx eax, byte [edi - 1]
shl esi, 8
or esi, edx
shl esi, 8
or esi, ecx
shl esi, 8
or esi, eax
mov eax, dword [ebp - 0xa60]
mov dword [eax], esi
add eax, 4
mov dword [ebp - 0xa60], eax
sub ebx, 1
jne 0x1005201d
mov ebx, dword [ebp - 0xa5c]
xor edi, edi
cmp edi, dword [ebp - 0xa58]
jge 0x10052218
mov eax, edi
mov ecx, dword [ebp + edi*4 - 0x538]
cdq
idiv ebx
lea esi, [edx + eax*8]
mov dword [ebp + esi*4 - 0x944], ecx
mov ecx, dword [ebp - 0x57c]
mov esi, dword [ebp - 0xa64]
sub ecx, eax
mov eax, dword [ebp + edi*4 - 0x538]
inc edi
lea ecx, [edx + ecx*8]
mov dword [ebp + ecx*4 - 0x764], eax
cmp edi, esi
jl 0x1005205c
mov ebx, dword [ebp - 0x57c]
jmp 0x100520ac
xor edi, edi
cmp edi, dword [ebp - 0xa58]
jge 0x1005221e
mov eax, dword [ebp - 0xa6c]
mov ebx, dword [ebp + esi*4 - 0x53c]
movzx ecx, byte [eax]
inc eax
mov dword [ebp - 0xa6c], eax
mov eax, ebx
sar eax, 0x10
movzx eax, al
movsx edx, byte [eax + 0x100abc58]
mov eax, ebx
sar eax, 8
xor edx, ecx
movzx eax, al
xor ecx, ecx
shl edx, 8
inc ecx
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
movzx eax, bl
shl edx, 8
sar ebx, 0x18
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
movzx eax, bl
shl edx, 8
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
xor dword [ebp - 0x538], edx
cmp esi, 8
je 0x10052144
cmp esi, ecx
jle 0x1005213a
mov eax, dword [ebp + ecx*4 - 0x53c]
xor dword [ebp + ecx*4 - 0x538], eax
inc ecx
cmp ecx, esi
jl 0x10052127
test esi, esi
jle 0x1005220c
jmp 0x100521c3
mov eax, dword [ebp + ecx*4 - 0x53c]
xor dword [ebp + ecx*4 - 0x538], eax
inc ecx
cmp ecx, 4
jl 0x10052144
mov ecx, dword [ebp - 0x52c]
mov eax, ecx
sar eax, 0x18
movzx eax, al
push 5
movsx edx, byte [eax + 0x100abc58]
mov eax, ecx
sar eax, 0x10
movzx eax, al
shl edx, 8
sar ecx, 8
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
movzx eax, cl
shl edx, 8
pop ecx
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
movzx eax, byte [ebp - 0x52c]
shl edx, 8
movzx eax, byte [eax + 0x100abc58]
xor edx, eax
xor dword [ebp - 0x528], edx
mov eax, dword [ebp + ecx*4 - 0x53c]
xor dword [ebp + ecx*4 - 0x538], eax
inc ecx
cmp ecx, 8
jl 0x100521af
xor ebx, ebx
cmp edi, dword [ebp - 0xa58]
jge 0x10052218
mov eax, edi
mov ecx, dword [ebp + ebx*4 - 0x538]
cdq
idiv dword [ebp - 0xa5c]
lea esi, [edx + eax*8]
mov dword [ebp + esi*4 - 0x944], ecx
mov ecx, dword [ebp - 0x57c]
mov esi, dword [ebp - 0xa64]
sub ecx, eax
mov eax, dword [ebp + ebx*4 - 0x538]
inc ebx
inc edi
lea ecx, [edx + ecx*8]
mov dword [ebp + ecx*4 - 0x764], eax
cmp ebx, esi
jl 0x100521c5
cmp edi, dword [ebp - 0xa58]
jl 0x100520b8
mov ebx, dword [ebp - 0x57c]
xor edi, edi
inc edi
mov dword [ebp - 0xa6c], edi
cmp ebx, edi
jle 0x100522a2
mov eax, dword [ebp - 0xa5c]
lea esi, [ebp - 0x744]
test eax, eax
jle 0x10052294
mov ebx, esi
mov edi, eax
mov edx, dword [ebx]
mov eax, edx
sar eax, 0x18
movzx ecx, al
mov eax, edx
sar eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x100ac978]
xor ecx, dword [eax*4 + 0x100ab858]
mov eax, edx
sar eax, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x100ad178]
movzx eax, dl
xor ecx, dword [eax*4 + 0x100ac578]
mov dword [ebx], ecx
lea ebx, [ebx + 4]
sub edi, 1
jne 0x1005223f
mov ebx, dword [ebp - 0x57c]
mov eax, dword [ebp - 0xa5c]
mov edi, dword [ebp - 0xa6c]
inc edi
add esi, 0x20
mov dword [ebp - 0xa6c], edi
cmp edi, ebx
jl 0x10052237
lea eax, [ebp - 0x58]
mov byte [ebp - 0x948], 1
push eax
push 0x100f8b64
lea ecx, [ebp - 0x94c]
call fcn.1008e488
mov ebx, dword [ebp - 0xa68]
lea esi, [ebp - 0x58]
push 8
pop ecx
xor eax, eax
lea edi, [ebx + 0x48]
mov byte [ebp - 0xa50], al
rep movsd dword es:[edi], dword [esi]
push 8
pop ecx
mov esi, 0x100ad860
mov dword [ebp - 0xa54], 0x100f9a84
lea edi, [ebp - 0xa48]
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xa28], eax
mov dword [ebp - 0xa24], eax
mov dword [ebp - 0xa4c], 1
push 0x20
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp - 0xa54]
call fcn.1008ea7c
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0xa54]
call fcn.1008ec80
push 8
pop ecx
lea edi, [ebx + 0x68]
xor eax, eax
lea esi, [ebp - 0x58]
rep movsd dword es:[edi], dword [esi]
push 7
pop ecx
lea edi, [ebx + 0x88]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [ebx + 0xa8], 0x20
mov word [ebx + 0xa9], ax
mov eax, dword [0x1013b038]
mov byte [ebx + 0xac], 3
mov byte [ebx + 0xb0], 0xe
mov dword [ebx + 0xb4], 0x31685a42
mov dword [ebx + 0xb8], 0x38457217
mov word [ebx + 0xbc], 0x9050
call fcn.1009e12a
ret