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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [ebp + 0xc]
push ebx
mov ebx, ecx
push esi
push edi
mov dword [ebp - 0xc], ebx
mov dword [ebx + 0x3c8], 0x10
mov dword [ebx + 0x3cc], 0x10
movups xmm0, xmmword [eax]
movups xmmword [ebx + 0x3d4], xmm0
movups xmm0, xmmword [eax]
movups xmmword [ebx + 0x3f4], xmm0
mov eax, dword [ebx + 0x3c8]
mov ecx, dword [ebx + 0x3cc]
cmp eax, 0x10
je 0x401790
cmp eax, 0x18
je 0x401786
mov eax, 0xe
jmp 0x4017a9
xor eax, eax
cmp ecx, 0x20
sete al
jmp 0x4017a2
cmp ecx, 0x10
jne 0x40179a
lea eax, [ecx - 6]
jmp 0x4017a9
xor eax, eax
cmp ecx, 0x18
setne al
lea eax, [eax*2 + 0xc]
mov dword [ebx + 0x3d0], eax
xor esi, esi
mov eax, ecx
mov ecx, dword [ebx + 0x3d0]
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [ebp + 0xc], eax
test ecx, ecx
js 0x4017ed
lea edx, [ebx + 8]
nop dword [eax]
test eax, eax
jle 0x4017df
mov ecx, eax
mov edi, edx
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebx + 0x3d0]
inc esi
add edx, 0x20
cmp esi, ecx
jle 0x4017d0
xor edx, edx
test ecx, ecx
js 0x40181d
lea esi, [ebx + 0x1e8]
nop dword [eax]
test eax, eax
jle 0x40180f
mov ecx, eax
mov edi, esi
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebx + 0x3d0]
inc edx
add esi, 0x20
cmp edx, ecx
jle 0x401800
inc ecx
mov esi, str.719414A271BAF93F
imul ecx, eax
mov eax, dword [ebx + 0x3c8]
cdq
and edx, 3
add eax, edx
lea edx, [ebx + 0x414]
sar eax, 2
mov edi, edx
mov dword [ebp - 4], ecx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], edx
test eax, eax
jle 0x4018d5
mov ebx, eax
movzx eax, byte [esi]
lea esi, [esi + 4]
shl eax, 0x18
lea edi, [edi + 4]
mov dword [edi - 4], eax
movzx edx, byte [esi - 3]
shl edx, 0x10
or edx, eax
mov dword [edi - 4], edx
movzx ecx, byte [esi - 2]
shl ecx, 8
or ecx, edx
mov dword [edi - 4], ecx
movzx eax, byte [esi - 1]
or eax, ecx
mov dword [edi - 4], eax
sub ebx, 1
jne 0x401850
mov ecx, dword [ebp - 0x14]
xor edi, edi
mov ebx, dword [ebp - 0xc]
mov dword [ebp - 8], ecx
cmp edi, dword [ebp - 4]
jge 0x401a5c
mov eax, edi
mov ecx, dword [ecx]
cdq
inc edi
idiv dword [ebp + 0xc]
lea esi, [edx + eax*8]
mov dword [ebx + esi*4 + 8], ecx
mov ecx, dword [ebx + 0x3d0]
mov esi, dword [ebp - 0x10]
sub ecx, eax
mov eax, dword [ebp - 8]
lea ecx, [edx + ecx*8]
mov eax, dword [eax]
mov dword [ebx + ecx*4 + 0x1e8], eax
mov ecx, dword [ebp - 8]
add ecx, 4
mov dword [ebp - 8], ecx
cmp edi, esi
jl 0x401890
mov ecx, dword [ebp - 4]
jmp 0x4018d9
xor edi, edi
mov esi, eax
cmp edi, ecx
jge 0x401a5c
mov dword [ebp - 8], 0x407c28
nop dword [eax + eax]
mov edx, dword [ebx + esi*4 + 0x410]
mov eax, edx
sar eax, 0x10
movzx eax, al
movsx ecx, byte [eax + 0x4066c8]
mov eax, dword [ebp - 8]
inc dword [ebp - 8]
movsx eax, byte [eax]
xor ecx, eax
mov eax, edx
sar eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x4066c8]
xor ecx, eax
movzx eax, dl
shl ecx, 8
sar edx, 0x18
movzx eax, byte [eax + 0x4066c8]
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x4066c8]
xor ecx, eax
xor dword [ebx + 0x414], ecx
cmp esi, 8
je 0x40197b
cmp esi, 1
jle 0x40196e
lea ecx, [ebx + 0x418]
lea edx, [esi - 1]
nop
mov eax, dword [ecx - 4]
lea ecx, [ecx + 4]
xor dword [ecx - 4], eax
sub edx, 1
jne 0x401960
test esi, esi
jle 0x401a53
jmp 0x4019ff
lea eax, [ebx + 0x418]
mov edx, 3
mov ecx, dword [eax - 4]
lea eax, [eax + 4]
xor dword [eax - 4], ecx
sub edx, 1
jne 0x401986
mov edx, dword [ebx + 0x420]
mov eax, edx
sar eax, 0x18
movzx eax, al
movsx ecx, byte [eax + 0x4066c8]
mov eax, edx
sar eax, 0x10
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x4066c8]
xor ecx, eax
mov eax, edx
sar eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x4066c8]
xor ecx, eax
movzx eax, dl
shl ecx, 8
mov edx, 3
movzx eax, byte [eax + 0x4066c8]
xor ecx, eax
xor dword [ebx + 0x424], ecx
lea ecx, [ebx + 0x428]
mov eax, dword [ecx - 4]
lea ecx, [ecx + 4]
xor dword [ecx - 4], eax
sub edx, 1
jne 0x4019f1
lea ecx, [ebx + 0x414]
mov dword [ebp - 0x14], 0
mov dword [ebp - 0xc], ecx
nop
cmp edi, dword [ebp - 4]
jge 0x401a5c
mov eax, edi
mov ecx, dword [ecx]
cdq
inc edi
idiv dword [ebp + 0xc]
lea esi, [edx + eax*8]
mov dword [ebx + esi*4 + 8], ecx
mov ecx, dword [ebx + 0x3d0]
mov esi, dword [ebp - 0x10]
sub ecx, eax
mov eax, dword [ebp - 0xc]
lea ecx, [edx + ecx*8]
mov eax, dword [eax]
mov dword [ebx + ecx*4 + 0x1e8], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
inc eax
add ecx, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 0xc], ecx
cmp eax, esi
jl 0x401a10
cmp edi, dword [ebp - 4]
jl 0x4018f0
mov ecx, 1
mov dword [ebp - 0x14], ecx
cmp dword [ebx + 0x3d0], ecx
jle 0x401af4
mov eax, dword [ebp + 0xc]
lea edx, [ebx + 0x208]
mov dword [ebp - 0x10], edx
nop dword [eax]
test eax, eax
jle 0x401ad5
mov esi, edx
mov edi, eax
mov edx, dword [esi]
lea esi, [esi + 4]
mov eax, edx
sar eax, 0x18
movzx ecx, al
mov eax, edx
sar eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x408048]
xor ecx, dword [eax*4 + 0x4067c8]
mov eax, edx
sar eax, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x406fc8]
movzx eax, dl
xor ecx, dword [eax*4 + 0x407c48]
mov dword [esi - 4], ecx
sub edi, 1
jne 0x401a88
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
inc ecx
add edx, 0x20
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], edx
cmp ecx, dword [ebx + 0x3d0]
jl 0x401a80
pop edi
pop esi
mov byte [ebx + 4], 1
pop ebx
mov esp, ebp
pop ebp
ret 0x10
pop edi
pop esi
mov byte [ebx + 4], cl
pop ebx
mov esp, ebp
pop ebp
ret 0x10