Function at 0x10039ce5
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
push edi
mov ebx, eax
push ebx
push dword [ebp + 8]
mov edi, ebx
mov esi, ecx
shr edi, 2
lea eax, [edi + 6]
push esi
mov dword [esi + 0xf0], eax
call sub.MSVCRT.dll_memcpy
add esp, 0xc
xor ecx, ecx
test edi, edi
jbe 0x10039d32
mov eax, dword [esi + ecx*4]
mov edx, eax
ror edx, 8
and edx, 0xff00ff00
rol eax, 8
and eax, 0xff00ff
or edx, eax
mov dword [esi + ecx*4], edx
inc ecx
cmp ecx, edi
jb 0x10039d12
cmp ebx, 0x10
je 0x10039fd2
cmp ebx, 0x18
je 0x10039ebd
cmp ebx, 0x20
je 0x10039d53
mov eax, 0xffffff53
jmp 0x1003a2ee
mov ecx, dword [esi + 0x1c]
mov eax, ecx
shr eax, 0x10
movzx eax, al
mov eax, dword [eax*4 + str.ccccwwww]
xor eax, 0x1000000
mov edx, ecx
shr edx, 0x18
movzx edx, byte [edx*4 + str.ccccwwww]
and eax, 0xff000000
xor eax, edx
mov edx, ecx
shr edx, 8
movzx edx, dl
mov edx, dword [edx*4 + str.ccccwwww]
mov edi, 0xff0000
and edx, edi
xor eax, edx
movzx ecx, cl
mov edx, dword [ecx*4 + str.ccccwwww]
mov ecx, 0xff00
and edx, ecx
xor eax, edx
xor eax, dword [esi]
mov edx, dword [esi + 4]
xor edx, eax
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
xor eax, edx
mov dword [esi + 0x24], edx
mov edx, dword [esi + 0xc]
xor edx, eax
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], edx
lea eax, [esi + 0x30]
mov dword [ebp - 8], 4
mov ebx, dword [eax - 4]
mov edx, ebx
shr ebx, 0x18
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, 0xff000000
shr edx, 0x10
movzx edx, dl
mov edx, dword [edx*4 + str.ccccwwww]
and edx, edi
xor edx, ebx
mov ebx, dword [eax - 4]
shr ebx, 8
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, ecx
xor edx, ebx
movzx ebx, byte [eax - 4]
movzx ebx, byte [ebx*4 + str.ccccwwww]
xor edx, ebx
xor edx, dword [eax - 0x20]
mov ebx, dword [eax - 0x1c]
xor ebx, edx
mov dword [eax + 4], ebx
mov dword [eax], edx
mov edx, dword [eax - 0x18]
xor edx, ebx
mov ebx, dword [eax - 0x14]
xor ebx, edx
mov dword [eax + 0xc], ebx
mov dword [eax + 8], edx
mov ebx, dword [eax + 0xc]
mov edx, ebx
mov dword [ebp - 4], ebx
shr ebx, 8
add eax, 0x20
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, edi
shr edx, 0x18
movzx edx, byte [edx*4 + str.ccccwwww]
xor edx, ebx
mov ebx, dword [ebp - 4]
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, 0xff000000
xor edx, ebx
movzx ebx, byte [ebp - 4]
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, ecx
xor edx, ebx
mov ebx, dword [ebp - 8]
xor edx, dword [ebx + 0x10046ec0]
add dword [ebp - 8], 4
xor edx, dword [eax - 0x30]
mov dword [eax - 0x10], edx
mov ebx, dword [eax - 0x2c]
xor ebx, edx
mov dword [eax - 0xc], ebx
mov edx, dword [eax - 0x28]
xor edx, ebx
mov dword [eax - 8], edx
mov ebx, dword [eax - 0x24]
xor ebx, edx
cmp dword [ebp - 8], 0x1c
mov dword [eax - 4], ebx
jne 0x10039dd0
jmp 0x1003a0cc
mov ecx, dword [esi + 0x14]
mov eax, ecx
shr eax, 0x10
movzx eax, al
mov eax, dword [eax*4 + str.ccccwwww]
xor eax, 0x1000000
mov edx, ecx
shr edx, 0x18
movzx edx, byte [edx*4 + str.ccccwwww]
and eax, 0xff000000
xor eax, edx
mov edx, ecx
shr edx, 8
movzx edx, dl
mov edx, dword [edx*4 + str.ccccwwww]
mov edi, 0xff0000
and edx, edi
xor eax, edx
movzx ecx, cl
mov edx, dword [ecx*4 + str.ccccwwww]
mov ecx, 0xff00
and edx, ecx
xor eax, edx
xor eax, dword [esi]
mov edx, dword [esi + 4]
xor edx, eax
mov dword [esi + 0x18], eax
mov eax, dword [esi + 8]
xor eax, edx
mov dword [esi + 0x1c], edx
mov edx, dword [esi + 0xc]
xor edx, eax
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], edx
lea eax, [esi + 0x28]
mov dword [ebp - 8], 4
mov edx, dword [eax - 0x18]
xor edx, dword [eax - 4]
mov ebx, dword [eax - 0x14]
xor ebx, edx
mov dword [eax + 4], ebx
mov dword [eax], edx
mov ebx, dword [eax + 4]
mov edx, ebx
mov dword [ebp - 4], ebx
shr ebx, 8
add eax, 0x18
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, edi
shr edx, 0x18
movzx edx, byte [edx*4 + str.ccccwwww]
xor edx, ebx
mov ebx, dword [ebp - 4]
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, 0xff000000
xor edx, ebx
movzx ebx, byte [ebp - 4]
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, ecx
xor edx, ebx
mov ebx, dword [ebp - 8]
xor edx, dword [ebx + 0x10046ec0]
add dword [ebp - 8], 4
xor edx, dword [eax - 0x28]
mov dword [eax - 0x10], edx
mov ebx, dword [eax - 0x24]
xor ebx, edx
mov dword [eax - 0xc], ebx
mov edx, dword [eax - 0x20]
xor edx, ebx
mov dword [eax - 8], edx
mov ebx, dword [eax - 0x1c]
xor ebx, edx
cmp dword [ebp - 8], 0x20
mov dword [eax - 4], ebx
jne 0x10039f3a
jmp 0x1003a0cc
mov ebx, dword [esi + 0xc]
mov eax, ebx
shr eax, 0x10
movzx eax, al
mov edx, dword [eax*4 + str.ccccwwww]
xor edx, 0x1000000
and edx, 0xff000000
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax*4 + str.ccccwwww]
xor edx, eax
mov eax, ebx
shr eax, 8
movzx eax, al
mov eax, dword [eax*4 + str.ccccwwww]
mov edi, 0xff0000
and eax, edi
xor edx, eax
movzx eax, bl
mov eax, dword [eax*4 + str.ccccwwww]
mov ecx, 0xff00
and eax, ecx
xor edx, eax
xor edx, dword [esi]
mov eax, dword [esi + 4]
xor eax, edx
mov dword [esi + 0x10], edx
mov edx, dword [esi + 8]
xor edx, eax
mov dword [esi + 0x18], edx
xor edx, ebx
mov dword [esi + 0x14], eax
mov dword [esi + 0x1c], edx
lea eax, [esi + 4]
mov dword [ebp - 8], 4
mov ebx, dword [eax + 0x18]
mov edx, ebx
mov dword [ebp - 4], ebx
shr ebx, 8
add eax, 0x10
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, edi
shr edx, 0x18
movzx edx, byte [edx*4 + str.ccccwwww]
xor edx, ebx
mov ebx, dword [ebp - 4]
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, 0xff000000
xor edx, ebx
movzx ebx, byte [ebp - 4]
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, ecx
xor edx, ebx
mov ebx, dword [ebp - 8]
xor edx, dword [ebx + 0x10046ec0]
add dword [ebp - 8], 4
xor edx, dword [eax - 4]
mov dword [eax + 0xc], edx
mov ebx, dword [eax]
xor ebx, edx
mov dword [eax + 0x10], ebx
mov edx, dword [eax + 4]
xor edx, ebx
mov dword [eax + 0x14], edx
mov ebx, dword [eax + 8]
xor ebx, edx
cmp dword [ebp - 8], 0x28
mov dword [eax + 0x18], ebx
jne 0x1003a04e
cmp dword [ebp + 0x10], 1
jne 0x1003a2d2
mov edx, dword [esi + 0xf0]
and dword [ebp - 4], 0
shl edx, 2
je 0x1003a12a
lea eax, [esi + edx*4 + 8]
lea ecx, [esi + 8]
mov ebx, dword [eax - 8]
mov edi, dword [ecx - 8]
add dword [ebp - 4], 4
mov dword [ecx - 8], ebx
mov ebx, dword [eax - 4]
mov dword [eax - 8], edi
mov edi, dword [ecx - 4]
mov dword [ecx - 4], ebx
mov ebx, dword [eax]
mov dword [eax - 4], edi
mov edi, dword [ecx]
mov dword [ecx], ebx
mov ebx, dword [eax + 4]
mov dword [eax], edi
mov edi, dword [ecx + 4]
mov dword [ecx + 4], ebx
mov dword [eax + 4], edi
sub edx, 4
add ecx, 0x10
sub eax, 0x10
cmp dword [ebp - 4], edx
jb 0x1003a0ec
xor eax, eax
inc eax
cmp dword [esi + 0xf0], eax
mov dword [ebp - 4], eax
jbe 0x1003a2d2
lea ecx, [esi + 8]
mov eax, 0xff
mov edi, dword [ecx + 8]
mov ebx, edi
shr ebx, 0x10
mov edx, edi
shr edx, 0x18
mov edx, dword [edx*4 + str.ccccwwww]
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and edx, eax
mov edx, dword [edx*4 + 0x100482e8]
add ecx, 0x10
and ebx, eax
xor edx, dword [ebx*4 + 0x100486e8]
mov ebx, edi
shr ebx, 8
movzx edi, bl
mov edi, dword [edi*4 + str.ccccwwww]
and edi, eax
xor edx, dword [edi*4 + 0x10048ae8]
movzx edi, byte [ecx - 8]
mov edi, dword [edi*4 + str.ccccwwww]
and edi, eax
xor edx, dword [edi*4 + 0x10048ee8]
mov edi, dword [ecx - 4]
mov dword [ecx - 8], edx
mov ebx, edi
shr ebx, 0x10
mov edx, edi
shr edx, 0x18
mov edx, dword [edx*4 + str.ccccwwww]
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and edx, eax
mov edx, dword [edx*4 + 0x100482e8]
and ebx, eax
xor edx, dword [ebx*4 + 0x100486e8]
mov ebx, edi
shr ebx, 8
movzx edi, bl
mov edi, dword [edi*4 + str.ccccwwww]
and edi, eax
xor edx, dword [edi*4 + 0x10048ae8]
movzx edi, byte [ecx - 4]
mov edi, dword [edi*4 + str.ccccwwww]
and edi, eax
xor edx, dword [edi*4 + 0x10048ee8]
mov edi, dword [ecx]
mov dword [ecx - 4], edx
mov ebx, edi
shr ebx, 0x10
mov edx, edi
shr edx, 0x18
mov edx, dword [edx*4 + str.ccccwwww]
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and edx, eax
mov edx, dword [edx*4 + 0x100482e8]
and ebx, eax
xor edx, dword [ebx*4 + 0x100486e8]
mov ebx, edi
shr ebx, 8
movzx edi, bl
mov edi, dword [edi*4 + str.ccccwwww]
and edi, eax
xor edx, dword [edi*4 + 0x10048ae8]
movzx edi, byte [ecx]
mov edi, dword [edi*4 + str.ccccwwww]
and edi, eax
xor edx, dword [edi*4 + 0x10048ee8]
mov edi, dword [ecx + 4]
mov dword [ecx], edx
mov ebx, edi
shr ebx, 0x10
mov edx, edi
shr edx, 0x18
mov edx, dword [edx*4 + str.ccccwwww]
movzx ebx, bl
mov ebx, dword [ebx*4 + str.ccccwwww]
and edx, eax
mov edx, dword [edx*4 + 0x100482e8]
and ebx, eax
xor edx, dword [ebx*4 + 0x100486e8]
mov ebx, edi
shr ebx, 8
movzx edi, bl
mov edi, dword [edi*4 + str.ccccwwww]
and edi, eax
xor edx, dword [edi*4 + 0x10048ae8]
movzx edi, byte [ecx + 4]
mov edi, dword [edi*4 + str.ccccwwww]
and edi, eax
xor edx, dword [edi*4 + 0x10048ee8]
inc dword [ebp - 4]
mov dword [ecx + 4], edx
mov edx, dword [ebp - 4]
cmp edx, dword [esi + 0xf0]
jb 0x1003a144
cmp dword [ebp + 0xc], 0
je 0x1003a2ec
push 0x10
push dword [ebp + 0xc]
add esi, 0xf4
push esi
call sub.MSVCRT.dll_memcpy
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret