Function at 0x401590
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
push edi
mov edi, dword [0x445148]
mov esi, 0x445150
sub esi, edi
mov ecx, edi
mov ebx, 4
nop dword [eax]
mov edx, 4
mov al, byte [esi + ecx]
xor byte [ecx], al
inc ecx
sub edx, 1
jne 0x4015b5
sub ebx, 1
jne 0x4015b0
mov esi, 0x445160
mov dword [ebp - 0x10], 9
mov dword [ebp - 0xc], esi
mov ebx, edi
mov dword [ebp - 8], 4
nop dword [eax]
mov ecx, ebx
mov edx, 4
nop word [eax + eax]
movzx eax, byte [ecx]
lea ecx, [ecx + 4]
mov al, byte [eax + 0x43d9e0]
mov byte [ecx - 4], al
sub edx, 1
jne 0x4015f0
inc ebx
sub dword [ebp - 8], 1
jne 0x4015e0
movzx eax, byte [edi + 5]
lea esi, [edx + 4]
mov cl, byte [edi + 1]
mov byte [edi + 1], al
movzx eax, byte [edi + 9]
mov byte [edi + 5], al
movzx eax, byte [edi + 0xd]
mov byte [edi + 9], al
movzx eax, byte [edi + 0xa]
mov byte [edi + 0xd], cl
mov cl, byte [edi + 2]
mov byte [edi + 2], al
movzx eax, byte [edi + 0xe]
mov byte [edi + 0xa], cl
mov cl, byte [edi + 6]
mov byte [edi + 6], al
movzx eax, byte [edi + 0xf]
mov byte [edi + 0xe], cl
mov cl, byte [edi + 3]
mov byte [edi + 3], al
movzx eax, byte [edi + 0xb]
mov byte [edi + 0xf], al
movzx eax, byte [edi + 7]
mov byte [edi + 0xb], al
mov byte [edi + 7], cl
add edi, 2
mov bh, byte [edi + 1]
lea edi, [edi + 4]
mov al, byte [edi - 6]
mov bl, bh
mov ch, byte [edi - 4]
mov cl, al
mov dl, byte [edi - 5]
xor bl, ch
mov byte [ebp - 1], al
xor cl, dl
mov dh, bl
xor dh, al
mov al, cl
shr al, 7
add cl, cl
movzx eax, al
xor dh, dl
imul eax, eax, 0x1b
xor al, cl
mov cl, dl
xor al, byte [ebp - 1]
xor cl, ch
xor al, dh
mov byte [edi - 6], al
mov al, cl
shr al, 7
add cl, cl
movzx eax, al
imul eax, eax, 0x1b
xor al, cl
mov cl, byte [ebp - 1]
xor al, dl
xor cl, bh
xor al, dh
mov byte [edi - 5], al
mov al, bl
shr al, 7
add bl, bl
movzx eax, al
imul eax, eax, 0x1b
xor al, bl
xor al, ch
xor al, dh
mov byte [edi - 4], al
mov al, cl
shr al, 7
add cl, cl
movzx eax, al
imul eax, eax, 0x1b
xor al, cl
xor al, bh
xor al, dh
mov byte [edi - 3], al
sub esi, 1
jne 0x401661
mov edi, dword [0x445148]
mov ebx, 4
mov esi, dword [ebp - 0xc]
mov eax, edi
nop dword [eax]
mov edx, 4
mov cl, byte [esi]
inc esi
xor byte [eax], cl
inc eax
sub edx, 1
jne 0x401705
mov dword [ebp - 0xc], esi
sub ebx, 1
jne 0x401700
sub dword [ebp - 0x10], 1
jne 0x4015d4
mov esi, edi
lea ebx, [edx + 4]
nop word [eax + eax]
mov ecx, esi
mov edx, 4
nop word [eax + eax]
movzx eax, byte [ecx]
lea ecx, [ecx + 4]
mov al, byte [eax + 0x43d9e0]
mov byte [ecx - 4], al
sub edx, 1
jne 0x401740
inc esi
sub ebx, 1
jne 0x401730
movzx eax, byte [edi + 5]
lea esi, [ebx + 4]
mov cl, byte [edi + 1]
mov edx, 0x4451f0
mov byte [edi + 1], al
sub edx, edi
movzx eax, byte [edi + 9]
mov byte [edi + 5], al
movzx eax, byte [edi + 0xd]
mov byte [edi + 9], al
movzx eax, byte [edi + 0xa]
mov byte [edi + 0xd], cl
mov cl, byte [edi + 2]
mov byte [edi + 2], al
movzx eax, byte [edi + 0xe]
mov byte [edi + 0xa], cl
mov cl, byte [edi + 6]
mov byte [edi + 6], al
movzx eax, byte [edi + 0xf]
mov byte [edi + 0xe], cl
mov cl, byte [edi + 3]
mov byte [edi + 3], al
movzx eax, byte [edi + 0xb]
mov byte [edi + 0xf], al
movzx eax, byte [edi + 7]
mov byte [edi + 0xb], al
mov byte [edi + 7], cl
mov ecx, 4
nop dword [eax]
mov al, byte [edx + edi]
xor byte [edi], al
inc edi
sub ecx, 1
jne 0x4017c0
sub esi, 1
jne 0x4017b4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret