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

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
sub esp, 0xc
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], ecx
mov byte [ebp - 0x11], 0x1c
movzx eax, byte [ebp - 0x11]
cmp eax, 0x10
jle 0x10003ae4
movzx eax, byte [ebp - 0x11]
sub eax, 4
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ecx + eax]
movzx ecx, byte [ebp - 0x11]
mov edx, dword [ebp - 0x10]
movzx esi, byte [edx + ecx]
xor esi, eax
mov eax, esi
mov bl, al
mov byte [edx + ecx], bl
movzx eax, byte [ebp - 0x11]
sub eax, 3
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ecx + eax]
movzx ecx, byte [ebp - 0x11]
mov edx, dword [ebp - 0x10]
movzx esi, byte [edx + ecx + 1]
xor esi, eax
mov eax, esi
mov bl, al
mov byte [edx + ecx + 1], bl
movzx eax, byte [ebp - 0x11]
sub eax, 2
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ecx + eax]
movzx ecx, byte [ebp - 0x11]
mov edx, dword [ebp - 0x10]
movzx esi, byte [edx + ecx + 2]
xor esi, eax
mov eax, esi
mov bl, al
mov byte [edx + ecx + 2], bl
movzx eax, byte [ebp - 0x11]
sub eax, 1
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ecx + eax]
movzx ecx, byte [ebp - 0x11]
mov edx, dword [ebp - 0x10]
movzx esi, byte [edx + ecx + 3]
xor esi, eax
mov eax, esi
mov bl, al
mov byte [edx + ecx + 3], bl
movzx eax, byte [ebp - 0x11]
sub eax, 4
mov cl, al
mov byte [ebp - 0x11], cl
jmp 0x10003a38
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + 0xc]
movzx eax, byte [eax + 0x1004c2c4]
mov ecx, dword [ebp - 0x10]
movzx edx, byte [ecx + 0x10]
xor edx, eax
mov bl, dl
mov byte [ecx + 0x10], bl
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + 0xd]
movzx eax, byte [eax + 0x1004c2c4]
mov ecx, dword [ebp - 0x10]
movzx edx, byte [ecx + 0x11]
xor edx, eax
mov bl, dl
mov byte [ecx + 0x11], bl
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + 0xe]
movzx eax, byte [eax + 0x1004c2c4]
mov ecx, dword [ebp - 0x10]
movzx edx, byte [ecx + 0x12]
xor edx, eax
mov bl, dl
mov byte [ecx + 0x12], bl
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + 0xf]
movzx eax, byte [eax + 0x1004c2c4]
mov ecx, dword [ebp - 0x10]
movzx edx, byte [ecx + 0x13]
xor edx, eax
mov bl, dl
mov byte [ecx + 0x13], bl
mov byte [ebp - 0x11], 0xc
movzx eax, byte [ebp - 0x11]
cmp eax, 0
jle 0x10003c08
movzx eax, byte [ebp - 0x11]
sub eax, 4
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ecx + eax]
movzx ecx, byte [ebp - 0x11]
mov edx, dword [ebp - 0x10]
movzx esi, byte [edx + ecx]
xor esi, eax
mov eax, esi
mov bl, al
mov byte [edx + ecx], bl
movzx eax, byte [ebp - 0x11]
sub eax, 3
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ecx + eax]
movzx ecx, byte [ebp - 0x11]
mov edx, dword [ebp - 0x10]
movzx esi, byte [edx + ecx + 1]
xor esi, eax
mov eax, esi
mov bl, al
mov byte [edx + ecx + 1], bl
movzx eax, byte [ebp - 0x11]
sub eax, 2
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ecx + eax]
movzx ecx, byte [ebp - 0x11]
mov edx, dword [ebp - 0x10]
movzx esi, byte [edx + ecx + 2]
xor esi, eax
mov eax, esi
mov bl, al
mov byte [edx + ecx + 2], bl
movzx eax, byte [ebp - 0x11]
sub eax, 1
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ecx + eax]
movzx ecx, byte [ebp - 0x11]
mov edx, dword [ebp - 0x10]
movzx esi, byte [edx + ecx + 3]
xor esi, eax
mov eax, esi
mov bl, al
mov byte [edx + ecx + 3], bl
movzx eax, byte [ebp - 0x11]
sub eax, 4
mov cl, al
mov byte [ebp - 0x11], cl
jmp 0x10003b5c
xor eax, eax
mov ecx, 0x8d
mov edx, dword [ebp - 0xc]
movzx edx, byte [edx]
sar edx, 1
mov esi, dword [ebp - 0xc]
movzx esi, byte [esi]
and esi, 1
cmp esi, 0
cmovne eax, ecx
xor edx, eax
mov bl, dl
mov eax, dword [ebp - 0xc]
mov byte [eax], bl
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + 0x1d]
movzx eax, byte [eax + 0x1004c2c4]
mov ecx, dword [ebp - 0xc]
movzx ecx, byte [ecx]
xor eax, ecx
mov ecx, dword [ebp - 0x10]
movzx edx, byte [ecx]
xor edx, eax
mov bl, dl
mov byte [ecx], bl
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + 0x1e]
movzx eax, byte [eax + 0x1004c2c4]
mov ecx, dword [ebp - 0x10]
movzx edx, byte [ecx + 1]
xor edx, eax
mov bl, dl
mov byte [ecx + 1], bl
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + 0x1f]
movzx eax, byte [eax + 0x1004c2c4]
mov ecx, dword [ebp - 0x10]
movzx edx, byte [ecx + 2]
xor edx, eax
mov bl, dl
mov byte [ecx + 2], bl
mov eax, dword [ebp - 0x10]
movzx eax, byte [eax + 0x1c]
movzx eax, byte [eax + 0x1004c2c4]
mov ecx, dword [ebp - 0x10]
movzx edx, byte [ecx + 3]
xor edx, eax
mov bl, dl
mov byte [ecx + 3], bl
add esp, 0xc
pop esi
pop ebx
pop ebp
ret