Function at 0x614a90
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, 0xffffff4c
add ecx, 2
sub esi, ebp
lea eax, [ebp + 0xb4]
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 0x614ab1
push ebx
push edi
lea esi, [ebp + 0xb0]
mov edi, 0xfffffffc
lea ecx, [ebp + 0xa0]
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 0x614aec
add ebp, 0x90
mov dword [esp + 0x24], 9
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 0x614b3e
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 0x614bce
shl al, 1
xor al, 0x1b
jmp 0x614bd0
shl al, 1
test al, 0x80
mov byte [esp + 0x13], al
je 0x614bde
shl al, 1
xor al, 0x1b
jmp 0x614be0
shl al, 1
test al, 0x80
mov byte [esp + 0x12], al
je 0x614bee
shl al, 1
xor al, 0x1b
jmp 0x614bf0
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 0x614ba9
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 0x614cda
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 0x614b3c
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 0x614d34
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 0x614da1
lea esi, [ebp + 0xd0]
lea ecx, [ebp + 0xb4]
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 0x614ded
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 + 0xbf], dl
jl 0x614e28
mov eax, dword [esp + 0x38]
mov dword [ebp + 0xe0], 0
test eax, eax
je 0x614e89
xor ecx, ecx
mov cl, byte [ebp + 0xdf]
cmp ecx, 1
jl 0x614e61
cmp ecx, 0x10
jle 0x614e66
mov ecx, 0x10
mov eax, 0xf
cmp ecx, eax
jg 0x614e83
mov edx, eax
sub edx, ecx
dec eax
cmp eax, ecx
mov dl, byte [edx + ebp + 0xd0]
mov byte [esi + eax + 1], dl
jge 0x614e6f
mov dword [ebp + 0xe0], ecx
pop esi
pop ebp
add esp, 0x24
ret