Function at 0x40f990
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov dword [esp + 8], 0x6e968281
mov dword [esp + 0xc], 0x82809c98
lea ebp, [esp + 0x10]
mov byte [esp + 0x10], 0x38
mov dword [esp + 0x11], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 8]
xor ecx, ecx
xor esi, esi
nop
nop
nop
nop
nop
mov edx, ecx
and edx, 0xfffffff0
add edx, esi
movzx ebx, byte [eax]
xor ebx, edx
mov edx, ebx
and edx, 0xa9
xor edx, 0x21
and ebx, 0x56
sub ebx, edx
inc bl
mov byte [eax], bl
inc esi
inc eax
add ecx, 2
cmp ecx, 0x20
jne 0x40f9d0
lea eax, [esp + 0x87]
lea edx, [esp + 8]
mov edi, eax
mov ecx, 2
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x8f]
xor ebx, ebx
xor ecx, ecx
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
movzx ecx, byte [esp + 0x10]
mov byte [esp + 0x8f], cl
mov dword [esp + 8], 0xc36dc103
mov dword [esp + 0xc], 0xc752c56a
mov dword [esp + 0x10], 0xcb64c96d
mov dword [esp + 0x14], 0xcf23cd58
mov dword [esp + 0x18], 0xb32bb104
mov dword [esp + 0x1c], 0xb713b524
mov dword [esp + 0x20], 0xbb5ab962
mov dword [esp + 0x24], 0xbf2ebd1d
mov dword [esp + 0x28], 0xa30ea130
mov dword [esp + 0x2c], 0xa705a50d
mov dword [esp + 0x30], 0xab3ea909
mov dword [esp + 0x34], 0xaf01ad05
mov dword [esp + 0x38], 0x937d913e
mov dword [esp + 0x3c], 0x977b950c
mov dword [esp + 0x40], 0x9b0d990f
mov dword [esp + 0x44], 0x9f739d0b
mov dword [esp + 0x48], 0x832d8126
mov dword [esp + 0x4c], 0x872b8516
mov dword [esp + 0x50], 0x8b1f8965
mov dword [esp + 0x54], 0x8f228d1e
mov dword [esp + 0x58], 0x73dc71d5
mov dword [esp + 0x5c], 0x77d975d7
mov dword [esp + 0x60], 0x7bdf79dc
mov dword [esp + 0x64], 0x7f737dd8
mov dword [esp + 0x68], 0x6362616a
mov dword [esp + 0x6c], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 8]
mov esi, ebx
and esi, 0x60
mov edi, ecx
xor edi, 0x7edef04f
sub edi, esi
mov esi, edi
or esi, edx
and edi, edx
lea edx, [esi + esi]
not edx
add edx, esi
or edx, edi
add dl, 0x90
mov byte [esp + ecx + 8], dl
inc ecx
add ebx, 2
cmp ecx, 0x68
jne 0x40fb10
mov dword [esp + 0x74], 0x93f391a7
mov dword [esp + 0x78], 0xafd7addc
mov word [esp + 0x7c], 0xa9a8
mov dword [esp + 0x7e], 0
mov ecx, 0x45a9419c
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x45a94128]
xor edx, ecx
mov esi, edx
and esi, 0x73
xor edx, 0xf3
lea edx, [edx + esi*2]
inc dl
mov byte [esp + ecx - 0x45a94128], dl
inc ecx
cmp ecx, 0x45a941aa
jne 0x40fb70
lea ecx, [esp + 4]
lea edx, [esp + 0x74]
push 0
push ecx
push 8
push eax
lea eax, [esp + 0x18]
push eax
push edx
push dword [esp + 0xbc]
call fcn.004108d0
add esp, 0x1c
xor ebx, ebx
test al, al
je 0x40fe89
mov dword [esp + 8], 0x1aaead
nop
mov eax, ebx
add al, 0x3b
xor al, byte [esp + ebx + 8]
add al, 0xd9
mov byte [esp + ebx + 8], al
inc ebx
cmp ebx, 4
jne 0x40fbd0
xor eax, eax
mov esi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esi + eax]
movzx edx, byte [esp + eax + 8]
test cl, cl
je 0x40fc02
inc eax
cmp cl, dl
je 0x40fbf0
mov bl, 1
cmp cl, dl
je 0x40fe80
mov dword [esp + 8], 0x455b5849
mov dword [esp + 0xc], 0x354c424b
mov word [esp + 0x10], 0
mov eax, 0xa03fc135
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x5fc03ed3]
xor ecx, eax
mov edx, 9
sub edx, ecx
add ecx, 0x16
and edx, 0xe7
and ecx, 0x18
sub ecx, edx
add cl, 0xe8
mov byte [esp + eax + 0x5fc03ed3], cl
inc eax
cmp eax, 0xa03fc13f
jne 0x40fc30
movzx eax, byte [esp + 8]
mov ecx, esi
test al, al
je 0x40fca6
lea edx, [esp + 8]
mov edi, esi
mov ecx, esi
jmp 0x40fc87
movzx eax, byte [edx]
test al, al
je 0x40fca6
mov ah, byte [edi]
test ah, ah
je 0x40fe7e
inc edi
inc edx
lea ebp, [ecx + 1]
cmp ah, al
je 0x40fc9e
mov ecx, ebp
mov edi, ebp
je 0x40fc80
lea edx, [esp + 8]
jmp 0x40fc80
test ecx, ecx
je 0x40fe7e
mov dword [esp], esi
mov dword [esp + 8], 0x7a73786a
mov dword [esp + 0xc], 0x5743bba1
mov dword [esp + 0x10], 0x87804e53
mov dword [esp + 0x14], 0x5e46445e
mov dword [esp + 0x18], 0xaf88944d
mov byte [esp + 0x1c], 0
mov ecx, 0x5a
mov edx, 0xa5
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx - 0x52]
lea esi, [edx - 0xa4]
and esi, 3
mov edi, ecx
and edi, 0x3c
or edi, esi
xor edi, 0xbc
and edi, edx
mov esi, ecx
or esi, eax
not eax
or eax, edi
and eax, esi
add al, 0x3e
mov byte [esp + ecx - 0x52], al
inc ecx
dec edx
cmp ecx, 0x6f
jne 0x40fcf0
movzx ecx, byte [esp + 8]
mov ebp, dword [esp]
test cl, cl
je 0x40fd67
lea edx, [esp + 8]
mov ebp, dword [esp]
mov esi, ebp
jmp 0x40fd47
movzx ecx, byte [edx]
test cl, cl
je 0x40fd67
movzx eax, byte [esi]
test al, al
je 0x40fe0b
inc esi
inc edx
lea edi, [ebp + 1]
cmp al, cl
je 0x40fd5f
mov ebp, edi
mov esi, edi
je 0x40fd40
lea edx, [esp + 8]
jmp 0x40fd40
mov eax, ebp
test ebp, ebp
je 0x40fe0b
mov word [esp + 8], 0x4b66
mov byte [esp + 0xa], 0x76
mov word [esp + 0xb], 0
lea ecx, [esp + 8]
mov eax, 0x4eb82d41
nop
nop
nop
movzx edx, byte [ecx]
mov esi, eax
or esi, edx
not esi
lea edi, [eax - 0x4eb82d00]
and edi, edx
or edi, esi
mov edx, edi
and edx, 1
xor edi, 1
lea edx, [edi + edx*2]
add dl, 0x49
mov byte [ecx], dl
inc ecx
dec eax
cmp eax, 0x4eb82d3c
jne 0x40fd90
movzx ecx, byte [esp + 8]
test cl, cl
mov esi, dword [esp]
je 0x40fe12
mov edi, ebp
add edi, 0x13
lea edx, [esp + 8]
mov ebp, edi
mov dword [esp + 0x70], edi
jmp 0x40fdea
movzx ecx, byte [edx]
test cl, cl
mov esi, dword [esp]
je 0x40fe20
movzx eax, byte [ebp]
test al, al
je 0x40fe7e
inc ebp
inc edx
lea esi, [edi + 1]
cmp al, cl
je 0x40fe03
mov edi, esi
mov ebp, esi
je 0x40fde0
lea edx, [esp + 8]
jmp 0x40fde0
xor ebx, ebx
mov esi, dword [esp]
jmp 0x40fe80
mov byte [0x4516bc], 1
mov eax, 0x4516be
jmp 0x40fe9c
test edi, edi
je 0x40fe7e
mov byte [0x4516bc], 1
mov dword [esp + 8], 0
mov eax, 0x4516be
mov ebp, dword [esp + 0x70]
cmp ebp, edi
jae 0x40fe9c
xor esi, esi
cmp byte [ebp], 0
je 0x40fe96
lea eax, [esp + 8]
push eax
push edi
push ebp
call fcn.00411cc0
add esp, 0xc
movzx edx, word [esp + 8]
lea ecx, [esi + 2]
mov word [esi + 0x4516be], dx
cmp esi, 0x1fb
ja 0x40fe76
add ebp, eax
mov esi, ecx
cmp ebp, edi
jb 0x40fe42
lea eax, [ecx + 0x4516be]
jmp 0x40fe9c
xor ebx, ebx
push esi
call fcn.0043fd50
add esp, 4
mov eax, ebx
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [esi + 0x4516be]
mov word [eax], 0
mov esi, dword [esp + 4]
jmp 0x40fe80