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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10c
mov ebp, dword [esp + 0x124]
xorps xmm0, xmm0
mov dword [esp], 0
movups xmmword [esp + 0xfc], xmm0
movups xmmword [esp + 0xec], xmm0
movups xmmword [esp + 0xdc], xmm0
movups xmmword [esp + 0xcc], xmm0
movups xmmword [esp + 0xbc], xmm0
movups xmmword [esp + 0xac], xmm0
movups xmmword [esp + 0x9c], xmm0
movups xmmword [esp + 0x8c], xmm0
movups xmmword [esp + 0x7c], xmm0
movups xmmword [esp + 0x6c], xmm0
movups xmmword [esp + 0x5c], xmm0
movups xmmword [esp + 0x4c], xmm0
movups xmmword [esp + 0x3c], xmm0
movups xmmword [esp + 0x2c], xmm0
movups xmmword [esp + 0x1c], xmm0
test ebp, ebp
je 0x4225ec
mov dword [esp + 0xc], ecx
mov esi, dword [esp + 0x128]
mov ecx, dword [esp + 0x120]
mov eax, 4
mov edi, ebp
nop
cmp eax, 0xf4
je 0x4225c2
cmp eax, ecx
ja 0x4225db
mov ebx, dword [edx + eax - 4]
mov dword [esp + eax + 0x18], ebx
add eax, 4
dec edi
jne 0x422350
lea eax, [esi*4 + 4]
cmp eax, ebp
mov dword [esp + 0x18], eax
jbe 0x422581
mov edi, dword [esp + 0x124]
mov esi, 0xffffff10
lea ebp, [edi*4]
lea ebx, [esp + edi*4 + 0x1c]
mov dword [esp + 8], ebp
mov dword [esp + 0x14], ebx
nop word cs:[eax + eax]
nop dword [eax]
lea eax, [ebp + esi + 0xec]
cmp eax, 0xf0
jae 0x42259f
mov ch, byte [ebx + esi + 0xec]
lea edx, [ebp + esi + 0xed]
mov eax, 0xf0
cmp edx, 0xef
mov byte [esp], ch
ja 0x4225ad
mov cl, byte [ebx + esi + 0xed]
lea edx, [ebp + esi + 0xee]
cmp edx, 0xef
mov byte [esp + 4], cl
mov byte [esp + 1], cl
ja 0x4225ad
mov cl, byte [ebx + esi + 0xee]
lea edx, [ebp + esi + 0xef]
cmp edx, 0xef
mov byte [esp + 2], cl
ja 0x4225ad
mov bh, byte [ebx + esi + 0xef]
mov ebp, dword [esp + 0x124]
mov eax, edi
xor edx, edx
mov byte [esp + 3], bh
div ebp
movzx ebp, ch
test edx, edx
je 0x4224b0
cmp dword [esp + 0x124], 7
jb 0x42255a
mov eax, ebp
mov ebp, dword [esp + 8]
mov bl, byte [esp + 4]
cmp edx, 4
jne 0x422508
movzx ecx, cl
movzx edx, bl
mov dword [esp + 0x10], ecx
movzx ecx, bh
movzx ebx, byte [edx + str.cw]
mov dword [esp + 4], ecx
mov ch, byte [eax + str.cw]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 4]
mov cl, byte [eax + str.cw]
mov byte [esp], ch
mov byte [esp + 1], bl
mov bh, byte [edx + str.cw]
mov byte [esp + 2], cl
mov byte [esp + 3], bh
test esi, esi
jne 0x42250c
jmp 0x422566
push 3
mov dword [esp + 8], eax
lea eax, [esp + 5]
push eax
push 1
call fcn.00423330
add esp, 0xc
movzx ecx, byte [esp + 1]
mov bh, byte [ebp + str.cw]
mov ebp, dword [esp + 4]
movzx eax, byte [esp]
mov bl, byte [ecx + str.cw]
mov ch, byte [ebp + 0x55d330]
mov ebp, dword [esp + 8]
mov byte [esp + 1], bl
xor ch, byte [eax + str.cw]
movzx edx, byte [esp + 2]
mov cl, byte [edx + str.cw]
mov byte [esp + 2], cl
mov byte [esp + 3], bh
mov byte [esp], ch
test esi, esi
je 0x422566
xor ch, byte [esp + esi + 0x10c]
mov eax, dword [esp + 0x14]
inc edi
mov byte [eax + esi + 0xf0], ch
xor bl, byte [esp + esi + 0x10d]
mov byte [eax + esi + 0xf1], bl
xor cl, byte [esp + esi + 0x10e]
mov byte [eax + esi + 0xf2], cl
xor bh, byte [esp + esi + 0x10f]
mov byte [eax + esi + 0xf3], bh
add esi, 4
cmp dword [esp + 0x18], edi
mov ebx, eax
jne 0x4223b0
jmp 0x422581
mov ebp, dword [esp + 8]
mov bl, byte [esp + 4]
test esi, esi
jne 0x42250c
add esi, 0xf0
push 0x55d530
push 0xf0
push esi
call fcn.0051eec0
add esp, 0xc
ud2
lea eax, [esp + 0x1c]
push 0xf0
push eax
push dword [esp + 0x14]
call fcn.00517140
add esp, 0x118
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x124]
lea eax, [esi + eax*4 + 0xec]
push 0x55d540
push 0xf0
push eax
call fcn.0051eec0
add esp, 0xc
ud2
push 0x55d550
push 0xf0
push 0xf4
call fcn.0051f230
add esp, 0xc
ud2
push 0x55d560
push ecx
push eax
call fcn.0051f230
add esp, 0xc
ud2
mov eax, 0xfffffffc
jmp 0x4225ad