Function at 0x4ce106
Capabilities:
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
movzx eax, byte [ebp + 0xc]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
sub ecx, 0x10
mov dword [ebp - 0xc], ecx
cmp dword [ebp - 0xc], 0xf0
ja case.0x4ce0f9.1
mov edx, dword [ebp - 0xc]
movzx eax, byte [edx + 0x4ce30c]
jmp dword [eax*4 + 0x4ce2fc]
mov byte [ebp + 0xc], 0x10
jmp 0x4ce123
mov byte [ebp + 0xc], 0x18
jmp 0x4ce123
mov byte [ebp + 0xc], 0x20
jmp 0x4ce123
mov ecx, dword [ebp + 0x10]
mov byte [ecx + 0xf0], 0
or al, 0xff
jmp 0x4ce2f7
movzx edx, byte [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
call fcn.004d04d0
add esp, 0xc
movzx edx, byte [ebp + 0xc]
lea eax, [edx*4 + 0x70]
mov byte [ebp - 3], al
movzx ecx, byte [ebp - 3]
sar ecx, 4
sub ecx, 1
mov edx, dword [ebp + 0x10]
mov byte [edx + 0xf0], cl
mov al, byte [ebp + 0xc]
mov byte [ebp - 2], al
mov byte [ebp - 1], 1
jmp 0x4ce16f
movzx ecx, byte [ebp - 2]
add ecx, 4
mov byte [ebp - 2], cl
movzx edx, byte [ebp - 2]
movzx eax, byte [ebp - 3]
cmp edx, eax
jge 0x4ce2f5
movzx ecx, byte [ebp - 2]
mov edx, dword [ebp + 0x10]
mov al, byte [edx + ecx - 4]
mov byte [ebp - 8], al
movzx ecx, byte [ebp - 2]
mov edx, dword [ebp + 0x10]
mov al, byte [edx + ecx - 3]
mov byte [ebp - 6], al
movzx ecx, byte [ebp - 2]
mov edx, dword [ebp + 0x10]
mov al, byte [edx + ecx - 2]
mov byte [ebp - 4], al
movzx ecx, byte [ebp - 2]
mov edx, dword [ebp + 0x10]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 5], al
movzx eax, byte [ebp - 2]
movzx ecx, byte [ebp + 0xc]
cdq
idiv ecx
test edx, edx
jne 0x4ce224
mov dl, byte [ebp - 8]
mov byte [ebp - 7], dl
movzx eax, byte [ebp - 6]
movzx ecx, byte [eax + str.cw]
movzx edx, byte [ebp - 1]
xor ecx, edx
mov byte [ebp - 8], cl
movzx eax, byte [ebp - 4]
mov cl, byte [eax + str.cw]
mov byte [ebp - 6], cl
movzx edx, byte [ebp - 5]
mov al, byte [edx + str.cw]
mov byte [ebp - 4], al
movzx ecx, byte [ebp - 7]
mov dl, byte [ecx + str.cw]
mov byte [ebp - 5], dl
movzx eax, byte [ebp - 1]
shl eax, 1
movzx ecx, byte [ebp - 1]
sar ecx, 7
and ecx, 1
imul ecx, ecx, 0x11b
xor eax, ecx
mov byte [ebp - 1], al
jmp 0x4ce271
movzx edx, byte [ebp + 0xc]
cmp edx, 0x18
jle 0x4ce271
movzx eax, byte [ebp - 2]
movzx ecx, byte [ebp + 0xc]
cdq
idiv ecx
cmp edx, 0x10
jne 0x4ce271
movzx edx, byte [ebp - 8]
mov al, byte [edx + str.cw]
mov byte [ebp - 8], al
movzx ecx, byte [ebp - 6]
mov dl, byte [ecx + str.cw]
mov byte [ebp - 6], dl
movzx eax, byte [ebp - 4]
mov cl, byte [eax + str.cw]
mov byte [ebp - 4], cl
movzx edx, byte [ebp - 5]
mov al, byte [edx + str.cw]
mov byte [ebp - 5], al
movzx ecx, byte [ebp - 2]
movzx edx, byte [ebp + 0xc]
sub ecx, edx
mov byte [ebp - 7], cl
movzx eax, byte [ebp - 7]
mov ecx, dword [ebp + 0x10]
movzx edx, byte [ecx + eax]
movzx eax, byte [ebp - 8]
xor edx, eax
movzx ecx, byte [ebp - 2]
mov eax, dword [ebp + 0x10]
mov byte [eax + ecx], dl
movzx ecx, byte [ebp - 7]
mov edx, dword [ebp + 0x10]
movzx eax, byte [edx + ecx + 1]
movzx ecx, byte [ebp - 6]
xor eax, ecx
movzx edx, byte [ebp - 2]
mov ecx, dword [ebp + 0x10]
mov byte [ecx + edx + 1], al
movzx edx, byte [ebp - 7]
mov eax, dword [ebp + 0x10]
movzx ecx, byte [eax + edx + 2]
movzx edx, byte [ebp - 4]
xor ecx, edx
movzx eax, byte [ebp - 2]
mov edx, dword [ebp + 0x10]
mov byte [edx + eax + 2], cl
movzx eax, byte [ebp - 7]
mov ecx, dword [ebp + 0x10]
movzx edx, byte [ecx + eax + 3]
movzx eax, byte [ebp - 5]
xor edx, eax
movzx ecx, byte [ebp - 2]
mov eax, dword [ebp + 0x10]
mov byte [eax + ecx + 3], dl
jmp 0x4ce165
xor al, al
mov esp, ebp
pop ebp
ret