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

Disassembly:
push ebp
mov ecx, edx
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x3c
cmp edx, 0x10
mov dword [ebp - 0x10], eax
setne al
xor edx, edx
cmp ecx, 0x18
mov ebx, dword [ebp + 0xc]
setne dl
test eax, edx
je 0x42660c
cmp ecx, 0x20
jne 0x42696d
cmp ebx, 0x10
setne al
xor edx, edx
cmp ebx, 0x18
setne dl
test eax, edx
je 0x426627
cmp ebx, 0x20
jne 0x42694f
test ebx, ebx
mov eax, ebx
js 0x42690b
mov edi, eax
mov edx, ecx
sar edi, 2
test ecx, ecx
js 0x426903
mov eax, dword [ebp - 0x10]
sar edx, 2
cmp edx, edi
mov dword [ebp - 0x1c], edx
mov dword [eax + 0x3e8], edx
mov eax, edx
jl 0x426864
add eax, 6
cmp dword [ebp - 0x1c], 8
mov edx, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
mov dword [edx + 0x3ec], eax
je 0x42687f
cmp dword [ebp - 0x1c], 6
je 0x426913
cmp dword [ebp - 0x1c], 4
je 0x426931
mov dword [ebp - 0x18], 1
mov eax, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x14], 0
inc eax
imul eax, ebx
cmp eax, 0
jle 0x426788
mov dword [ebp - 0x24], eax
jmp 0x4266ec
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x14]
movzx edx, byte [ecx + eax*4]
movzx eax, byte [ecx + eax*4 + 1]
shl edx, 0x18
shl eax, 0x10
or edx, eax
movzx eax, byte [ecx + ebx*4 + 2]
shl eax, 8
or edx, eax
movzx eax, byte [ecx + ebx*4 + 3]
inc dword [ebp - 0x14]
or edx, eax
mov eax, dword [ebp - 0x10]
mov dword [eax + ebx*4], edx
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 0x24], eax
jle 0x426788
cmp dword [ebp - 0x14], edi
jl 0x4266ac
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x10]
mov eax, edx
mov esi, dword [ecx + edx*4 - 4]
cdq
idiv edi
test edx, edx
jne 0x42689a
mov eax, esi
mov ecx, esi
shr eax, 0x10
and eax, 0xff
movzx edx, ch
mov ecx, dword [ebp - 0x18]
movzx eax, byte [eax + str.cw]
mov ebx, esi
and ebx, 0xff
movzx edx, byte [edx + str.cw]
shr esi, 0x18
movzx esi, byte [esi + str.cw]
xor eax, ecx
shl eax, 8
or eax, edx
shl eax, 8
movzx edx, byte [ebx + str.cw]
or eax, edx
shl eax, 8
or esi, eax
mov eax, dword [ebp - 0x18]
and eax, 0x7f
add eax, eax
cmp byte [ebp - 0x18], 0
jns 0x426763
xor eax, 0x1b
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x10]
sub eax, edi
mov ebx, dword [ecx + eax*4]
xor esi, ebx
mov ebx, dword [ebp - 0x14]
inc dword [ebp - 0x14]
mov dword [ecx + ebx*4], esi
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 0x24], eax
jg 0x4266ec
cmp dword [ebp - 0x20], 0
mov dword [ebp - 0x14], 0
jl 0x42685c
mov dword [ebp - 0x34], 0
xor edi, edi
cmp dword [ebp - 0x1c], 0
jle 0x426847
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
sub eax, ecx
imul eax, edx
mov edx, dword [ebp - 0x10]
lea esi, [edx + eax*4]
mov eax, dword [ebp - 0x14]
mov ebx, dword [esi]
test eax, eax
je 0x42682a
mov ecx, dword [ebp - 0x14]
cmp dword [ebp - 0x20], ecx
je 0x42682a
mov eax, ebx
mov edx, ebx
shr eax, 0x10
shr edx, 0x18
and eax, 0xff
movzx ecx, bh
movzx edx, byte [edx + str.cw]
movzx eax, byte [eax + str.cw]
mov dword [ebp - 0x30], ecx
movzx ecx, bl
mov ebx, dword [eax*4 + 0x44fad0]
mov eax, dword [edx*4 + 0x44fed0]
mov edx, dword [ebp - 0x30]
xor ebx, eax
movzx eax, byte [edx + str.cw]
mov edx, dword [eax*4 + 0x44f6d0]
movzx eax, byte [ecx + str.cw]
xor ebx, edx
mov edx, dword [eax*4 + 0x44f2d0]
xor ebx, edx
mov ecx, dword [ebp - 0x34]
add esi, 4
mov edx, dword [ebp - 0x10]
lea eax, [edi + ecx]
inc edi
cmp dword [ebp - 0x1c], edi
mov dword [edx + eax*4 + 0x1e0], ebx
jg 0x4267c0
inc dword [ebp - 0x14]
mov ecx, dword [ebp - 0x1c]
add dword [ebp - 0x34], ecx
mov ebx, dword [ebp - 0x14]
cmp dword [ebp - 0x20], ebx
jge 0x4267a0
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, edi
mov edx, dword [ebp - 0x10]
add eax, 6
cmp dword [ebp - 0x1c], 8
mov dword [ebp - 0x20], eax
mov dword [edx + 0x3ec], eax
jne 0x426672
mov eax, 0x424ab0
mov dword [edx + 0x3c0], eax
mov eax, 0x425cb0
mov dword [edx + 0x3c4], eax
jmp 0x426686
cmp edx, 4
sete al
xor edx, edx
cmp edi, 6
setg dl
test eax, edx
je 0x426766
mov edx, esi
mov eax, esi
shr edx, 0x18
mov ebx, esi
shr eax, 0x10
and esi, 0xff
mov dword [ebp - 0x2c], esi
and eax, 0xff
movzx esi, byte [edx + str.cw]
movzx ebx, bh
movzx eax, byte [eax + str.cw]
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x28], ebx
shl esi, 8
or esi, eax
movzx eax, byte [ebx + str.cw]
shl esi, 8
or esi, eax
movzx eax, byte [edx + str.cw]
shl esi, 8
or esi, eax
jmp 0x426766
add edx, 3
jmp 0x426640
add eax, 3
jmp 0x426631
mov ecx, dword [ebp - 0x10]
mov eax, 0x424540
mov dword [ecx + 0x3c0], eax
mov eax, 0x425710
mov dword [ecx + 0x3c4], eax
jmp 0x426686
mov ebx, dword [ebp - 0x10]
mov eax, 0x4241c0
mov esi, 0x425370
mov dword [ebx + 0x3c0], eax
mov dword [ebx + 0x3c4], esi
jmp 0x426686
mov dword [esp], str.keylen__16__keylen__24__keylen__32
mov edx, 0x3a7
mov eax, str..._sshaes.c
mov dword [esp + 8], edx
mov dword [esp + 4], eax
call sub.msvcrt.dll__assert
mov dword [esp], str.blocklen__16__blocklen__24__blocklen__32
mov ebx, 0x3a6
mov ecx, str..._sshaes.c
mov dword [esp + 8], ebx
mov dword [esp + 4], ecx
call sub.msvcrt.dll__assert
nop
lea esi, [esi]