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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x200
mov esi, esp
mov eax, dword [ebp + 8]
push eax
mov dword [esi + 0x180], esp
push eax
push eax
mov edi, esp
push eax
mov dword [esi + 0x188], esp
sub esp, 0x20
mov ecx, esp
and ecx, 0xfffffff0
mov dword [esi + 0x2c], ecx
mov esp, ecx
push eax
mov dword [esi + 0x184], esp
push eax
mov dword [esi + 0x190], eax
mov byte [esi + 0xb], 0
mov al, byte [esi + 0x40]
mov byte [esi + 0x44], al
mov byte [esi + 0x130], 0x6d
mov byte [esi + 0x131], 0x72
mov byte [esi + 0x132], 6
mov byte [esi + 0x133], 0x4e
mov byte [esi + 0x134], 0x7c
mov byte [esi + 0x135], 0x70
mov byte [esi + 0x136], 0x7c
mov byte [esi + 0x137], 0x7a
mov byte [esi + 0x138], 0x84
mov word [esi + 0x141], 0
mov dword [esi + 0x13d], 0
mov dword [esi + 0x139], 0
mov dword [esi + 0xc], 0
mov eax, dword [esi + 0xc]
cmp eax, 0x13
jae 0x40a758
jmp 0x40a718
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0xc]
movzx ecx, byte [esi + ecx + 0x130]
mov edx, eax
add edx, 0x3dea2742
lea eax, [eax + ecx + 0x3dea2742]
and edx, ecx
add edx, edx
sub eax, edx
add al, 0x32
mov ecx, dword [esi + 0xc]
mov byte [esi + ecx + 0x130], al
mov eax, dword [esi + 0xc]
inc eax
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0xc]
cmp eax, 0x13
jb 0x40a718
jmp 0x40a758
mov dword [esi + 0x18c], edi
lea edi, [esi + 0x197]
lea edx, [esi + 0x130]
mov ecx, 2
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esi + 0x19f]
lea edx, [esi + 0x138]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov cl, byte [esi + 0x138]
mov byte [esi + 0x19f], cl
mov cl, byte [esi + 0x3c]
mov byte [esi + 0x48], cl
mov byte [esi + 0x60], 0xb
mov byte [esi + 0x61], 0xcd
mov byte [esi + 0x62], 0x61
mov byte [esi + 0x63], 0xf3
mov byte [esi + 0x64], 0x62
mov byte [esi + 0x65], 0xf1
mov byte [esi + 0x66], 0x62
mov byte [esi + 0x67], 0xf7
mov byte [esi + 0x68], 0x11
mov byte [esi + 0x69], 0xf5
mov byte [esi + 0x6a], 0x68
mov byte [esi + 0x6b], 0xfb
mov byte [esi + 0x6c], 0x6c
mov byte [esi + 0x6d], 0xf9
mov byte [esi + 0x6e], 0xd3
mov byte [esi + 0x6f], 0xff
mov byte [esi + 0x70], 8
mov byte [esi + 0x71], 0xfd
mov byte [esi + 0x72], 0x7b
mov byte [esi + 0x73], 0xe3
mov byte [esi + 0x74], 0x70
mov byte [esi + 0x75], 0xe1
mov byte [esi + 0x76], 3
mov byte [esi + 0x77], 0xe7
mov byte [esi + 0x78], 0x3a
mov byte [esi + 0x79], 0xe5
mov byte [esi + 0x7a], 0xca
mov byte [esi + 0x7b], 0xeb
mov byte [esi + 0x7c], 9
mov byte [esi + 0x7d], 0xe9
mov byte [esi + 0x7e], 0x7e
mov byte [esi + 0x7f], 0xef
mov byte [esi + 0x80], 0x7c
mov byte [esi + 0x81], 0xed
mov byte [esi + 0x82], 0x7e
mov byte [esi + 0x83], 0x93
mov byte [esi + 0x84], 0x79
mov byte [esi + 0x85], 0x91
mov byte [esi + 0x86], 0x71
mov byte [esi + 0x87], 0x97
mov byte [esi + 0x88], 0x75
mov byte [esi + 0x89], 0x95
mov byte [esi + 0x8a], 0xe
mov byte [esi + 0x8b], 0x9b
mov byte [esi + 0x8c], 0x71
mov byte [esi + 0x8d], 0x99
mov byte [esi + 0x8e], 0xd
mov byte [esi + 0x8f], 0x9f
mov byte [esi + 0x90], 0xe
mov byte [esi + 0x91], 0x9d
mov byte [esi + 0x92], 0x51
mov byte [esi + 0x93], 0x83
mov byte [esi + 0x94], 0x18
mov byte [esi + 0x95], 0x81
mov byte [esi + 0x96], 0xab
mov byte [esi + 0x97], 0x87
mov byte [esi + 0x98], 0x1f
mov byte [esi + 0x99], 0x85
mov byte [esi + 0x9a], 0x11
mov byte [esi + 0x9b], 0x8b
mov byte [esi + 0x9c], 0x13
mov byte [esi + 0x9d], 0x89
mov byte [esi + 0x9e], 0xa3
mov byte [esi + 0x9f], 0x8f
mov byte [esi + 0xa0], 0x66
mov byte [esi + 0xa1], 0x8d
mov byte [esi + 0xa2], 0x21
mov byte [esi + 0xa3], 0xb3
mov byte [esi + 0xa4], 0x26
mov byte [esi + 0xa5], 0xb1
mov byte [esi + 0xa6], 0x5b
mov byte [esi + 0xa7], 0xb7
mov byte [esi + 0xa8], 0x99
mov byte [esi + 0xa9], 0xb5
mov byte [esi + 0xaa], 0x2f
mov byte [esi + 0xab], 0xbb
mov byte [esi + 0xac], 0x2e
mov byte [esi + 0xad], 0xb9
mov byte [esi + 0xae], 0x52
mov byte [esi + 0xaf], 0xbf
mov byte [esi + 0xb0], 0x59
mov byte [esi + 0xb1], 0xbd
mov byte [esi + 0xb2], 0x30
mov byte [esi + 0xb3], 0xa3
mov byte [esi + 0xb4], 0x47
mov byte [esi + 0xb5], 0xa1
mov byte [esi + 0xb6], 0x35
mov byte [esi + 0xb7], 0xa7
mov byte [esi + 0xb8], 0x40
mov byte [esi + 0xb9], 0xa5
mov byte [esi + 0xba], 0x4f
mov byte [esi + 0xbb], 0xab
mov byte [esi + 0xbc], 0x4c
mov byte [esi + 0xbd], 0xa9
mov byte [esi + 0xbe], 0xa3
mov byte [esi + 0xbf], 0xaf
mov byte [esi + 0xc0], 0xa2
mov byte [esi + 0xc1], 0xad
mov byte [esi + 0xc2], 0x52
mov byte [esi + 0xc3], 0x53
mov word [esi + 0xd8], 0
mov dword [esi + 0xd4], 0
mov dword [esi + 0xd0], 0
mov dword [esi + 0xcc], 0
mov dword [esi + 0xc8], 0
mov dword [esi + 0xc4], 0
mov dword [esi + 0x10], 0
mov ecx, dword [esi + 0x10]
cmp ecx, 0x7a
jae 0x40aa7f
jmp 0x40aa44
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x10]
movzx edx, byte [esi + edx + 0x60]
mov edi, ecx
add edi, 0x5fe149e
lea ecx, [ecx + edx + 0x5fe149e]
and edi, edx
add edi, edi
sub ecx, edi
add cl, 0xae
mov edx, dword [esi + 0x10]
mov byte [esi + edx + 0x60], cl
mov ecx, dword [esi + 0x10]
inc ecx
mov dword [esi + 0x10], ecx
mov ecx, dword [esi + 0x10]
cmp ecx, 0x7a
jb 0x40aa44
jmp 0x40aa7f
mov cl, byte [esi + 0x38]
mov byte [esi + 0x4c], cl
mov byte [esi + 0x150], 0x2f
mov byte [esi + 0x151], 1
mov byte [esi + 0x152], 0x63
mov byte [esi + 0x153], 3
mov byte [esi + 0x154], 0x74
mov byte [esi + 0x155], 5
mov byte [esi + 0x156], 0x6f
mov byte [esi + 0x157], 7
mov byte [esi + 0x158], 8
mov byte [esi + 0x159], 9
mov dword [esi + 0x161], 0
mov dword [esi + 0x15e], 0
mov dword [esi + 0x15a], 0
mov dword [esi + 0x14], 0
mov ecx, dword [esi + 0x14]
cmp ecx, 0x15
jae 0x40ab2d
jmp 0x40aafa
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
movzx edi, byte [esi + ecx + 0x150]
mov ecx, edx
add ecx, edi
and edx, edi
add edx, edx
sub ecx, edx
mov edx, dword [esi + 0x14]
mov byte [esi + edx + 0x150], cl
mov ecx, dword [esi + 0x14]
inc ecx
mov dword [esi + 0x14], ecx
mov ecx, dword [esi + 0x14]
cmp ecx, 0x15
jb 0x40aafa
jmp 0x40ab2d
mov ecx, dword [esi + 0x190]
lea edx, [esi + 0x150]
lea edi, [esi + 0x60]
lea eax, [esi + 0x28]
xor ebx, ebx
sub esp, 0x1c
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], edi
lea ecx, [esi + 0x197]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], 8
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], 0
call fcn.0040b090
add esp, 0x1c
test al, 1
jne 0x40ab7e
jmp 0x40b040
mov al, byte [esi + 0x34]
mov byte [esi + 0x50], al
mov word [esi + 0x1b0], 0
mov dword [esi + 0x1ac], 0
mov dword [esi + 0x1a8], 0
mov dword [esi + 0x1a4], 0
mov dword [esi + 0x1a0], 0
mov byte [esi + 0x1a0], 0x37
mov byte [esi + 0x1a1], 0x34
mov byte [esi + 0x1a2], 0x80
mov dword [esi + 0x18], 0
mov eax, dword [esi + 0x18]
cmp eax, 0x12
jae 0x40ac1b
jmp 0x40abdb
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x18]
movzx ecx, byte [esi + ecx + 0x1a0]
mov edx, eax
add edx, 0x2eeffa6b
lea eax, [eax + ecx + 0x2eeffa6b]
and edx, ecx
add edx, edx
sub eax, edx
add al, 0x13
mov ecx, dword [esi + 0x18]
mov byte [esi + ecx + 0x1a0], al
mov eax, dword [esi + 0x18]
inc eax
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x18]
cmp eax, 0x12
jb 0x40abdb
jmp 0x40ac1b
mov eax, dword [esi + 0x28]
lea ecx, [esi + 0x1a0]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0040cb10
add esp, 8
cmp eax, 0
sete al
jmp 0x40ac3e
test al, 1
jne 0x40ac44
jmp 0x40ac4d
mov byte [esi + 0xb], 1
jmp 0x40b02f
mov al, byte [esi + 0x30]
mov byte [esi + 0x54], al
mov byte [esi + 0xe0], 0x83
mov byte [esi + 0xe1], 0x70
mov byte [esi + 0xe2], 0x75
mov byte [esi + 0xe3], 0x87
mov byte [esi + 0xe4], 0x71
mov byte [esi + 0xe5], 0x7a
mov byte [esi + 0xe6], 0x74
mov byte [esi + 0xe7], 7
mov dword [esi + 0xec], 0
mov dword [esi + 0xe8], 0
mov dword [esi + 0x1c], 0
mov eax, dword [esi + 0x1c]
cmp eax, 0x10
jae 0x40acf1
jmp 0x40acb0
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x1c]
movzx ecx, byte [esi + ecx + 0xe0]
mov edx, eax
add edx, 0x82
mov edi, ecx
not edi
mov ebx, edx
or ebx, edi
and edx, ecx
add ebx, edx
sub eax, ebx
add al, 0xf3
mov ecx, dword [esi + 0x1c]
mov byte [esi + ecx + 0xe0], al
mov eax, dword [esi + 0x1c]
inc eax
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x1c]
cmp eax, 0x10
jb 0x40acb0
jmp 0x40acf1
mov eax, dword [esi + 0x28]
lea ecx, [esi + 0xe0]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.0040cb40
add esp, 8
cmp eax, 0
je 0x40b02d
call fcn.0040f5a0
mov eax, dword [esi + 0x180]
mov al, byte [eax]
mov byte [esi + 0x58], al
mov byte [esi + 0x100], 0xd4
mov byte [esi + 0x101], 0xe2
mov byte [esi + 0x102], 0xd7
mov byte [esi + 0x103], 0xe0
mov byte [esi + 0x104], 0x89
mov byte [esi + 0x105], 0xaf
mov byte [esi + 0x106], 0xef
mov byte [esi + 0x107], 0xdb
mov byte [esi + 0x108], 0xdf
mov byte [esi + 0x109], 0xe0
mov byte [esi + 0x10a], 0xaa
mov byte [esi + 0x10b], 0xd3
mov byte [esi + 0x10c], 0xa8
mov byte [esi + 0x10d], 0x96
mov byte [esi + 0x10e], 0x9c
mov byte [esi + 0x10f], 0xac
mov byte [esi + 0x110], 0x9d
mov byte [esi + 0x111], 0xf6
mov byte [esi + 0x112], 0xd2
mov byte [esi + 0x113], 0x3b
mov word [esi + 0x12c], 0
mov dword [esi + 0x128], 0
mov dword [esi + 0x124], 0
mov dword [esi + 0x120], 0
mov dword [esi + 0x11c], 0
mov dword [esi + 0x118], 0
mov dword [esi + 0x114], 0
mov dword [esi + 0x20], 0
mov eax, dword [esi + 0x20]
cmp eax, 0x2e
jae 0x40ae41
jmp 0x40ae07
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x20]
movzx ecx, byte [esi + ecx + 0x100]
mov edx, eax
add edx, 0x35
lea eax, [eax + ecx + 0x35]
and edx, ecx
add edx, edx
sub eax, edx
add al, 0x8d
mov ecx, dword [esi + 0x20]
mov byte [esi + ecx + 0x100], al
mov eax, dword [esi + 0x20]
inc eax
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x20]
cmp eax, 0x2e
jb 0x40ae07
jmp 0x40ae41
lea eax, [esi + 0x1cc]
lea edx, [esi + 0x100]
mov edi, eax
mov ecx, 5
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
add eax, 0x14
lea edx, [esi + 0x100]
add edx, 0x14
mov edi, eax
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
lea eax, [esi + 0x1cc]
mov ecx, dword [esi + 0x28]
sub esp, 8
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.0040cb40
add esp, 8
mov edi, dword [esi + 0x18c]
mov dword [edi], eax
cmp dword [edi], 0
setne al
test al, 1
jne 0x40aea3
jmp 0x40b02b
mov eax, dword [edi]
add eax, 0x13
mov dword [edi], eax
jmp 0x40aeac
mov eax, dword [esi + 0x184]
mov al, byte [eax]
mov byte [esi + 0x5c], al
mov eax, dword [esi + 0x2c]
mov byte [eax + 0x1c], 0
mov dword [eax + 0x18], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0xc], 0
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov byte [eax], 0x32
mov byte [eax + 1], 0x4f
mov byte [eax + 2], 0xa
mov dword [esi + 0x24], 0
mov eax, dword [esi + 0x24]
cmp eax, 0x1d
jae 0x40af4f
jmp 0x40af0a
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x24]
mov ebx, dword [esi + 0x2c]
movzx edx, byte [ebx + ecx]
mov ecx, eax
add ecx, 0x4fc84d02
lea eax, [eax + edx + 0x4fc84d02]
and ecx, edx
add ecx, ecx
mov edx, ecx
xor edx, eax
not ecx
and eax, ecx
add eax, eax
sub eax, edx
add al, 0xf2
mov ecx, dword [esi + 0x24]
mov byte [ebx + ecx], al
mov eax, dword [esi + 0x24]
inc eax
mov dword [esi + 0x24], eax
mov eax, dword [esi + 0x24]
cmp eax, 0x1d
jb 0x40af0a
jmp 0x40af4f
mov eax, dword [edi]
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x2c]
mov dword [esp + 4], eax
call fcn.0040cb40
add esp, 8
mov ecx, dword [esi + 0x188]
mov dword [ecx], eax
cmp dword [ecx], 0
setne al
test al, 1
jne 0x40af7d
jmp 0x40b029
mov byte [0x447ac8], 1
mov ebx, dword [ecx]
mov edi, dword [edi]
cmp ebx, 0
jne 0x40afa3
mov ecx, edi
jmp 0x40af91
mov eax, ecx
mov dl, byte [eax]
add ecx, 1
cmp dl, 0
jne 0x40af91
sub eax, edi
mov ebx, edi
add ebx, eax
mov dword [esi + 0xfc], 0
lea eax, [0x447aca]
cmp ebx, edi
jbe 0x40b01c
lea ecx, [0x447aca]
jmp 0x40afbf
cmp byte [edi], 0
jne 0x40afc8
mov eax, ecx
jmp 0x40b01c
sub esp, 0xc
lea eax, [esi + 0xfc]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], edi
mov dword [esi + 0x17c], ecx
call fcn.0040f400
add esp, 0xc
add edi, eax
mov cx, word [esi + 0xfc]
mov edx, dword [esi + 0x17c]
mov eax, edx
add eax, 2
mov word [edx], cx
mov ecx, eax
sub ecx, 0x447cc8
setb cl
mov edx, edi
sub edx, ebx
setb dl
and cl, dl
test cl, 1
mov ecx, eax
jne 0x40afbf
mov word [eax], 0
jmp 0x40b023
jmp 0x40b025
mov byte [esi + 0xb], 1
jmp 0x40b02b
jmp 0x40b02d
jmp 0x40b02f
mov eax, dword [esi + 0x28]
sub esp, 4
mov dword [esp], eax
call fcn.004354f0
add esp, 4
mov al, byte [esi + 0xb]
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret