Function at 0x40ada0
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 + 0x28], 0x66aa9a87
mov dword [esp + 0x2c], 0x829c9894
lea edx, [esp + 0x30]
mov byte [esp + 0x30], 0x3c
mov dword [esp + 0x31], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
cmp eax, 0xf
ja 0x40ae2f
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]
lea esi, [eax + 0x89]
and esi, ecx
add eax, ecx
add esi, esi
sub eax, esi
add eax, 0xf703a789
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x53
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, 0x10
jb 0x40adf0
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], 0x33c531f3
mov dword [esp + 0x2c], 0x3fc23dca
mov dword [esp + 0x30], 0x3bcc39d5
mov dword [esp + 0x34], 0xc7f3c538
mov dword [esp + 0x38], 0xc33bc11c
mov dword [esp + 0x3c], 0xcf23cd3c
mov dword [esp + 0x40], 0xcbeac9f2
mov dword [esp + 0x44], 0xd726d535
mov dword [esp + 0x48], 0xd326d120
mov dword [esp + 0x4c], 0xdf3ddd35
mov dword [esp + 0x50], 0xdb26d939
mov dword [esp + 0x54], 0xe711e50d
mov dword [esp + 0x58], 0xe3d5e116
mov dword [esp + 0x5c], 0xefdbed14
mov dword [esp + 0x60], 0xeb15e917
mov dword [esp + 0x64], 0xf7c3f50b
mov dword [esp + 0x68], 0xf305f11e
mov dword [esp + 0x6c], 0xff0bfd0e
mov dword [esp + 0x70], 0xfb07f9cd
mov dword [esp + 0x74], 0x87728576
mov dword [esp + 0x78], 0x8374816d
mov dword [esp + 0x7c], 0x8f798d6f
mov dword [esp + 0x80], 0x8b678964
mov dword [esp + 0x84], 0x97839578
mov dword [esp + 0x88], 0x9392919a
mov byte [esp + 0x8e], 0
mov word [esp + 0x8c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x66
ja 0x40af8b
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
mov edi, ecx
and edi, 0xf3f4
xor ecx, 0xf3f4
lea ecx, [ecx + edi*2]
xor ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x3c
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x67
jb 0x40af50
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0xc], 0x77d7095b
mov dword [esp + 0x10], 0x73db75e4
mov word [esp + 0x14], 0x7170
mov dword [esp + 0x16], 0
mov byte [esp + 0x1a], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xe
ja 0x40b00f
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov edi, dword [esp + 4]
movzx edi, byte [esp + edi + 0xc]
lea ebx, [edx + 0xbe]
and ebx, edi
add edx, edi
add ebx, ebx
sub edx, ebx
add edx, 0x747a1abe
mov dword [esp], edx
mov edx, dword [esp]
add dl, 0x4a
mov edi, dword [esp + 4]
mov byte [esp + edi + 0xc], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xf
jb 0x40afd0
lea edx, [esp + 4]
lea edi, [esp + 0xc]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040bd50
add esp, 0x1c
test al, al
je 0x40b184
mov word [esp + 0x28], 0x96ab
mov byte [esp + 0x2a], 0x3e
mov word [esp + 0x2b], 0
mov byte [esp + 0x2d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x40b0a3
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + ecx]
add edx, 0xa1c69d0a
add eax, 0xa
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xce
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x40b060
xor eax, eax
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ecx + eax]
mov dh, byte [esp + eax + 0x28]
test dl, dl
je 0x40b0c1
inc eax
cmp dl, dh
je 0x40b0b0
mov al, 1
mov dword [esp + 8], eax
cmp dl, dh
je 0x40b382
mov dword [esp + 0x28], 0x97818493
mov dword [esp + 0x2c], 0x27989a9d
mov word [esp + 0x30], 0
mov byte [esp + 0x32], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x40b145
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + ecx]
add edx, 0x9c3d9f88
add eax, 0x88
and eax, ecx
mov ecx, edx
not ecx
and ecx, eax
add ecx, eax
not eax
and eax, edx
sub eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x58
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x40b100
mov eax, dword [esp + 4]
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40b18b
mov edx, esi
mov ecx, eax
jmp 0x40b167
movzx ebx, byte [edx]
test bl, bl
je 0x40b18d
mov bh, byte [eax]
test bh, bh
je 0x40b37a
inc eax
inc edx
lea edi, [ecx + 1]
cmp bh, bl
je 0x40b17e
mov ecx, edi
mov eax, edi
je 0x40b160
mov edx, esi
jmp 0x40b160
xor eax, eax
jmp 0x40b392
mov ecx, eax
test ecx, ecx
je 0x40b37a
mov dword [esp + 0x28], 0xa2a9bcb6
mov dword [esp + 0x2c], 0xa9b9f99b
mov dword [esp + 0x30], 0xf1f4aead
mov dword [esp + 0x34], 0x5eaab05a
mov dword [esp + 0x38], 0xe9cca8af
mov byte [esp + 0x3c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x14
ja 0x40b225
nop
nop
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]
mov edx, eax
and edx, 0xd2758ccf
xor eax, 0xd2758ccf
lea eax, [eax + edx*2]
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov ecx, eax
not ecx
and ecx, 0xb
and eax, 0xf4
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x15
jb 0x40b1e0
mov eax, dword [esp + 4]
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40b264
lea edi, [esp + 0x28]
mov edx, edi
mov esi, eax
jmp 0x40b247
movzx ecx, byte [edx]
test cl, cl
je 0x40b266
mov ch, byte [eax]
test ch, ch
je 0x40b37a
inc eax
inc edx
lea ebx, [esi + 1]
cmp ch, cl
je 0x40b25e
mov esi, ebx
mov eax, ebx
je 0x40b240
mov edx, edi
jmp 0x40b240
mov esi, eax
test esi, esi
je 0x40b37a
mov word [esp + 0x28], 0x126
mov byte [esp + 0x2a], 0xc6
mov word [esp + 0x2b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40b2d1
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax - 0x47528ecf]
lea edi, [eax + ecx]
add edi, 0xb8ad7131
add eax, 0x31
or eax, edx
and eax, ecx
add eax, eax
sub edi, eax
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0xc]
add al, 0xb
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40b290
movzx eax, byte [esp + 0x28]
test al, al
je 0x40b310
add esi, 0x13
lea ebp, [esp + 0x28]
mov ecx, ebp
mov edx, esi
mov edi, esi
jmp 0x40b2f7
movzx eax, byte [ecx]
test al, al
je 0x40b321
mov ah, byte [edx]
test ah, ah
je 0x40b37a
inc edx
inc ecx
lea ebx, [edi + 1]
cmp ah, al
je 0x40b30a
mov edi, ebx
mov edx, ebx
je 0x40b2f0
mov ecx, ebp
jmp 0x40b2f0
mov byte [0x44a9c0], 1
mov eax, 0x44a9c2
jmp 0x40b3a3
test edi, edi
je 0x40b37a
mov byte [0x44a9c0], 1
mov dword [esp + 0x28], 0
mov eax, 0x44a9c2
cmp esi, edi
jae 0x40b3a3
xor ebx, ebx
lea ebp, [esp + 0x28]
cmp byte [esi], 0
je 0x40b39d
push ebp
push edi
push esi
call fcn.0040ccd0
add esp, 0xc
movzx edx, word [esp + 0x28]
lea ecx, [ebx + 2]
mov word [ebx + 0x44a9c2], dx
cmp ebx, 0x1fb
ja 0x40b372
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40b343
lea eax, [ecx + 0x44a9c2]
jmp 0x40b3a3
mov dword [esp + 8], 0
push dword [esp + 4]
call fcn.0043a150
add esp, 4
mov eax, dword [esp + 8]
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebx + 0x44a9c2]
mov word [eax], 0
jmp 0x40b382