Function at 0x40a2e0
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, 0xd0
mov dword [esp + 0x40], 0x28a0b0b1
mov dword [esp + 0x44], 0x54525656
lea edx, [esp + 0x48]
mov byte [esp + 0x48], 0xee
mov dword [esp + 0x49], 0
mov dword [esp + 0x4d], 0
mov byte [esp + 0x51], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x11
ja 0x40a35f
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x40]
lea esi, [eax + 0x7d]
add eax, ecx
and esi, ecx
add esi, esi
sub eax, esi
add al, 0x12
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x12
jb 0x40a330
lea eax, [esp + 0xc3]
lea esi, [esp + 0x40]
mov ebx, esi
mov ecx, 2
mov edi, eax
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0xcb]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
movzx ecx, byte [esp + 0x48]
mov byte [esp + 0xcb], cl
mov dword [esp + 0x40], 0x4bc55593
mov dword [esp + 0x44], 0x4fdc49d8
mov dword [esp + 0x48], 0x43de4dd5
mov dword [esp + 0x4c], 0x479341d6
mov dword [esp + 0x50], 0x7bcb45b2
mov dword [esp + 0x54], 0x7fe379ea
mov dword [esp + 0x58], 0x735c7db0
mov dword [esp + 0x5c], 0x77e07195
mov dword [esp + 0x60], 0x6be875e6
mov dword [esp + 0x64], 0x6f8d69f5
mov dword [esp + 0x68], 0x63f86d89
mov dword [esp + 0x6c], 0x67f161fd
mov dword [esp + 0x70], 0x1bb565f4
mov dword [esp + 0x74], 0x1fcb1992
mov dword [esp + 0x78], 0x13951d97
mov dword [esp + 0x7c], 0x17c3119b
mov dword [esp + 0x80], 0xb85158c
mov dword [esp + 0x84], 0xf9b099c
mov dword [esp + 0x88], 0x3870ddd
mov dword [esp + 0x8c], 0x79c0194
mov dword [esp + 0x90], 0x3b96059d
mov dword [esp + 0x94], 0x3fa939df
mov dword [esp + 0x98], 0x33a73dda
mov dword [esp + 0x9c], 0x370331d6
mov dword [esp + 0xa0], 0x2b343508
mov byte [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x74
ja 0x40a4e7
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
add cl, 0xd
xor cl, byte [esp + edx + 0x40]
add cl, 0xa5
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x75
jb 0x40a4c0
mov ecx, dword [ebp + 8]
mov dword [esp + 0x10], 0x83238177
mov dword [esp + 0x14], 0x9f279d32
mov word [esp + 0x18], 0x999e
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov dword [esp + 0x26], 0
mov word [esp + 0x2a], 0
mov dword [esp + 0xc], 0
mov edx, dword [esp + 0xc]
cmp edx, 0x1b
ja 0x40a587
nop
nop
nop
nop
nop
nop
nop
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0xc]
movzx ebx, byte [esp + edx + 0x10]
lea edx, [edi + ebx]
add edx, 0xb0a323eb
add edi, 0xb0a323eb
and edi, ebx
add edi, edi
sub edx, edi
mov edi, edx
xor edi, 0x92
and edx, 0x12
lea edx, [edi + edx*2]
inc dl
mov edi, dword [esp + 0xc]
mov byte [esp + edi + 0x10], dl
inc dword [esp + 0xc]
mov edx, dword [esp + 0xc]
cmp edx, 0x1c
jb 0x40a540
lea edx, [esp + 0x3c]
lea edi, [esp + 0x10]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040a9c0
add esp, 0x1c
test al, al
je 0x40a70e
mov dword [esp + 0x40], 0
mov byte [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov word [esp + 0x40], 0x1427
mov byte [esp + 0x42], 0xb8
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x10
ja 0x40a628
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + edx]
add eax, 0x8a4b23c7
add ecx, 0x8a4b23c7
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x8f
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x11
jb 0x40a5f0
xor ecx, ecx
mov eax, dword [esp + 0x3c]
nop
nop
movzx edx, byte [eax + ecx]
mov dh, byte [esp + ecx + 0x40]
test dl, dl
je 0x40a641
inc ecx
cmp dl, dh
je 0x40a630
mov bl, 1
cmp dl, dh
je 0x40a960
mov dword [esp + 0x40], 0x6f1d1e53
mov dword [esp + 0x44], 0xff626c61
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x57], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1a
ja 0x40a6d8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + edx]
add eax, 0x39ccd31f
add ecx, 0x39ccd31f
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0x27
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1b
jb 0x40a6a0
mov eax, dword [esp + 0x3c]
movzx ebx, byte [esp + 0x40]
mov ecx, eax
test bl, bl
je 0x40a715
mov edx, eax
mov ecx, eax
mov edi, esi
jmp 0x40a6fc
inc ecx
mov edi, esi
mov edx, ecx
movzx ebx, byte [edi]
test bl, bl
je 0x40a715
mov bh, byte [edx]
test bh, bh
je 0x40a81e
cmp bh, bl
jne 0x40a6f0
inc edx
inc edi
jmp 0x40a6f5
xor ebx, ebx
jmp 0x40a969
test ecx, ecx
je 0x40a81e
mov dword [esp + 0x40], 0x90a7b2a4
mov dword [esp + 0x44], 0x9b8fcfa9
mov dword [esp + 0x48], 0xc3ca909f
mov dword [esp + 0x4c], 0x6c9c8668
mov dword [esp + 0x50], 0xfbc2a69d
lea edx, [esp + 0x54]
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1f
ja 0x40a7b8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx esi, byte [esp + eax + 0x40]
lea eax, [ecx + esi]
add eax, 0x407758dd
add ecx, 0x407758dd
and ecx, esi
add ecx, ecx
sub eax, ecx
add al, 0xf5
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x20
jb 0x40a780
lea esi, [esp + 0x40]
lea eax, [esp + 0x10]
mov edi, eax
mov ecx, 5
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [esp + 0x24]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov ecx, dword [esp + 0x3c]
movzx ebx, byte [esp + 0x10]
test bl, bl
je 0x40a825
mov esi, ecx
mov edx, eax
mov edi, eax
lea eax, [esp + 0x40]
jmp 0x40a80c
inc esi
mov edx, edi
mov ecx, esi
movzx ebx, byte [edx]
test bl, bl
je 0x40a82b
mov bh, byte [ecx]
test bh, bh
je 0x40a95a
cmp bh, bl
jne 0x40a800
inc ecx
inc edx
jmp 0x40a805
xor ebx, ebx
jmp 0x40a960
mov esi, ecx
lea eax, [esp + 0x40]
test esi, esi
je 0x40a95a
mov dword [esp + 0x40], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov word [esp + 0x40], 0xf32
mov byte [esp + 0x42], 0xca
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0xc]
cmp ecx, 0x13
ja 0x40a8c4
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0xc]
movzx edi, byte [esp + edx + 0x40]
lea edx, [ecx + edi]
add edx, 0x572b8522
add ecx, 0x572b8522
and ecx, edi
add ecx, ecx
mov ebx, ecx
not ebx
and ebx, edx
not edx
and edx, ecx
sub ebx, edx
add bl, 0x12
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx + 0x40], bl
inc dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
cmp ecx, 0x14
jb 0x40a880
movzx ebx, byte [esp + 0x40]
test bl, bl
je 0x40a8fa
add esi, 0x13
mov ecx, esi
mov edi, esi
mov edx, eax
jmp 0x40a8ec
inc edi
mov edx, eax
mov ecx, edi
movzx ebx, byte [edx]
test bl, bl
je 0x40a90f
mov bh, byte [ecx]
test bh, bh
je 0x40a95a
cmp bh, bl
jne 0x40a8e0
inc ecx
inc edx
jmp 0x40a8e5
mov byte [0x44aea0], 1
mov ebx, 0x44aea2
mov word [ebx], 0
mov bl, 1
jmp 0x40a95c
test edi, edi
je 0x40a95a
mov byte [0x44aea0], 1
mov dword [esp + 0x40], 0
mov ebx, 0x44aea2
cmp edi, esi
jbe 0x40a906
cmp byte [esi], 0
je 0x40a906
lea eax, [esp + 0x40]
push eax
push edi
push esi
call fcn.0040f2d0
add esp, 0xc
movzx ecx, word [esp + 0x40]
mov word [ebx], cx
add ebx, 2
cmp ebx, 0x44b0a0
jae 0x40a906
add esi, eax
cmp esi, edi
jb 0x40a92b
jmp 0x40a906
xor ebx, ebx
mov eax, dword [esp + 0x3c]
push eax
call fcn.00436be0
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret