Function at 0x615370
Capabilities:
Encode data using xor
Encrypt data using aes
Encrypt data using aes mixcolumns step
Reference aes constants

Disassembly:
sub esp, 0x24
mov ecx, dword [esp + 0x2c]
push ebp
mov ebp, dword [esp + 0x2c]
push esi
mov esi, 0xffffff0c
add ecx, 2
sub esi, ebp
lea eax, [ebp + 0xf4]
mov dword [esp + 0x28], esi
mov dl, byte [ecx - 2]
add ecx, 4
mov byte [eax - 4], dl
mov dl, byte [ecx - 5]
mov byte [eax], dl
mov dl, byte [ecx - 4]
mov byte [eax + 4], dl
mov dl, byte [ecx - 3]
mov byte [eax + 8], dl
inc eax
lea edx, [esi + eax]
cmp edx, 4
jl 0x615391
push ebx
push edi
lea esi, [ebp + 0xf0]
mov edi, 0xfffffffc
lea ecx, [ebp + 0xe0]
sub edi, esi
lea eax, [esi + 4]
mov edx, dword [ecx]
mov bl, byte [eax - 4]
shr edx, 0x18
xor bl, dl
add ecx, 4
mov byte [eax - 4], bl
mov edx, dword [ecx - 4]
mov bl, byte [eax]
shr edx, 0x10
xor bl, dl
mov byte [eax], bl
mov edx, dword [ecx - 4]
mov bl, byte [eax + 4]
shr edx, 8
xor bl, dl
mov byte [eax + 4], bl
mov dl, byte [ecx - 4]
mov bl, byte [eax + 8]
xor bl, dl
mov byte [eax + 8], bl
inc eax
lea edx, [edi + eax]
cmp edx, 4
jl 0x6153cc
add ebp, 0xd0
mov dword [esp + 0x24], 0xd
mov dword [esp + 0x20], ebp
xor eax, eax
xor ecx, ecx
mov cl, byte [eax + esi]
inc eax
cmp eax, 0x10
mov dl, byte [ecx + 0x7b51f0]
mov byte [eax + esi - 1], dl
jl 0x61541e
mov cl, byte [esi + 6]
mov al, byte [esi + 7]
mov dl, byte [esi + 5]
mov byte [esi + 7], cl
mov cl, byte [esi + 4]
mov byte [esi + 4], al
mov al, byte [esi + 8]
mov byte [esi + 6], dl
mov dl, byte [esi + 0xa]
mov byte [esi + 0xa], al
mov al, byte [esi + 9]
mov byte [esi + 5], cl
mov cl, byte [esi + 0xb]
mov byte [esi + 8], dl
mov dl, byte [esi + 0xd]
mov byte [esi + 0xb], al
mov al, byte [esi + 0xc]
mov byte [esi + 0xc], dl
mov dl, byte [esi + 0xf]
mov byte [esi + 0xf], al
mov eax, 0xfffffffc
mov byte [esi + 9], cl
mov cl, byte [esi + 0xe]
sub eax, esi
mov byte [esi + 0xd], cl
mov byte [esi + 0xe], dl
lea edi, [esi + 4]
mov dword [esp + 0x2c], eax
mov cl, byte [edi]
mov al, byte [edi - 4]
mov dl, byte [edi + 4]
mov byte [esp + 0x18], cl
mov cl, byte [edi + 8]
mov byte [esp + 0x1c], al
test al, 0x80
mov byte [esp + 0x14], dl
mov byte [esp + 0x28], cl
je 0x6154ae
shl al, 1
xor al, 0x1b
jmp 0x6154b0
shl al, 1
test al, 0x80
mov byte [esp + 0x13], al
je 0x6154be
shl al, 1
xor al, 0x1b
jmp 0x6154c0
shl al, 1
test al, 0x80
mov byte [esp + 0x12], al
je 0x6154ce
shl al, 1
xor al, 0x1b
jmp 0x6154d0
shl al, 1
mov ebp, dword [esp + 0x28]
mov byte [esp + 0x11], al
push ebp
call fcn.00614540
mov edx, dword [esp + 0x18]
mov bl, al
push edx
call fcn.006145e0
xor bl, al
mov eax, dword [esp + 0x20]
push eax
call fcn.00614580
mov dl, byte [esp + 0x1d]
mov cl, byte [esp + 0x1e]
xor bl, al
mov al, byte [esp + 0x1f]
xor bl, dl
push ebp
xor bl, cl
xor bl, al
mov byte [edi - 4], bl
call fcn.006145e0
mov ecx, dword [esp + 0x24]
mov bl, al
push ecx
call fcn.00614580
mov edx, dword [esp + 0x2c]
xor bl, al
push edx
call fcn.00614640
xor bl, al
mov eax, dword [esp + 0x34]
push eax
call fcn.00614540
xor bl, al
push ebp
mov byte [edi], bl
call fcn.00614580
mov ecx, dword [esp + 0x34]
mov bl, al
push ecx
call fcn.00614640
mov edx, dword [esp + 0x3c]
xor bl, al
push edx
call fcn.00614540
xor bl, al
mov eax, dword [esp + 0x44]
push eax
call fcn.006145e0
xor bl, al
push ebp
mov byte [edi + 4], bl
call fcn.00614640
mov ecx, dword [esp + 0x44]
mov bl, al
push ecx
call fcn.00614540
mov edx, dword [esp + 0x4c]
xor bl, al
push edx
call fcn.006145e0
xor bl, al
mov eax, dword [esp + 0x54]
push eax
call fcn.00614580
mov ecx, dword [esp + 0x68]
xor bl, al
add esp, 0x3c
mov byte [edi + 8], bl
inc edi
add ecx, edi
cmp ecx, 4
jl 0x615489
mov ecx, dword [esp + 0x20]
mov edi, 0xfffffffc
lea eax, [esi + 4]
sub edi, esi
mov edx, dword [ecx]
mov bl, byte [eax - 4]
shr edx, 0x18
xor bl, dl
add ecx, 4
mov byte [eax - 4], bl
mov edx, dword [ecx - 4]
mov bl, byte [eax]
shr edx, 0x10
xor bl, dl
mov byte [eax], bl
mov edx, dword [ecx - 4]
mov bl, byte [eax + 4]
shr edx, 8
xor bl, dl
mov byte [eax + 4], bl
mov dl, byte [ecx - 4]
mov bl, byte [eax + 8]
xor bl, dl
mov byte [eax + 8], bl
inc eax
lea edx, [edi + eax]
cmp edx, 4
jl 0x6155ba
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
sub ecx, 0x10
dec eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], eax
jne 0x61541c
xor eax, eax
xor ecx, ecx
mov cl, byte [eax + esi]
inc eax
cmp eax, 0x10
mov dl, byte [ecx + 0x7b51f0]
mov byte [eax + esi - 1], dl
jl 0x615614
mov cl, byte [esi + 6]
mov al, byte [esi + 7]
mov dl, byte [esi + 5]
mov byte [esi + 7], cl
mov cl, byte [esi + 4]
mov byte [esi + 4], al
mov al, byte [esi + 8]
mov byte [esi + 6], dl
mov dl, byte [esi + 0xa]
mov ebp, dword [esp + 0x38]
mov byte [esi + 0xa], al
mov al, byte [esi + 9]
mov byte [esi + 5], cl
mov cl, byte [esi + 0xb]
mov byte [esi + 8], dl
mov dl, byte [esi + 0xd]
mov byte [esi + 0xb], al
mov al, byte [esi + 0xc]
mov byte [esi + 9], cl
mov cl, byte [esi + 0xe]
mov byte [esi + 0xc], dl
mov dl, byte [esi + 0xf]
mov edi, 0xfffffffc
mov byte [esi + 0xd], cl
mov byte [esi + 0xf], al
mov byte [esi + 0xe], dl
lea eax, [esi + 4]
mov ecx, ebp
sub edi, esi
mov edx, dword [ecx]
mov bl, byte [eax - 4]
shr edx, 0x18
xor bl, dl
add ecx, 4
mov byte [eax - 4], bl
mov edx, dword [ecx - 4]
mov bl, byte [eax]
shr edx, 0x10
xor bl, dl
mov byte [eax], bl
mov edx, dword [ecx - 4]
mov bl, byte [eax + 4]
shr edx, 8
xor bl, dl
mov byte [eax + 4], bl
mov dl, byte [ecx - 4]
mov bl, byte [eax + 8]
xor bl, dl
mov byte [eax + 8], bl
inc eax
lea edx, [edi + eax]
cmp edx, 4
jl 0x615681
lea esi, [ebp + 0x110]
lea ecx, [ebp + 0xf4]
mov eax, esi
mov dl, byte [eax - 0x10]
mov bl, byte [ecx - 4]
xor dl, bl
mov byte [eax], dl
mov dl, byte [eax - 0xf]
mov bl, byte [ecx]
add eax, 4
xor dl, bl
mov byte [eax - 3], dl
mov dl, byte [eax - 0x12]
xor dl, byte [ecx + 4]
mov byte [eax - 2], dl
mov dl, byte [eax - 0x11]
mov bl, byte [ecx + 8]
xor dl, bl
inc ecx
mov byte [eax - 1], dl
mov edx, dword [esp + 0x30]
add edx, ecx
cmp edx, 4
jl 0x6156cd
pop edi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x34]
inc eax
cmp eax, 0x10
mov dl, byte [eax + ecx - 1]
mov byte [eax + ebp + 0xff], dl
jl 0x615708
mov eax, dword [esp + 0x38]
mov dword [ebp + 0x120], 0
test eax, eax
je 0x615769
xor ecx, ecx
mov cl, byte [ebp + 0x11f]
cmp ecx, 1
jl 0x615741
cmp ecx, 0x10
jle 0x615746
mov ecx, 0x10
mov eax, 0xf
cmp ecx, eax
jg 0x615763
mov edx, eax
sub edx, ecx
dec eax
cmp eax, ecx
mov dl, byte [edx + ebp + 0x110]
mov byte [esi + eax + 1], dl
jge 0x61574f
mov dword [ebp + 0x120], ecx
pop esi
pop ebp
add esp, 0x24
ret