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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x8c
mov dword [esp + 0x28], 0x9aaebea3
mov dword [esp + 0x2c], 0xa6a4a0a4
lea edx, [esp + 0x30]
mov byte [esp + 0x30], 0x5c
mov dword [esp + 0x31], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
cmp eax, 0xf
ja 0x40ad93
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x159220f
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xb5
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, 0x10
jb 0x40ad60
lea eax, [esp + 0x1c]
lea esi, [esp + 0x28]
mov ebx, esi
mov edi, eax
mov ecx, 2
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x24]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
movzx ecx, byte [esp + 0x30]
mov byte [esp + 0x24], cl
mov dword [esp + 0x28], 0x51bf4f89
mov dword [esp + 0x2c], 0x55a653be
mov dword [esp + 0x30], 0x59b857b3
mov dword [esp + 0x34], 0x5d755bac
mov dword [esp + 0x38], 0x61a55f88
mov dword [esp + 0x3c], 0x65856390
mov dword [esp + 0x40], 0x6946675e
mov dword [esp + 0x44], 0x6d9a6b8b
mov dword [esp + 0x48], 0x71826f9c
mov dword [esp + 0x4c], 0x7597739b
mov dword [esp + 0x50], 0x79827797
mov dword [esp + 0x54], 0x7d8b7b93
mov dword [esp + 0x58], 0x14f7f92
mov dword [esp + 0x5c], 0x52d03f8
mov dword [esp + 0x60], 0x9ff07fd
mov dword [esp + 0x64], 0xd250bf1
mov dword [esp + 0x68], 0x11ff0fea
mov dword [esp + 0x6c], 0x15fd13e2
mov dword [esp + 0x70], 0x19e1173b
mov dword [esp + 0x74], 0x1df61bea
mov dword [esp + 0x78], 0x21f01ffb
mov dword [esp + 0x7c], 0x25d323c5
mov dword [esp + 0x80], 0x29c127c0
mov dword [esp + 0x84], 0x2d252bcc
mov dword [esp + 0x88], 0x312e2f26
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x63
ja 0x40aee7
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
lea edi, [ecx + edx]
add edi, 0x3ed37c8d
add ecx, 0x3ed37c8d
and ecx, edx
mov edx, edi
not edx
and edx, ecx
add edx, ecx
not ecx
and ecx, edi
sub ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x3f
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x64
jb 0x40aea0
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0xc], 0x933391c7
mov dword [esp + 0x10], 0x9f379d0c
mov dword [esp + 0x14], 0x9998
mov byte [esp + 0x18], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xc
ja 0x40af53
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov edi, dword [esp + 4]
movzx edi, byte [esp + edi + 0xc]
add edx, 0x1f7b5da4
xor edx, edi
mov dword [esp], edx
mov edx, dword [esp]
add dl, 0xcc
mov edi, dword [esp + 4]
mov byte [esp + edi + 0xc], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xd
jb 0x40af20
lea edx, [esp + 4]
lea edi, [esp + 0xc]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040bb20
add esp, 0x1c
test al, al
je 0x40b0a4
mov word [esp + 0x28], 0x3e3d
mov byte [esp + 0x2a], 0x8a
mov dword [esp + 0x2b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 6
ja 0x40afd9
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
mov edx, eax
and edx, 0xd6604b23
xor eax, 0xd6604b23
lea eax, [eax + edx*2]
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x51
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 7
jb 0x40afa0
xor eax, eax
mov ecx, dword [esp + 4]
nop
movzx edx, byte [ecx + eax]
mov dh, byte [esp + eax + 0x28]
test dl, dl
je 0x40aff1
inc eax
cmp dl, dh
je 0x40afe0
mov al, 1
mov dword [esp + 8], eax
cmp dl, dh
je 0x40b272
mov dword [esp + 0x28], 0xabb9bcaf
mov dword [esp + 0x2c], 0xe350aeb5
mov byte [esp + 0x30], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x40b05e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0xef22e3fa
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x1e
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x40b030
mov eax, dword [esp + 4]
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40b0ab
mov edx, esi
mov ecx, eax
jmp 0x40b087
movzx ebx, byte [edx]
test bl, bl
je 0x40b0ad
mov bh, byte [eax]
test bh, bh
je 0x40b26a
inc eax
inc edx
lea edi, [ecx + 1]
cmp bh, bl
je 0x40b09e
mov ecx, edi
mov eax, edi
je 0x40b080
mov edx, esi
jmp 0x40b080
xor eax, eax
jmp 0x40b282
mov ecx, eax
test ecx, ecx
je 0x40b26a
mov dword [esp + 0x28], 0xf6e1ece2
mov dword [esp + 0x2c], 0xe1f1312f
mov dword [esp + 0x30], 0x3934fae5
mov dword [esp + 0x34], 0xeaf6f8ee
mov dword [esp + 0x38], 0xa13c20fb
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x13
ja 0x40b11e
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0xc98f326d
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xdf
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x14
jb 0x40b0f0
mov eax, dword [esp + 4]
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40b164
lea edi, [esp + 0x28]
mov edx, edi
mov esi, eax
jmp 0x40b147
movzx ecx, byte [edx]
test cl, cl
je 0x40b166
mov ch, byte [eax]
test ch, ch
je 0x40b26a
inc eax
inc edx
lea ebx, [esi + 1]
cmp ch, cl
je 0x40b15e
mov esi, ebx
mov eax, ebx
je 0x40b140
mov edx, edi
jmp 0x40b140
mov esi, eax
test esi, esi
je 0x40b26a
mov dword [esp], 0x12d732
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 3
ja 0x40b1c1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
movzx ecx, byte [esp + ecx]
add eax, 0x5754bbc4
xor eax, ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
add al, 0x2c
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 4
jb 0x40b190
movzx eax, byte [esp]
test al, al
je 0x40b200
add esi, 0x13
mov ebp, esp
mov ecx, ebp
mov edx, esi
mov edi, esi
jmp 0x40b1e7
movzx eax, byte [ecx]
test al, al
je 0x40b211
mov ah, byte [edx]
test ah, ah
je 0x40b26a
inc edx
inc ecx
lea ebx, [edi + 1]
cmp ah, al
je 0x40b1fa
mov edi, ebx
mov edx, ebx
je 0x40b1e0
mov ecx, ebp
jmp 0x40b1e0
mov byte [0x441bd0], 1
mov eax, 0x441bd2
jmp 0x40b293
test edi, edi
je 0x40b26a
mov byte [0x441bd0], 1
mov dword [esp + 0x28], 0
mov eax, 0x441bd2
cmp esi, edi
jae 0x40b293
xor ebx, ebx
lea ebp, [esp + 0x28]
cmp byte [esi], 0
je 0x40b28d
push ebp
push edi
push esi
call fcn.0040cca0
add esp, 0xc
movzx edx, word [esp + 0x28]
lea ecx, [ebx + 2]
mov word [ebx + 0x441bd2], dx
cmp ebx, 0x1fb
ja 0x40b262
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40b233
lea eax, [ecx + 0x441bd2]
jmp 0x40b293
mov dword [esp + 8], 0
push dword [esp + 4]
call fcn.00433180
add esp, 4
mov eax, dword [esp + 8]
add esp, 0x8c
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebx + 0x441bd2]
mov word [eax], 0
jmp 0x40b272