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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
movzx ecx, byte [eax]
mov byte [0x40b968], cl
movzx edx, byte [eax + 1]
mov byte [0x40b969], dl
movzx ecx, byte [eax + 2]
mov byte [0x40b96a], cl
movzx edx, byte [eax + 3]
mov byte [0x40b96b], dl
movzx ecx, byte [eax + 4]
mov byte [0x40b96c], cl
movzx edx, byte [eax + 5]
mov byte [0x40b96d], dl
movzx ecx, byte [eax + 6]
mov byte [0x40b96e], cl
movzx edx, byte [eax + 7]
mov byte [0x40b96f], dl
movzx ecx, byte [eax + 8]
mov byte [0x40b970], cl
movzx edx, byte [eax + 9]
mov byte [0x40b971], dl
movzx ecx, byte [eax + 0xa]
mov byte [0x40b972], cl
movzx edx, byte [eax + 0xb]
mov byte [0x40b973], dl
movzx ecx, byte [eax + 0xc]
mov byte [0x40b974], cl
movzx edx, byte [eax + 0xd]
mov byte [0x40b975], dl
movzx ecx, byte [eax + 0xe]
mov byte [0x40b976], cl
movzx edx, byte [eax + 0xf]
mov byte [0x40b977], dl
movzx ecx, byte [eax + 0x10]
mov byte [0x40b978], cl
movzx edx, byte [eax + 0x11]
mov byte [0x40b979], dl
movzx ecx, byte [eax + 0x12]
mov byte [0x40b97a], cl
movzx edx, byte [eax + 0x13]
mov byte [0x40b97b], dl
movzx ecx, byte [eax + 0x14]
mov byte [0x40b97c], cl
movzx edx, byte [eax + 0x15]
mov byte [0x40b97d], dl
movzx ecx, byte [eax + 0x16]
mov byte [0x40b97e], cl
movzx edx, byte [eax + 0x17]
mov byte [0x40b97f], dl
movzx ecx, byte [eax + 0x18]
mov byte [0x40b980], cl
movzx edx, byte [eax + 0x19]
mov byte [0x40b981], dl
movzx ecx, byte [eax + 0x1a]
mov byte [0x40b982], cl
movzx edx, byte [eax + 0x1b]
mov byte [0x40b983], dl
movzx ecx, byte [eax + 0x1c]
mov byte [0x40b984], cl
movzx edx, byte [eax + 0x1d]
mov byte [0x40b985], dl
movzx ecx, byte [eax + 0x1e]
mov byte [0x40b986], cl
movzx edx, byte [eax + 0x1f]
mov byte [0x40b987], dl
mov esi, 0xa
mov eax, 0x40b985
movzx ebx, byte [eax + 1]
mov cl, byte [eax - 1]
mov dl, byte [eax]
mov byte [ebp - 2], bl
movzx ebx, byte [eax + 2]
mov byte [ebp - 1], bl
lea edi, [esi - 2]
mov ebx, edi
and ebx, 7
mov dword [ebp - 0xc], ebx
jne 0x4011b3
movzx ebx, byte [ebp - 1]
movzx ebx, byte [ebx + str.cw]
movzx ecx, cl
movzx edx, dl
mov dword [ebp - 8], ecx
mov cl, byte [edx + str.cw]
movzx edx, byte [ebp - 2]
mov dl, byte [edx + str.cw]
mov byte [ebp - 2], bl
movzx ebx, byte [ebp - 8]
movzx ebx, byte [ebx + str.cw]
shr edi, 3
xor cl, byte [edi + 0x409248]
mov byte [ebp - 1], bl
mov ebx, dword [ebp - 0xc]
cmp ebx, 4
jne 0x4011e6
movzx edi, byte [ebp - 2]
movzx ebx, byte [edi + str.cw]
movzx edi, byte [ebp - 1]
mov byte [ebp - 2], bl
movzx ebx, byte [edi + str.cw]
movzx ecx, cl
mov cl, byte [ecx + str.cw]
movzx edx, dl
mov dl, byte [edx + str.cw]
mov byte [ebp - 1], bl
movzx ebx, byte [eax - 0x1d]
xor bl, cl
mov byte [eax + 3], bl
movzx ecx, byte [eax - 0x1c]
xor cl, dl
mov byte [eax + 4], cl
movzx edx, byte [eax - 0x1b]
xor dl, byte [ebp - 2]
lea edi, [esi - 1]
mov byte [eax + 5], dl
movzx ecx, byte [eax - 0x1a]
xor cl, byte [ebp - 1]
mov byte [eax + 6], cl
mov dl, byte [eax + 4]
mov cl, bl
movzx ebx, byte [eax + 5]
mov byte [ebp - 2], bl
movzx ebx, byte [eax + 6]
mov byte [ebp - 1], bl
mov ebx, edi
and ebx, 7
mov dword [ebp - 0xc], ebx
jne 0x40126d
movzx ebx, byte [ebp - 1]
movzx ebx, byte [ebx + str.cw]
movzx ecx, cl
movzx edx, dl
mov dword [ebp - 8], ecx
mov cl, byte [edx + str.cw]
movzx edx, byte [ebp - 2]
mov dl, byte [edx + str.cw]
mov byte [ebp - 2], bl
movzx ebx, byte [ebp - 8]
movzx ebx, byte [ebx + str.cw]
shr edi, 3
xor cl, byte [edi + 0x409248]
mov byte [ebp - 1], bl
mov ebx, dword [ebp - 0xc]
cmp ebx, 4
jne 0x4012a0
movzx edi, byte [ebp - 2]
movzx ebx, byte [edi + str.cw]
movzx edi, byte [ebp - 1]
mov byte [ebp - 2], bl
movzx ebx, byte [edi + str.cw]
movzx ecx, cl
mov cl, byte [ecx + str.cw]
movzx edx, dl
mov dl, byte [edx + str.cw]
mov byte [ebp - 1], bl
movzx ebx, byte [eax - 0x19]
xor bl, cl
mov byte [eax + 7], bl
movzx ecx, byte [eax - 0x18]
xor cl, dl
mov byte [eax + 8], cl
movzx edx, byte [eax - 0x17]
xor dl, byte [ebp - 2]
mov edi, esi
mov byte [eax + 9], dl
mov dl, byte [eax - 0x16]
xor dl, byte [ebp - 1]
and edi, 7
mov byte [eax + 0xa], dl
movzx ebx, byte [eax + 8]
mov cl, byte [eax + 7]
mov byte [ebp - 3], bl
movzx ebx, byte [eax + 9]
mov byte [ebp - 2], bl
jne 0x40131b
movzx edx, dl
movzx edx, byte [edx + str.cw]
movzx ecx, cl
movzx ebx, bl
mov bl, byte [ebx + str.cw]
mov dword [ebp - 8], ecx
movzx ecx, byte [ebp - 3]
mov cl, byte [ecx + str.cw]
mov byte [ebp - 3], bl
mov byte [ebp - 2], dl
movzx edx, byte [ebp - 8]
mov dl, byte [edx + str.cw]
mov ebx, esi
shr ebx, 3
xor cl, byte [ebx + 0x409248]
cmp edi, 4
jne 0x40134e
movzx edi, byte [ebp - 3]
movzx ebx, byte [edi + str.cw]
movzx edi, byte [ebp - 2]
mov byte [ebp - 3], bl
movzx ebx, byte [edi + str.cw]
movzx ecx, cl
mov cl, byte [ecx + str.cw]
movzx edx, dl
mov dl, byte [edx + str.cw]
mov byte [ebp - 2], bl
movzx ebx, byte [eax - 0x15]
xor bl, cl
mov byte [eax + 0xb], bl
movzx ecx, byte [eax - 0x14]
xor cl, byte [ebp - 3]
lea edi, [esi + 1]
mov byte [eax + 0xc], cl
movzx ecx, byte [eax - 0x13]
xor cl, byte [ebp - 2]
mov byte [eax + 0xd], cl
mov cl, byte [eax - 0x12]
xor cl, dl
mov byte [eax + 0xe], cl
movzx ebx, byte [eax + 0xc]
mov dl, byte [eax + 0xb]
mov byte [ebp - 1], cl
mov ecx, edi
and ecx, 7
mov byte [ebp - 3], bl
mov bl, byte [eax + 0xd]
mov dword [ebp - 0xc], ecx
jne 0x4013cc
movzx ebx, bl
movzx ebx, byte [ebx + str.cw]
movzx ecx, dl
movzx edx, byte [ebp - 3]
mov dl, byte [edx + str.cw]
movzx ecx, cl
mov cl, byte [ecx + str.cw]
mov byte [ebp - 3], bl
movzx ebx, byte [ebp - 1]
mov bl, byte [ebx + str.cw]
shr edi, 3
xor dl, byte [edi + 0x409248]
mov byte [ebp - 1], cl
mov ecx, dword [ebp - 0xc]
cmp ecx, 4
jne 0x4013ff
movzx ecx, byte [ebp - 3]
movzx ecx, byte [ecx + str.cw]
mov byte [ebp - 3], cl
movzx ecx, bl
mov bl, byte [ecx + str.cw]
movzx ecx, byte [ebp - 1]
movzx ecx, byte [ecx + str.cw]
movzx edx, dl
mov dl, byte [edx + str.cw]
mov byte [ebp - 1], cl
movzx ecx, byte [eax - 0x11]
xor cl, dl
mov byte [eax + 0xf], cl
movzx edx, byte [eax - 0x10]
xor dl, byte [ebp - 3]
add esi, 4
mov byte [eax + 0x10], dl
movzx ecx, byte [eax - 0xf]
xor cl, bl
mov byte [eax + 0x11], cl
movzx edx, byte [eax - 0xe]
xor dl, byte [ebp - 1]
lea ecx, [esi - 2]
mov byte [eax + 0x12], dl
add eax, 0x10
cmp ecx, 0x3c
jb 0x401152
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret