Function at 0x40baa0
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, 0xfffffff8
sub esp, 0xb8
mov esi, esp
mov eax, dword [ebp + 8]
push eax
sub esp, 0x14
mov ecx, esp
and ecx, 0xfffffff8
mov dword [esi + 0x2c], ecx
mov esp, ecx
push eax
mov ecx, esp
push eax
mov dword [esi + 0x28], esp
sub esp, 0x70
mov ebx, esp
and ebx, 0xfffffff8
mov esp, ebx
push eax
mov dword [esi + 0x64], esp
sub esp, 0x18
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0x30], edx
mov esp, edx
push eax
mov dword [esi + 0x68], esp
sub esp, 0x10
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0x54], edx
mov esp, edx
push eax
mov dword [esi + 0x6c], esp
sub esp, 0x10
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0x20], edx
mov esp, edx
push eax
mov dword [esi + 0x70], esp
sub esp, 0x14
mov dword [esi + 0x7c], esp
sub esp, 0x20
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0x34], edx
mov esp, edx
push eax
mov dword [esi + 0x74], esp
push eax
mov edi, esp
push eax
mov dword [esi + 0x80], esp
sub esp, 0x10
mov edx, esp
and edx, 0xfffffff8
mov dword [esi + 0x24], edx
mov esp, edx
push eax
mov dword [esi + 0x78], esp
mov dword [esi + 0x84], eax
jmp 0x40bb44
mov byte [esi + 3], 0
mov al, byte [ecx]
mov byte [esi + 0x38], al
mov eax, dword [esi + 0x2c]
mov byte [eax], 0x81
mov byte [eax + 1], 0x80
mov byte [eax + 2], 0x90
mov byte [eax + 3], 0x68
mov byte [eax + 4], 0x86
mov byte [eax + 5], 0x86
mov byte [eax + 6], 0x82
mov byte [eax + 7], 0x84
mov byte [eax + 8], 0x2e
add eax, 9
xor ecx, ecx
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 0xc
call fcn.004093e0
add esp, 0xc
mov dword [esi + 4], 0
mov eax, dword [esi + 4]
cmp eax, 0x15
mov dword [esi + 0x58], edi
jae 0x40bbf6
jmp 0x40bbaa
mov eax, dword [esi + 4]
mov ecx, dword [esi + 4]
mov edi, dword [esi + 0x2c]
movzx ecx, byte [edi + ecx]
mov edx, eax
and edx, 0xee732385
xor eax, 0xee732385
lea eax, [eax + edx*2]
mov edx, eax
add edx, ecx
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esi + 0x88], edx
mov eax, dword [esi + 0x88]
add al, 0x5d
mov ecx, dword [esi + 4]
mov byte [edi + ecx], al
mov eax, dword [esi + 4]
inc eax
mov dword [esi + 4], eax
mov eax, dword [esi + 4]
cmp eax, 0x15
jb 0x40bbaa
jmp 0x40bbf6
lea edi, [esi + 0xa7]
mov ecx, 2
mov edx, dword [esi + 0x2c]
mov eax, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esi + 0xaf]
mov eax, edx
add eax, 8
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov al, byte [edx + 8]
mov byte [esi + 0xaf], al
mov eax, dword [esi + 0x64]
mov al, byte [eax]
mov byte [esi + 0x3c], al
mov byte [ebx], 0x63
mov byte [ebx + 1], 0xa5
mov byte [ebx + 2], 0x55
mov byte [ebx + 3], 0xab
mov byte [ebx + 4], 0x58
mov byte [ebx + 5], 0xa9
mov byte [ebx + 6], 0x5c
mov byte [ebx + 7], 0xaf
mov byte [ebx + 8], 0x45
mov byte [ebx + 9], 0xad
mov byte [ebx + 0xa], 0x5e
mov byte [ebx + 0xb], 0xb3
mov byte [ebx + 0xc], 0x46
mov byte [ebx + 0xd], 0xb1
mov byte [ebx + 0xe], 0x83
mov byte [ebx + 0xf], 0xb7
mov byte [ebx + 0x10], 0x62
mov byte [ebx + 0x11], 0xb5
mov byte [ebx + 0x12], 0x4b
mov byte [ebx + 0x13], 0xbb
mov byte [ebx + 0x14], 0x4a
mov byte [ebx + 0x15], 0xb9
mov byte [ebx + 0x16], 0x53
mov byte [ebx + 0x17], 0xbf
mov byte [ebx + 0x18], 0x80
mov byte [ebx + 0x19], 0xbd
mov byte [ebx + 0x1a], 0x9c
mov byte [ebx + 0x1b], 0x43
mov byte [ebx + 0x1c], 0xa5
mov byte [ebx + 0x1d], 0x41
mov byte [ebx + 0x1e], 0xb0
mov byte [ebx + 0x1f], 0x47
mov byte [ebx + 0x20], 0xb6
mov byte [ebx + 0x21], 0x45
mov byte [ebx + 0x22], 0xa8
mov byte [ebx + 0x23], 0x4b
mov byte [ebx + 0x24], 0xa5
mov byte [ebx + 0x25], 0x49
mov byte [ebx + 0x26], 0xad
mov byte [ebx + 0x27], 0x4f
mov byte [ebx + 0x28], 0xa9
mov byte [ebx + 0x29], 0x4d
mov byte [ebx + 0x2a], 0xb8
mov byte [ebx + 0x2b], 0x53
mov byte [ebx + 0x2c], 0xbd
mov byte [ebx + 0x2d], 0x51
mov byte [ebx + 0x2e], 0xa1
mov byte [ebx + 0x2f], 0x57
mov byte [ebx + 0x30], 0xa4
mov byte [ebx + 0x31], 0x55
mov byte [ebx + 0x32], 0x65
mov byte [ebx + 0x33], 0x5b
mov byte [ebx + 0x34], 0xa2
mov byte [ebx + 0x35], 0x59
mov byte [ebx + 0x36], 0x6b
mov byte [ebx + 0x37], 0x5f
mov byte [ebx + 0x38], 0xa7
mov byte [ebx + 0x39], 0x5d
mov byte [ebx + 0x3a], 0xa5
mov byte [ebx + 0x3b], 0x63
mov byte [ebx + 0x3c], 0x9b
mov byte [ebx + 0x3d], 0x61
mov byte [ebx + 0x3e], 0x53
mov byte [ebx + 0x3f], 0x67
mov byte [ebx + 0x40], 0x8c
mov byte [ebx + 0x41], 0x65
mov byte [ebx + 0x42], 0x95
mov byte [ebx + 0x43], 0x6b
mov byte [ebx + 0x44], 0x9c
mov byte [ebx + 0x45], 0x69
mov byte [ebx + 0x46], 0x9b
mov byte [ebx + 0x47], 0x6f
mov byte [ebx + 0x48], 0x5d
mov byte [ebx + 0x49], 0x6d
mov byte [ebx + 0x4a], 0x97
mov byte [ebx + 0x4b], 0x73
mov byte [ebx + 0x4c], 0x84
mov byte [ebx + 0x4d], 0x71
mov byte [ebx + 0x4e], 0x9c
mov byte [ebx + 0x4f], 0x77
mov byte [ebx + 0x50], 0x9d
mov byte [ebx + 0x51], 0x75
mov byte [ebx + 0x52], 0x86
mov byte [ebx + 0x53], 0x7b
mov byte [ebx + 0x54], 0x9f
mov byte [ebx + 0x55], 0x79
mov byte [ebx + 0x56], 0x89
mov byte [ebx + 0x57], 0x7f
mov byte [ebx + 0x58], 0x9a
mov byte [ebx + 0x59], 0x7d
mov byte [ebx + 0x5a], 0x97
mov byte [ebx + 0x5b], 3
mov byte [ebx + 0x5c], 0xe6
mov byte [ebx + 0x5d], 1
mov byte [ebx + 0x5e], 0x13
mov byte [ebx + 0x5f], 7
mov byte [ebx + 0x60], 8
mov byte [ebx + 0x61], 5
mov byte [ebx + 0x62], 4
mov byte [ebx + 0x63], 0xb
mov word [ebx + 0x6c], 0
mov dword [ebx + 0x68], 0
mov dword [ebx + 0x64], 0
mov dword [esi + 8], 0
mov eax, dword [esi + 8]
cmp eax, 0x6e
mov edi, dword [esi + 0x54]
jae 0x40be28
jmp 0x40bde4
mov eax, dword [esi + 8]
mov ecx, dword [esi + 8]
movzx ecx, byte [ebx + ecx]
mov edx, eax
add edx, 0xf49139e5
lea eax, [eax + ecx - 0xb6ec61b]
and edx, ecx
add edx, edx
sub eax, edx
mov dword [esi + 0x8c], eax
mov eax, dword [esi + 0x8c]
add al, 0xbd
mov ecx, dword [esi + 8]
mov byte [ebx + ecx], al
mov eax, dword [esi + 8]
inc eax
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
cmp eax, 0x6e
jb 0x40bde4
jmp 0x40be28
call fcn.00409bc0
mov eax, dword [esi + 0x68]
mov al, byte [eax]
mov byte [esi + 0x40], al
mov eax, dword [esi + 0x30]
mov byte [eax], 0x6f
mov byte [eax + 1], 0xb1
mov byte [eax + 2], 0x13
mov byte [eax + 3], 0xb3
mov byte [eax + 4], 0x24
mov byte [eax + 5], 0xb5
mov byte [eax + 6], 0x2f
mov byte [eax + 7], 0xb7
mov byte [eax + 8], 0xa8
mov byte [eax + 9], 0xa9
mov dword [eax + 0xd], 0
mov dword [eax + 0xa], 0
mov dword [esi + 0xc], 0
mov eax, dword [esi + 0xc]
cmp eax, 0x11
jae 0x40bec5
jmp 0x40be7e
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0xc]
mov edi, dword [esi + 0x30]
movzx ecx, byte [edi + ecx]
mov edx, eax
add edx, 0x48
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0xaf8cab48
mov dword [esi + 0x90], eax
mov eax, dword [esi + 0x90]
add al, 8
mov ecx, dword [esi + 0xc]
mov byte [edi + ecx], al
mov eax, dword [esi + 0xc]
inc eax
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0xc]
cmp eax, 0x11
jb 0x40be7e
mov edi, dword [esi + 0x54]
jmp 0x40bec5
mov eax, dword [esi + 0x84]
jmp 0x40becd
xor ecx, ecx
sub esp, 0x1c
mov dword [esp], eax
mov eax, dword [esi + 0x30]
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
lea eax, [esi + 0xa7]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 8
mov ebx, dword [esi + 0x28]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], 0
call fcn.0040ca60
add esp, 0x1c
test al, 1
jne 0x40bf12
jmp 0x40c32c
mov eax, dword [esi + 0x6c]
mov al, byte [eax]
mov byte [esi + 0x44], al
mov byte [edi], 0x1f
mov byte [edi + 1], 0x22
mov byte [edi + 2], 0xf2
mov word [edi + 0xb], 0
mov dword [edi + 7], 0
mov dword [edi + 3], 0
mov dword [esi + 0x10], 0
mov eax, dword [esi + 0x10]
cmp eax, 0xd
jae 0x40bf9d
jmp 0x40bf4a
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x10]
movzx ecx, byte [edi + ecx]
mov edx, eax
add edx, 0xbe
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0xcda66dbe
mov dword [esi + 0x94], eax
mov ecx, dword [esi + 0x94]
mov eax, ecx
or eax, 0xcd
and ecx, 0xcd
add eax, ecx
inc al
mov ecx, dword [esi + 0x10]
mov byte [edi + ecx], al
mov eax, dword [esi + 0x10]
inc eax
mov dword [esi + 0x10], eax
mov eax, dword [esi + 0x10]
cmp eax, 0xd
jb 0x40bf4a
jmp 0x40bf9d
mov eax, dword [ebx]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], edi
call fcn.0040e240
add esp, 8
cmp eax, 0
jne 0x40bfbf
mov byte [esi + 3], 1
jmp 0x40c318
mov eax, dword [esi + 0x70]
mov al, byte [eax]
mov byte [esi + 0x48], al
mov eax, dword [esi + 0x20]
mov byte [eax], 0x1b
mov byte [eax + 1], 0x28
mov byte [eax + 2], 0x55
mov byte [eax + 3], 0x67
mov byte [eax + 4], 0x59
mov byte [eax + 5], 0x62
mov byte [eax + 6], 0x64
mov byte [eax + 7], 0xf7
mov byte [eax + 8], 0
mov dword [esi + 0x14], 0
mov eax, dword [esi + 0x14]
cmp eax, 9
jae 0x40c053
jmp 0x40bffe
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x20]
movzx ecx, byte [edx + ecx]
mov edx, eax
add edx, 0xbe
mov edi, ecx
not edi
mov ebx, edx
or ebx, edi
and edx, ecx
add ebx, edx
neg ebx
lea eax, [eax + ebx + 0x722070bd]
mov dword [esi + 0x98], eax
mov eax, dword [esi + 0x98]
add al, 0xce
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x20]
mov byte [edx + ecx], al
mov eax, dword [esi + 0x14]
inc eax
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x14]
cmp eax, 9
jb 0x40bffe
mov ebx, dword [esi + 0x28]
jmp 0x40c053
mov eax, dword [ebx]
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x20]
mov dword [esp + 4], eax
call fcn.0040c9f0
add esp, 8
cmp eax, 0
setne al
jmp 0x40c072
test al, 1
jne 0x40c07b
jmp 0x40c316
mov eax, dword [esi + 0x74]
mov al, byte [eax]
mov byte [esi + 0x4c], al
mov eax, dword [esi + 0x34]
mov byte [eax], 0xa4
mov byte [eax + 1], 0xb2
mov byte [eax + 2], 0xa7
mov byte [eax + 3], 0x50
mov byte [eax + 4], 0x29
mov byte [eax + 5], 0xf
mov byte [eax + 6], 0x4f
mov byte [eax + 7], 0x5b
mov byte [eax + 8], 0x5f
mov byte [eax + 9], 0x50
mov byte [eax + 0xa], 0xa
mov byte [eax + 0xb], 3
mov byte [eax + 0xc], 0x68
mov byte [eax + 0xd], 0x46
mov byte [eax + 0xe], 0x5c
mov byte [eax + 0xf], 0x6c
mov byte [eax + 0x10], 0x5d
mov byte [eax + 0x11], 0x26
mov byte [eax + 0x12], 2
mov byte [eax + 0x13], 0xfb
add eax, 0x14
xor ecx, ecx
sub esp, 0xc
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 9
call fcn.004093e0
add esp, 0xc
call fcn.00409bc0
mov dword [esi + 0x18], 0
mov eax, dword [esi + 0x18]
cmp eax, 0x1d
jae 0x40c151
jmp 0x40c10e
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x18]
mov edi, dword [esi + 0x34]
movzx ecx, byte [edi + ecx]
mov edx, eax
add edx, 0x7e058e7d
add eax, 0x7d
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esi + 0x9c], edx
mov eax, dword [esi + 0x9c]
add al, 0x95
mov ecx, dword [esi + 0x18]
mov byte [edi + ecx], al
mov eax, dword [esi + 0x18]
inc eax
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x18]
cmp eax, 0x1d
jb 0x40c10e
jmp 0x40c151
jmp 0x40c153
jmp 0x40c155
jmp 0x40c157
mov eax, dword [esi + 0x34]
mov ebx, eax
mov edx, dword [esi + 0x7c]
mov edi, edx
mov ecx, 5
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
mov edi, edx
add edi, 0x14
add eax, 0x14
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ebx, dword [esi + 0x28]
mov eax, dword [ebx]
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0040c9f0
add esp, 8
mov edi, dword [esi + 0x58]
mov dword [edi], eax
cmp dword [edi], 0
je 0x40c312
mov eax, dword [edi]
add eax, 0x13
mov dword [edi], eax
call fcn.00409bc0
mov eax, dword [esi + 0x78]
mov al, byte [eax]
mov byte [esi + 0x50], al
mov eax, dword [esi + 0x24]
mov byte [eax], 0x4a
mov byte [eax + 1], 0x6f
mov byte [eax + 2], 0x22
mov dword [eax + 0xb], 0
mov dword [eax + 7], 0
mov dword [eax + 3], 0
mov dword [esi + 0x1c], 0
mov eax, dword [esi + 0x1c]
cmp eax, 0xf
jae 0x40c246
jmp 0x40c1e8
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x1c]
mov edx, dword [esi + 0x24]
movzx edx, byte [edx + ecx]
mov edi, eax
add edi, 0x9b7a0e86
lea ecx, [eax + edx - 0x6485f17a]
add eax, 0x86
and eax, edx
and edi, edx
add eax, edi
mov edx, eax
xor edx, ecx
not eax
and ecx, eax
add ecx, ecx
sub ecx, edx
mov dword [esi + 0xa0], ecx
mov eax, dword [esi + 0xa0]
add al, 0x56
mov ecx, dword [esi + 0x1c]
mov edx, dword [esi + 0x24]
mov byte [edx + ecx], al
mov eax, dword [esi + 0x1c]
inc eax
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x1c]
cmp eax, 0xf
jb 0x40c1e8
mov edi, dword [esi + 0x58]
jmp 0x40c246
mov eax, dword [edi]
sub esp, 8
mov dword [esp], eax
mov eax, dword [esi + 0x24]
mov dword [esp + 4], eax
call fcn.0040c9f0
add esp, 8
mov ecx, dword [esi + 0x80]
mov dword [ecx], eax
mov eax, ecx
jmp 0x40c269
cmp dword [eax], 0
je 0x40c30e
mov byte [0x447420], 1
mov ebx, dword [eax]
mov edi, dword [edi]
cmp ebx, 0
jne 0x40c298
mov ecx, edi
jmp 0x40c286
mov eax, ecx
mov dl, byte [eax]
add ecx, 1
cmp dl, 0
jne 0x40c286
sub eax, edi
mov ebx, edi
add ebx, eax
mov dword [esi + 0x5c], 0
lea eax, [0x447422]
cmp ebx, edi
jbe 0x40c302
lea ecx, [0x447422]
jmp 0x40c2b1
cmp byte [edi], 0
jne 0x40c2ba
mov eax, ecx
jmp 0x40c302
sub esp, 0xc
lea eax, [esi + 0x5c]
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
mov dword [esp], edi
mov dword [esi + 0x60], ecx
call fcn.0040f7d0
add esp, 0xc
add edi, eax
mov cx, word [esi + 0x5c]
mov edx, dword [esi + 0x60]
mov eax, edx
add eax, 2
mov word [edx], cx
mov ecx, eax
sub ecx, 0x447620
setb cl
mov edx, edi
sub edx, ebx
setb dl
and cl, dl
test cl, 1
mov ecx, eax
jne 0x40c2b1
mov word [eax], 0
mov byte [esi + 3], 1
mov ebx, dword [esi + 0x28]
jmp 0x40c310
jmp 0x40c312
jmp 0x40c314
jmp 0x40c316
jmp 0x40c318
mov eax, dword [ebx]
sub esp, 4
mov dword [esp], eax
call fcn.00438c40
add esp, 4
jmp 0x40c32a
jmp 0x40c32c
mov al, byte [esi + 3]
and al, 1
movzx eax, al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret