Function at 0x40bb10
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], 0x8a42aead
mov dword [esp + 0x2c], 0x5654505c
lea edx, [esp + 0x30]
mov byte [esp + 0x30], 0xc4
mov word [esp + 0x31], 0
mov byte [esp + 0x33], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
cmp eax, 0xb
ja 0x40bb83
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0xe071d9d0
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xe4
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, 0xc
jb 0x40bb50
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], 0xa3519d5b
mov dword [esp + 0x2c], 0xa752a152
mov dword [esp + 0x30], 0xab58a541
mov dword [esp + 0x34], 0xaf83a95c
mov dword [esp + 0x38], 0xb34bad78
mov dword [esp + 0x3c], 0xb753b140
mov dword [esp + 0x40], 0xbb9ab58a
mov dword [esp + 0x44], 0xbf4eb959
mov dword [esp + 0x48], 0x43aebd4c
mov dword [esp + 0x4c], 0x47a141a9
mov dword [esp + 0x50], 0x4bbe45a5
mov dword [esp + 0x54], 0x4fbd49a1
mov dword [esp + 0x58], 0x53614dbe
mov dword [esp + 0x5c], 0x577b51a8
mov dword [esp + 0x60], 0x5ba155af
mov dword [esp + 0x64], 0x5f7359a3
mov dword [esp + 0x68], 0x63915db6
mov dword [esp + 0x6c], 0x678b6196
mov dword [esp + 0x70], 0x6b9f6549
mov dword [esp + 0x74], 0x6f82699e
mov dword [esp + 0x78], 0x73806d89
mov dword [esp + 0x7c], 0x77857197
mov dword [esp + 0x80], 0x7b9f7590
mov dword [esp + 0x84], 0x7f73799c
mov dword [esp + 0x88], 0x3027d72
mov dword [esp + 0x8c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x67
ja 0x40bcd0
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
add ecx, 0x1227615e
xor ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x3e
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x68
jb 0x40bca0
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0xc], 0xbb30d7f
mov dword [esp + 0x10], 0x7bf09ba
mov word [esp + 0x14], 0x506
mov dword [esp + 0x16], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xd
ja 0x40bd43
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]
add edx, 0x78846f21
xor edx, edi
mov dword [esp], edx
mov edx, dword [esp]
add dl, 0xd1
mov edi, dword [esp + 4]
mov byte [esp + edi + 0xc], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xe
jb 0x40bd10
lea edx, [esp + 4]
lea edi, [esp + 0xc]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040c7c0
add esp, 0x1c
test al, al
je 0x40be84
mov word [esp + 0x28], 0x828f
mov byte [esp + 0x2a], 0x72
mov dword [esp + 0x2b], 0
mov byte [esp + 0x2f], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40bdbe
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x510aedb6
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x36
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40bd90
xor eax, eax
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ecx + eax]
mov dh, byte [esp + eax + 0x28]
test dl, dl
je 0x40bde1
inc eax
cmp dl, dh
je 0x40bdd0
mov al, 1
mov dword [esp + 8], eax
cmp dl, dh
je 0x40c062
mov dword [esp + 0x28], 0x35272635
mov dword [esp + 0x2c], 0x4536343f
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40be3e
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x53005148
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xf6
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40be10
mov eax, dword [esp + 4]
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40be8b
mov edx, esi
mov ecx, eax
jmp 0x40be67
movzx ebx, byte [edx]
test bl, bl
je 0x40be8d
mov bh, byte [eax]
test bh, bh
je 0x40c05a
inc eax
inc edx
lea edi, [ecx + 1]
cmp bh, bl
je 0x40be7e
mov ecx, edi
mov eax, edi
je 0x40be60
mov edx, esi
jmp 0x40be60
xor eax, eax
jmp 0x40c072
mov ecx, eax
test ecx, ecx
je 0x40c05a
mov dword [esp + 0x28], 0xb4a3aea0
mov dword [esp + 0x2c], 0xa7b3736d
mov dword [esp + 0x30], 0x4776bcbb
mov dword [esp + 0x34], 0xa8b0baac
mov dword [esp + 0x38], 0x1f7e62b9
mov word [esp + 0x3c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x15
ja 0x40bf0e
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, 0xfad1048d
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x41
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x16
jb 0x40bee0
mov eax, dword [esp + 4]
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40bf54
lea edi, [esp + 0x28]
mov edx, edi
mov esi, eax
jmp 0x40bf37
movzx ecx, byte [edx]
test cl, cl
je 0x40bf56
mov ch, byte [eax]
test ch, ch
je 0x40c05a
inc eax
inc edx
lea ebx, [esi + 1]
cmp ch, cl
je 0x40bf4e
mov esi, ebx
mov eax, ebx
je 0x40bf30
mov edx, edi
jmp 0x40bf30
mov esi, eax
test esi, esi
je 0x40c05a
mov word [esp + 0x28], 0xd0cb
mov byte [esp + 0x2a], 0x13
mov word [esp + 0x2b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40bfae
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x91bbfadf
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xe
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40bf80
movzx eax, byte [esp + 0x28]
test al, al
je 0x40bff0
add esi, 0x13
lea ebp, [esp + 0x28]
mov ecx, ebp
mov edx, esi
mov edi, esi
jmp 0x40bfd7
movzx eax, byte [ecx]
test al, al
je 0x40c001
mov ah, byte [edx]
test ah, ah
je 0x40c05a
inc edx
inc ecx
lea ebx, [edi + 1]
cmp ah, al
je 0x40bfea
mov edi, ebx
mov edx, ebx
je 0x40bfd0
mov ecx, ebp
jmp 0x40bfd0
mov byte [0x449b30], 1
mov eax, 0x449b32
jmp 0x40c083
test edi, edi
je 0x40c05a
mov byte [0x449b30], 1
mov dword [esp + 0x28], 0
mov eax, 0x449b32
cmp esi, edi
jae 0x40c083
xor ebx, ebx
lea ebp, [esp + 0x28]
cmp byte [esi], 0
je 0x40c07d
push ebp
push edi
push esi
call fcn.0040d860
add esp, 0xc
movzx edx, word [esp + 0x28]
lea ecx, [ebx + 2]
mov word [ebx + 0x449b32], dx
cmp ebx, 0x1fb
ja 0x40c052
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40c023
lea eax, [ecx + 0x449b32]
jmp 0x40c083
mov dword [esp + 8], 0
push dword [esp + 4]
call fcn.0043a960
add esp, 4
mov eax, dword [esp + 8]
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebx + 0x449b32]
mov word [eax], 0
jmp 0x40c062