Function at 0x40f390
Capabilities:
Encrypt data using aes
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x10
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
test ecx, ecx
je 0x40fed3
test eax, eax
je 0x40fed3
mov edx, edi
and edx, 0xffffffbf
cmp edx, 0x80
jne 0x40f538
cmp edi, 0x80
je 0x40f558
cmp edi, 0xc0
jne 0x40f544
mov dword [eax + 0xf0], 0xc
movzx edx, byte [ecx]
movzx ebx, byte [ecx + 1]
shl edx, 0x18
shl ebx, 0x10
xor edx, ebx
movzx ebx, byte [ecx + 3]
xor edx, ebx
movzx ebx, byte [ecx + 2]
shl ebx, 8
xor edx, ebx
mov dword [eax], edx
movzx ebx, byte [ecx + 4]
movzx esi, byte [ecx + 5]
shl ebx, 0x18
shl esi, 0x10
xor ebx, esi
movzx esi, byte [ecx + 7]
xor ebx, esi
movzx esi, byte [ecx + 6]
shl esi, 8
xor ebx, esi
mov dword [eax + 4], ebx
movzx esi, byte [ecx + 8]
mov dword [esp], ebx
movzx ebx, byte [ecx + 9]
shl esi, 0x18
shl ebx, 0x10
xor esi, ebx
movzx ebx, byte [ecx + 0xb]
xor esi, ebx
movzx ebx, byte [ecx + 0xa]
shl ebx, 8
xor esi, ebx
mov dword [eax + 8], esi
movzx ebx, byte [ecx + 0xc]
shl ebx, 0x18
mov ebp, ebx
movzx ebx, byte [ecx + 0xd]
shl ebx, 0x10
xor ebx, ebp
movzx ebp, byte [ecx + 0xf]
xor ebx, ebp
movzx ebp, byte [ecx + 0xe]
shl ebp, 8
xor ebx, ebp
mov dword [esp + 8], ebx
mov dword [eax + 0xc], ebx
cmp edi, 0x80
je 0x40f570
movzx ebx, byte [ecx + 0x10]
shl ebx, 0x18
mov ebp, ebx
movzx ebx, byte [ecx + 0x11]
shl ebx, 0x10
xor ebx, ebp
movzx ebp, byte [ecx + 0x13]
xor ebx, ebp
movzx ebp, byte [ecx + 0x12]
shl ebp, 8
xor ebx, ebp
mov dword [eax + 0x10], ebx
movzx ebx, byte [ecx + 0x14]
shl ebx, 0x18
mov ebp, ebx
movzx ebx, byte [ecx + 0x15]
shl ebx, 0x10
xor ebx, ebp
movzx ebp, byte [ecx + 0x17]
xor ebx, ebp
movzx ebp, byte [ecx + 0x16]
shl ebp, 8
xor ebx, ebp
mov dword [eax + 0x14], ebx
cmp edi, 0xc0
je 0x40fab0
movzx ebx, byte [ecx + 0x18]
shl ebx, 0x18
mov ebp, ebx
movzx ebx, byte [ecx + 0x19]
shl ebx, 0x10
xor ebx, ebp
movzx ebp, byte [ecx + 0x1b]
xor ebx, ebp
movzx ebp, byte [ecx + 0x1a]
shl ebp, 8
xor ebx, ebp
mov dword [eax + 0x18], ebx
movzx ebp, byte [ecx + 0x1c]
mov ebx, ebp
movzx ebp, byte [ecx + 0x1d]
shl ebx, 0x18
shl ebp, 0x10
xor ebp, ebx
movzx ebx, byte [ecx + 0x1f]
xor ebx, ebp
movzx ebp, byte [ecx + 0x1e]
shl ebp, 8
xor ebx, ebp
mov dword [eax + 0x1c], ebx
cmp edi, 0x100
je 0x40f9b0
xor eax, eax
add esp, 0x10
pop ebx
pop esi
pop edi
pop ebp
ret
cmp edi, 0x100
jne 0x40fedd
mov dword [eax + 0xf0], 0xe
jmp 0x40f3e6
mov dword [eax + 0xf0], 0xa
jmp 0x40f3e6
movzx ecx, bl
xor edx, 0x1000000
mov edi, dword [ecx*4 + 0x42c400]
mov ecx, ebx
shr ecx, 0x18
and edi, 0xff00
xor edx, edi
movzx edi, byte [ecx*4 + 0x42c000]
mov ecx, ebx
shr ecx, 0x10
movzx ecx, cl
xor edx, edi
mov edi, dword [ecx*4 + 0x42bc00]
mov ecx, dword [esp]
and edi, 0xff000000
xor edi, edx
movzx edx, bh
mov edx, dword [edx*4 + 0x42b800]
and edx, 0xff0000
xor edi, edx
xor ecx, edi
mov dword [eax + 0x10], edi
xor edi, 0x2000000
mov edx, ecx
mov dword [eax + 0x14], ecx
xor edx, esi
xor ebx, edx
mov dword [eax + 0x18], edx
movzx edx, bl
mov dword [eax + 0x1c], ebx
mov edx, dword [edx*4 + 0x42c400]
and edx, 0xff00
xor edi, edx
mov edx, ebx
shr edx, 0x18
movzx edx, byte [edx*4 + 0x42c000]
xor edi, edx
mov edx, ebx
shr edx, 0x10
movzx edx, dl
mov edx, dword [edx*4 + 0x42bc00]
and edx, 0xff000000
xor edi, edx
movzx edx, bh
mov edx, dword [edx*4 + 0x42b800]
and edx, 0xff0000
xor edi, edx
xor esi, edi
xor ecx, edi
mov dword [eax + 0x20], edi
xor edi, 0x4000000
mov edx, esi
mov dword [esp], ecx
xor edx, ebx
mov dword [eax + 0x24], ecx
movzx ebp, dl
mov dword [eax + 0x2c], edx
mov ebp, dword [ebp*4 + 0x42c400]
mov dword [eax + 0x28], esi
and ebp, 0xff00
xor edi, ebp
mov ebp, edx
shr ebp, 0x18
movzx ebp, byte [ebp*4 + 0x42c000]
xor edi, ebp
mov ebp, edx
movzx edx, dh
shr ebp, 0x10
mov edx, dword [edx*4 + 0x42b800]
mov ecx, ebp
movzx ebp, cl
mov ecx, dword [esp]
mov ebp, dword [ebp*4 + 0x42bc00]
and ebp, 0xff000000
and edx, 0xff0000
xor edi, ebp
xor edi, edx
xor ecx, edi
mov dword [eax + 0x30], edi
xor edi, 0x8000000
mov edx, ecx
mov dword [eax + 0x34], ecx
xor edx, esi
mov dword [eax + 0x38], edx
mov edx, ebx
xor edx, ecx
movzx ebx, dl
mov dword [eax + 0x3c], edx
mov ebx, dword [ebx*4 + 0x42c400]
and ebx, 0xff00
xor edi, ebx
mov ebx, edx
shr ebx, 0x18
movzx ebx, byte [ebx*4 + 0x42c000]
xor edi, ebx
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [ebx*4 + 0x42bc00]
and ebx, 0xff000000
xor edi, ebx
movzx ebx, dh
mov ebx, dword [ebx*4 + 0x42b800]
and ebx, 0xff0000
xor edi, ebx
xor esi, edi
xor ecx, edi
mov dword [eax + 0x40], edi
xor edi, 0x10000000
mov ebx, esi
mov dword [esp], ecx
xor ebx, edx
mov dword [eax + 0x44], ecx
movzx ebp, bl
mov dword [eax + 0x4c], ebx
mov ebp, dword [ebp*4 + 0x42c400]
mov dword [eax + 0x48], esi
and ebp, 0xff00
xor edi, ebp
mov ebp, ebx
shr ebp, 0x18
movzx ebp, byte [ebp*4 + 0x42c000]
xor edi, ebp
mov ebp, ebx
movzx ebx, bh
shr ebp, 0x10
mov ebx, dword [ebx*4 + 0x42b800]
mov ecx, ebp
movzx ebp, cl
and ebx, 0xff0000
mov ecx, dword [esp]
mov ebp, dword [ebp*4 + 0x42bc00]
and ebp, 0xff000000
xor edi, ebp
xor edi, ebx
xor ecx, edi
mov dword [eax + 0x50], edi
mov ebx, ecx
mov dword [eax + 0x54], ecx
xor ebx, esi
xor edx, ecx
xor edi, 0x20000000
mov dword [eax + 0x58], ebx
movzx ebx, dl
mov ebp, edx
mov ebx, dword [ebx*4 + 0x42c400]
mov dword [eax + 0x5c], edx
and ebx, 0xff00
xor edi, ebx
mov ebx, edx
shr ebx, 0x18
movzx ebx, byte [ebx*4 + 0x42c000]
xor edi, ebx
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [ebx*4 + 0x42bc00]
and ebx, 0xff000000
xor ebx, edi
movzx edi, dh
mov edi, dword [edi*4 + 0x42b800]
and edi, 0xff0000
xor ebx, edi
xor esi, ebx
xor ecx, ebx
mov dword [eax + 0x60], ebx
xor ebx, 0x40000000
xor ebp, esi
mov dword [esp], ecx
mov dword [eax + 0x64], ecx
mov ecx, ebp
movzx edi, cl
mov dword [eax + 0x6c], ebp
mov edi, dword [edi*4 + 0x42c400]
mov dword [eax + 0x68], esi
and edi, 0xff00
xor ebx, edi
mov edi, ebp
shr edi, 0x18
movzx edi, byte [edi*4 + 0x42c000]
xor ebx, edi
mov edi, ebp
shr edi, 0x10
mov ecx, edi
movzx edi, cl
mov ecx, ebp
mov edi, dword [edi*4 + 0x42bc00]
movzx ebp, ch
mov ecx, dword [esp]
and edi, 0xff000000
xor edi, ebx
mov ebx, dword [ebp*4 + 0x42b800]
and ebx, 0xff0000
xor edi, ebx
mov ebx, esi
xor ecx, edi
mov dword [eax + 0x70], edi
add edi, 0x80000000
xor edx, ecx
xor ebx, ecx
mov dword [eax + 0x74], ecx
mov dword [eax + 0x78], ebx
movzx ebx, dl
mov ebx, dword [ebx*4 + 0x42c400]
mov dword [eax + 0x7c], edx
and ebx, 0xff00
xor edi, ebx
mov ebx, edx
shr ebx, 0x18
movzx ebx, byte [ebx*4 + 0x42c000]
xor edi, ebx
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [ebx*4 + 0x42bc00]
and ebx, 0xff000000
xor ebx, edi
movzx edi, dh
mov edi, dword [edi*4 + 0x42b800]
and edi, 0xff0000
xor ebx, edi
mov edi, edx
xor esi, ebx
xor ecx, ebx
mov dword [eax + 0x80], ebx
xor ebx, 0x1b000000
xor edi, esi
mov dword [esp], ecx
mov dword [eax + 0x84], ecx
mov ecx, edi
movzx ebp, cl
mov dword [eax + 0x8c], edi
mov ebp, dword [ebp*4 + 0x42c400]
mov dword [eax + 0x88], esi
and ebp, 0xff00
xor ebx, ebp
mov ebp, edi
shr ebp, 0x18
movzx ebp, byte [ebp*4 + 0x42c000]
xor ebx, ebp
mov ebp, edi
shr ebp, 0x10
mov ecx, ebp
movzx ebp, cl
mov ecx, edi
movzx edi, ch
mov ebp, dword [ebp*4 + 0x42bc00]
mov ecx, dword [esp]
mov edi, dword [edi*4 + 0x42b800]
and ebp, 0xff000000
and edi, 0xff0000
xor ebx, ebp
xor ebx, edi
mov edi, esi
xor ecx, ebx
mov dword [eax + 0x90], ebx
xor ebx, 0x36000000
xor edx, ecx
xor edi, ecx
mov dword [eax + 0x94], ecx
mov dword [eax + 0x98], edi
movzx edi, dl
mov edi, dword [edi*4 + 0x42c400]
mov dword [eax + 0x9c], edx
and edi, 0xff00
xor ebx, edi
mov edi, edx
shr edi, 0x18
movzx edi, byte [edi*4 + 0x42c000]
xor edi, ebx
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [ebx*4 + 0x42bc00]
and ebx, 0xff000000
xor ebx, edi
movzx edi, dh
mov edi, dword [edi*4 + 0x42b800]
and edi, 0xff0000
xor ebx, edi
xor ecx, ebx
xor esi, ebx
mov dword [eax + 0xa0], ebx
mov dword [eax + 0xa8], esi
xor esi, edx
mov dword [eax + 0xa4], ecx
mov dword [eax + 0xac], esi
jmp 0x40f529
mov dword [esp + 4], esi
mov ebx, dword [esp + 8]
add eax, 0x20
xor ebp, ebp
jmp 0x40fa25
mov ecx, ebx
movzx edi, bh
shr ecx, 0x10
mov edi, dword [edi*4 + 0x42c400]
movzx ecx, cl
mov ecx, dword [ecx*4 + 0x42b800]
and edi, 0xff00
and ecx, 0xff0000
or ecx, edi
mov edi, ebx
xor ecx, dword [eax - 0x30]
shr edi, 0x18
mov dword [esp + 8], ecx
movzx ecx, bl
mov edi, dword [edi*4 + 0x42bc00]
movzx ecx, byte [ecx*4 + 0x42c000]
and edi, 0xff000000
or edi, ecx
xor edi, dword [esp + 8]
mov dword [eax - 0x10], edi
xor edi, dword [eax - 0x2c]
mov dword [eax - 0xc], edi
xor edi, dword [eax - 0x28]
xor esi, edi
mov dword [eax - 8], edi
mov dword [eax - 4], esi
mov esi, dword [eax - 4]
xor edx, dword [ebp*4 + 0x42a6c0]
add ebp, 1
add eax, 0x20
mov ecx, esi
movzx ecx, cl
mov ecx, dword [ecx*4 + 0x42c400]
and ecx, 0xff00
xor edx, ecx
mov ecx, esi
shr ecx, 0x18
movzx ecx, byte [ecx*4 + 0x42c000]
xor edx, ecx
mov ecx, esi
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [ecx*4 + 0x42bc00]
and ecx, 0xff000000
xor ecx, edx
mov edx, esi
movzx edx, dh
mov edx, dword [edx*4 + 0x42b800]
and edx, 0xff0000
xor edx, ecx
xor dword [esp], edx
mov edi, dword [esp]
xor dword [esp + 4], edi
mov ecx, dword [esp + 4]
mov dword [eax - 0x20], edx
xor ebx, ecx
mov dword [eax - 0x1c], edi
mov dword [eax - 0x18], ecx
mov dword [eax - 0x14], ebx
cmp ebp, 7
jne 0x40f9c0
jmp 0x40f529
movzx ecx, bl
xor edx, 0x1000000
mov edi, dword [esp + 8]
mov ebp, esi
mov ecx, dword [ecx*4 + 0x42c400]
and ecx, 0xff00
xor edx, ecx
mov ecx, ebx
shr ecx, 0x18
movzx ecx, byte [ecx*4 + 0x42c000]
xor edx, ecx
mov ecx, ebx
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [ecx*4 + 0x42bc00]
and ecx, 0xff000000
xor edx, ecx
movzx ecx, bh
mov ecx, dword [ecx*4 + 0x42b800]
and ecx, 0xff0000
xor edx, ecx
mov ecx, dword [esp]
mov dword [eax + 0x18], edx
xor ecx, edx
xor ebp, ecx
mov dword [eax + 0x1c], ecx
xor edi, ebp
mov dword [eax + 0x20], ebp
mov dword [eax + 0x24], edi
xor edi, dword [eax + 0x10]
xor ebx, edi
mov dword [eax + 0x28], edi
movzx ecx, bl
mov esi, ebx
mov dword [eax + 0x2c], ebx
mov ecx, dword [ecx*4 + 0x42c400]
shr esi, 0x18
movzx esi, byte [esi*4 + 0x42c000]
and ecx, 0xff00
or ecx, esi
mov esi, ebx
xor ecx, 0x2000000
shr esi, 0x10
mov dword [esp + 4], ecx
mov ecx, esi
movzx esi, cl
mov ecx, dword [esp + 4]
mov esi, dword [esi*4 + 0x42bc00]
and esi, 0xff000000
xor ecx, esi
movzx esi, bh
mov esi, dword [esi*4 + 0x42b800]
and esi, 0xff0000
xor ecx, esi
xor edx, ecx
xor ecx, dword [esp]
mov esi, ecx
mov dword [esp + 4], edx
mov dword [eax + 0x30], edx
mov edx, ecx
mov dword [eax + 0x34], ecx
mov ecx, dword [esp + 8]
xor edx, ebp
mov dword [eax + 0x38], edx
xor ecx, esi
mov dword [esp], esi
xor edi, ecx
mov dword [eax + 0x3c], ecx
xor ebx, edi
mov dword [eax + 0x40], edi
movzx edx, bl
mov esi, ebx
mov dword [eax + 0x44], ebx
mov edx, dword [edx*4 + 0x42c400]
shr esi, 0x18
movzx esi, byte [esi*4 + 0x42c000]
and edx, 0xff00
or edx, esi
xor edx, 0x4000000
mov dword [esp + 0xc], edx
mov edx, ebx
shr edx, 0x10
movzx esi, dl
mov esi, dword [esi*4 + 0x42bc00]
mov edx, dword [esp + 0xc]
and esi, 0xff000000
xor edx, esi
movzx esi, bh
mov esi, dword [esi*4 + 0x42b800]
and esi, 0xff0000
xor edx, esi
xor edx, dword [esp + 4]
mov esi, dword [esp]
xor ebp, edx
mov dword [eax + 0x48], edx
xor ecx, ebp
xor esi, edx
mov dword [esp + 4], ebp
xor edi, ecx
mov dword [eax + 0x4c], esi
xor ebx, edi
mov dword [eax + 0x54], ecx
mov esi, ebx
movzx ecx, bl
mov dword [eax + 0x50], ebp
mov ecx, dword [ecx*4 + 0x42c400]
shr esi, 0x18
mov dword [eax + 0x58], edi
movzx esi, byte [esi*4 + 0x42c000]
mov dword [eax + 0x5c], ebx
and ecx, 0xff00
or ecx, esi
xor ecx, 0x8000000
mov dword [esp + 0xc], ecx
mov ecx, ebx
shr ecx, 0x10
movzx esi, cl
mov ecx, dword [esp + 0xc]
mov ebp, dword [esi*4 + 0x42bc00]
movzx esi, bh
and ebp, 0xff000000
xor ecx, ebp
mov ebp, dword [esi*4 + 0x42b800]
mov esi, dword [esp]
and ebp, 0xff0000
xor ebp, ecx
mov ecx, dword [esp + 4]
xor esi, ebp
xor edx, ebp
xor ecx, esi
mov dword [eax + 0x60], edx
mov dword [eax + 0x68], ecx
mov ecx, dword [esp + 8]
mov dword [eax + 0x64], esi
xor ecx, ebp
xor edi, ecx
mov dword [eax + 0x6c], ecx
xor ebx, edi
mov dword [esp], ecx
mov ebp, ebx
movzx ecx, bl
mov dword [eax + 0x70], edi
mov ecx, dword [ecx*4 + 0x42c400]
shr ebp, 0x18
mov dword [eax + 0x74], ebx
movzx ebp, byte [ebp*4 + 0x42c000]
and ecx, 0xff00
or ecx, ebp
mov ebp, ebx
xor ecx, 0x10000000
shr ebp, 0x10
mov dword [esp + 8], ecx
mov ecx, ebp
movzx ebp, cl
mov ebp, dword [ebp*4 + 0x42bc00]
mov ecx, dword [esp + 8]
and ebp, 0xff000000
xor ecx, ebp
movzx ebp, bh
mov ebp, dword [ebp*4 + 0x42b800]
and ebp, 0xff0000
xor ecx, ebp
mov ebp, esi
xor edx, ecx
mov ecx, dword [esp]
xor ebp, edx
mov dword [eax + 0x78], edx
mov dword [eax + 0x7c], ebp
mov ebp, dword [esp + 4]
xor ebp, edx
xor ecx, ebp
mov dword [esp + 4], ebp
xor edi, ecx
mov dword [eax + 0x80], ebp
xor ebx, edi
mov dword [eax + 0x84], ecx
mov ebp, ebx
movzx ecx, bl
mov dword [eax + 0x88], edi
mov ecx, dword [ecx*4 + 0x42c400]
shr ebp, 0x18
mov dword [eax + 0x8c], ebx
movzx ebp, byte [ebp*4 + 0x42c000]
and ecx, 0xff00
or ecx, ebp
mov ebp, ebx
xor ecx, 0x20000000
shr ebp, 0x10
mov dword [esp + 8], ecx
mov ecx, ebp
movzx ebp, cl
mov ecx, dword [esp + 8]
mov ebp, dword [ebp*4 + 0x42bc00]
and ebp, 0xff000000
xor ecx, ebp
movzx ebp, bh
mov ebp, dword [ebp*4 + 0x42b800]
and ebp, 0xff0000
xor ecx, ebp
xor esi, ecx
xor edx, ecx
mov ecx, dword [esp]
mov dword [esp + 8], edx
xor ecx, esi
mov dword [eax + 0x90], edx
mov edx, dword [esp + 4]
xor edi, ecx
mov dword [eax + 0x94], esi
xor ebx, edi
xor edx, esi
mov dword [eax + 0x9c], ecx
mov dword [eax + 0x98], edx
mov ebp, ebx
movzx edx, bl
mov edx, dword [edx*4 + 0x42c400]
shr ebp, 0x18
mov dword [eax + 0xa0], edi
movzx ebp, byte [ebp*4 + 0x42c000]
mov dword [eax + 0xa4], ebx
and edx, 0xff00
or edx, ebp
mov ebp, ebx
xor edx, 0x40000000
shr ebp, 0x10
mov dword [esp + 0xc], edx
mov edx, ebp
movzx ebp, dl
mov edx, dword [esp + 0xc]
mov ebp, dword [ebp*4 + 0x42bc00]
and ebp, 0xff000000
xor edx, ebp
movzx ebp, bh
mov ebp, dword [ebp*4 + 0x42b800]
and ebp, 0xff0000
xor edx, ebp
mov ebp, esi
xor edx, dword [esp + 8]
xor ebp, edx
mov dword [eax + 0xa8], edx
mov dword [eax + 0xac], ebp
mov ebp, dword [esp + 4]
xor ebp, edx
xor ecx, ebp
mov dword [eax + 0xb0], ebp
mov dword [eax + 0xb4], ecx
xor ecx, edi
xor ebx, ecx
mov dword [eax + 0xb8], ecx
movzx ecx, bl
mov dword [eax + 0xbc], ebx
mov edi, dword [ecx*4 + 0x42c400]
mov ecx, ebx
shr ecx, 0x18
movzx ecx, byte [ecx*4 + 0x42c000]
and edi, 0xff00
or edi, ecx
mov ecx, ebx
movzx ebx, bh
shr ecx, 0x10
add edi, 0x80000000
movzx ecx, cl
mov ecx, dword [ecx*4 + 0x42bc00]
and ecx, 0xff000000
xor ecx, edi
mov edi, dword [ebx*4 + 0x42b800]
and edi, 0xff0000
xor ecx, edi
xor esi, ecx
xor edx, ecx
mov dword [eax + 0xc4], esi
xor esi, ebp
mov ebp, dword [esp]
mov dword [eax + 0xc0], edx
xor ebp, ecx
mov dword [eax + 0xc8], esi
mov dword [eax + 0xcc], ebp
jmp 0x40f529
mov eax, 0xffffffff
jmp 0x40f52b
mov eax, 0xfffffffe
jmp 0x40f52b