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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
mov esi, dword [ecx + 0x980]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 8], esi
test esi, esi
je 0x42a3e2
mov esi, eax
imul eax, eax, 0x88
xor edi, edi
mov eax, dword [ecx + eax + 0x180]
mov dword [esp + 0xc], eax
mov eax, esi
shr ax, 8
mov byte [esp + 0x1f], al
movzx eax, ax
mov dword [esp + 0x20], eax
lea eax, [ecx + 0x180]
mov dword [esp], eax
jmp 0x42a043
add dword [esp], 0x88
mov edi, ebp
cmp ebp, dword [esp + 8]
je 0x42a3e2
mov eax, dword [esp]
mov eax, dword [eax]
mov dword [esp + 4], eax
mov edx, eax
sub edx, dword [esp + 0xc]
jne 0x42a15d
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 8]
mov eax, edi
xor eax, edx
mov ebp, edx
mov esi, edx
shr ebp, 8
movzx eax, al
shr esi, 0x10
movzx eax, byte [eax + str.cw]
mov dword [esp + 4], esi
mov ecx, eax
xor eax, ebp
movzx eax, al
xor ecx, 0x63
movzx ebx, byte [eax + str.cw]
xor ebx, ecx
movzx ecx, cl
mov eax, ebx
xor al, byte [esp + 4]
xor bl, byte [ecx + str.cw]
movzx eax, al
movzx ecx, bl
xor bl, byte [eax + str.cw]
mov eax, ebx
xor bl, byte [ecx + str.cw]
movzx ecx, bl
mov ebx, edx
xor dl, byte [esp + 0x18]
shr ebx, 0x18
movzx edx, dl
mov dword [esp + 0x10], ecx
xor eax, ebx
mov esi, ebx
movzx eax, al
movzx ebx, byte [eax + str.cw]
xor ebx, ecx
mov ecx, dword [esp + 0x20]
mov eax, ebx
movzx ebx, byte [esp + 0x1f]
xor bl, byte [edx + str.cw]
mov edx, ebx
xor bl, byte [ecx + str.cw]
xor edx, ebp
movzx edx, dl
movzx ecx, byte [edx + str.cw]
xor ecx, ebx
movzx ebx, bl
mov edx, ecx
xor dl, byte [esp + 4]
xor cl, byte [ebx + str.cw]
movzx edx, dl
movzx ebx, cl
xor cl, byte [edx + str.cw]
mov edx, ecx
xor cl, byte [ebx + str.cw]
xor edx, esi
movzx ebx, cl
mov ecx, dword [esp + 0x10]
movzx edx, dl
movzx esi, byte [edx + str.cw]
mov edx, eax
xor al, byte [ecx + str.cw]
movzx eax, al
shl edx, 8
xor esi, ebx
or edx, eax
mov ecx, esi
mov eax, esi
xor cl, byte [ebx + str.cw]
movzx edx, dx
shl eax, 8
movzx esi, cl
or eax, esi
movzx eax, ax
sub edx, eax
lea ebp, [edi + 1]
test edx, edx
jle 0x42a030
cmp ebp, dword [esp + 8]
jae 0x42a3de
mov dword [esp], edi
mov edi, ebp
lea esi, [esi]
nop
imul eax, edi, 0x88
mov esi, dword [esp + 0x24]
mov ebp, dword [esi + eax + 0x180]
mov edx, ebp
sub edx, dword [esp + 0xc]
jne 0x42a2a8
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 8]
mov eax, edi
xor eax, edx
mov esi, edx
movzx eax, al
shr esi, 8
movzx eax, byte [eax + str.cw]
mov dword [esp + 4], esi
mov esi, edx
shr esi, 0x18
mov ecx, eax
xor al, byte [esp + 4]
movzx eax, al
xor ecx, 0x63
movzx ebx, byte [eax + str.cw]
xor ebx, ecx
movzx ecx, cl
mov eax, ebx
xor bl, byte [ecx + str.cw]
movzx ecx, bl
mov ebx, edx
xor dl, byte [esp + 0x18]
shr ebx, 0x10
movzx edx, dl
mov dword [esp + 0x10], ebx
xor al, byte [esp + 0x10]
movzx eax, al
movzx ebx, byte [eax + str.cw]
xor ebx, ecx
mov eax, ebx
xor bl, byte [ecx + str.cw]
xor eax, esi
movzx ecx, bl
movzx eax, al
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x20]
xor bl, byte [eax + str.cw]
mov eax, ebx
movzx ebx, byte [esp + 0x1f]
xor bl, byte [edx + str.cw]
mov edx, ebx
xor dl, byte [esp + 4]
xor bl, byte [ecx + str.cw]
movzx edx, dl
movzx ecx, byte [edx + str.cw]
xor ecx, ebx
movzx ebx, bl
mov edx, ecx
xor dl, byte [esp + 0x10]
xor cl, byte [ebx + str.cw]
movzx edx, dl
movzx ebx, cl
xor cl, byte [edx + str.cw]
mov edx, ecx
xor cl, byte [ebx + str.cw]
xor edx, esi
movzx ebx, cl
mov ecx, dword [esp + 0x28]
movzx edx, dl
movzx esi, byte [edx + str.cw]
mov edx, eax
xor al, byte [ecx + str.cw]
movzx eax, al
shl edx, 8
xor esi, ebx
or edx, eax
mov ecx, esi
mov eax, esi
xor cl, byte [ebx + str.cw]
movzx edx, dx
shl eax, 8
movzx esi, cl
or eax, esi
movzx eax, ax
sub edx, eax
test edx, edx
jle 0x42a3ce
imul eax, dword [esp], 0x88
mov esi, dword [esp + 0x24]
mov edx, ebp
sub edx, dword [esi + eax + 0x180]
jne 0x42a3c3
mov esi, dword [esp + 0x14]
mov eax, edi
mov edx, dword [esi + 8]
xor eax, edx
mov ebp, edx
mov esi, edx
shr ebp, 8
movzx eax, al
shr esi, 0x10
movzx eax, byte [eax + str.cw]
mov dword [esp + 4], esi
mov ecx, eax
xor eax, ebp
movzx eax, al
xor ecx, 0x63
movzx ebx, byte [eax + str.cw]
xor ebx, ecx
movzx ecx, cl
mov eax, ebx
xor al, byte [esp + 4]
xor bl, byte [ecx + str.cw]
movzx eax, al
movzx ecx, bl
xor bl, byte [eax + str.cw]
mov eax, ebx
xor bl, byte [ecx + str.cw]
movzx ecx, bl
mov ebx, edx
xor dl, byte [esp]
shr ebx, 0x18
movzx edx, dl
mov dword [esp + 0x10], ecx
xor eax, ebx
mov esi, ebx
movzx edx, byte [edx + str.cw]
movzx eax, al
movzx ebx, byte [eax + str.cw]
xor ebx, ecx
mov eax, ebx
mov ebx, edx
xor edx, ebp
movzx edx, dl
xor ebx, 0x63
movzx ecx, byte [edx + str.cw]
xor ecx, ebx
movzx ebx, bl
mov edx, ecx
xor dl, byte [esp + 4]
xor cl, byte [ebx + str.cw]
movzx edx, dl
movzx ebx, cl
xor cl, byte [edx + str.cw]
mov edx, ecx
xor cl, byte [ebx + str.cw]
xor edx, esi
movzx ebx, cl
mov ecx, dword [esp + 0x10]
movzx edx, dl
movzx esi, byte [edx + str.cw]
mov edx, eax
xor al, byte [ecx + str.cw]
movzx eax, al
shl edx, 8
xor esi, ebx
or edx, eax
mov ecx, esi
mov eax, esi
xor cl, byte [ebx + str.cw]
movzx edx, dx
shl eax, 8
movzx esi, cl
or eax, esi
movzx eax, ax
sub edx, eax
mov eax, dword [esp]
test edx, edx
cmovs eax, edi
mov dword [esp], eax
add edi, 1
cmp edi, dword [esp + 8]
jne 0x42a180
mov edi, dword [esp]
mov dword [esp + 8], edi
mov eax, dword [esp + 8]
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret