Function at 0x40ba00
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], 0xb078686b
mov dword [esp + 0x2c], 0x74766662
lea edx, [esp + 0x30]
mov byte [esp + 0x30], 0x92
mov dword [esp + 0x31], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
cmp eax, 0xc
ja 0x40ba73
nop
nop
nop
nop
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x24afaca
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xc0
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, 0xd
jb 0x40ba40
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], 0x98289ede
mov dword [esp + 0x2c], 0x94179a2f
mov dword [esp + 0x30], 0x90219628
mov dword [esp + 0x34], 0xece6921d
mov dword [esp + 0x38], 0xe866ee41
mov dword [esp + 0x3c], 0xe456ea59
mov dword [esp + 0x40], 0xe087e6af
mov dword [esp + 0x44], 0xfc53e240
mov dword [esp + 0x48], 0xf84bfe4d
mov dword [esp + 0x4c], 0xf458fa40
mov dword [esp + 0x50], 0xf07bf654
mov dword [esp + 0x54], 0xcc44f248
mov dword [esp + 0x58], 0xc8b8ce7b
mov dword [esp + 0x5c], 0xc4beca41
mov dword [esp + 0x60], 0xc048c64a
mov dword [esp + 0x64], 0xdcb6c24e
mov dword [esp + 0x68], 0xd868de63
mov dword [esp + 0x6c], 0xd46eda6b
mov dword [esp + 0x70], 0xd05ad6a0
mov dword [esp + 0x74], 0x2c67d263
mov dword [esp + 0x78], 0x28992e90
mov dword [esp + 0x7c], 0x249c2a8a
mov dword [esp + 0x80], 0x209a2699
mov dword [esp + 0x84], 0x3c36229d
mov dword [esp + 0x88], 0x383f3e27
mov word [esp + 0x8c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x65
ja 0x40bbcd
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
lea edi, [ecx + edx]
add ecx, 0xb1
and ecx, edx
add ecx, ecx
sub edi, ecx
add edi, 0x6110cfb1
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 0xc]
add cl, 0xd4
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x66
jb 0x40bb90
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0xc], 0xa41abaee
mov dword [esp + 0x10], 0xa00ea635
mov dword [esp + 0x14], 0xa2a1
mov byte [esp + 0x18], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xc
ja 0x40bc43
nop
nop
nop
nop
nop
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, 0xa5bf9d0d
xor edx, edi
mov dword [esp], edx
mov edx, dword [esp]
add dl, 0x4c
mov edi, dword [esp + 4]
mov byte [esp + edi + 0xc], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xd
jb 0x40bc10
lea edx, [esp + 4]
lea edi, [esp + 0xc]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040c680
add esp, 0x1c
test al, al
je 0x40bd94
mov word [esp + 0x28], 0x4259
mov byte [esp + 0x2a], 0xee
mov word [esp + 0x2b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40bcbe
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, 0x1cb8958b
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x9d
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40bc90
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 0x40bce1
inc eax
cmp dl, dh
je 0x40bcd0
mov al, 1
mov dword [esp + 8], eax
cmp dl, dh
je 0x40bf82
mov dword [esp + 0x28], 0xa4bcbbae
mov dword [esp + 0x2c], 0x14adada8
mov word [esp + 0x30], 0
mov byte [esp + 0x32], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x40bd4e
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x41ee79b5
xor 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 0x40bd20
mov eax, dword [esp + 4]
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40bd9b
mov edx, esi
mov ecx, eax
jmp 0x40bd77
movzx ebx, byte [edx]
test bl, bl
je 0x40bd9d
mov bh, byte [eax]
test bh, bh
je 0x40bf7a
inc eax
inc edx
lea edi, [ecx + 1]
cmp bh, bl
je 0x40bd8e
mov ecx, edi
mov eax, edi
je 0x40bd70
mov edx, esi
jmp 0x40bd70
xor eax, eax
jmp 0x40bf92
mov ecx, eax
test ecx, ecx
je 0x40bf7a
mov dword [esp + 0x28], 0x959c8f9b
mov dword [esp + 0x2c], 0x96844aae
mov dword [esp + 0x30], 0x46419d90
mov dword [esp + 0x34], 0xf18783ef
mov dword [esp + 0x38], 0x7e59bb82
mov word [esp + 0x3c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x15
ja 0x40be1e
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, 0x585d7922
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xb5
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x16
jb 0x40bdf0
mov eax, dword [esp + 4]
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40be64
lea edi, [esp + 0x28]
mov edx, edi
mov esi, eax
jmp 0x40be47
movzx ecx, byte [edx]
test cl, cl
je 0x40be66
mov ch, byte [eax]
test ch, ch
je 0x40bf7a
inc eax
inc edx
lea ebx, [esi + 1]
cmp ch, cl
je 0x40be5e
mov esi, ebx
mov eax, ebx
je 0x40be40
mov edx, edi
jmp 0x40be40
mov esi, eax
test esi, esi
je 0x40bf7a
mov dword [esp], 0x34463
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0xc]
cmp eax, 3
ja 0x40bece
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]
lea edx, [eax + ecx]
add eax, 0xb5
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0xa6bb40b5
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x28]
add al, 0x4c
mov ecx, dword [esp + 0xc]
mov byte [esp + ecx], al
inc dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 4
jb 0x40be90
movzx eax, byte [esp]
test al, al
je 0x40bf10
add esi, 0x13
mov ebp, esp
mov ecx, ebp
mov edx, esi
mov edi, esi
jmp 0x40bef7
movzx eax, byte [ecx]
test al, al
je 0x40bf21
mov ah, byte [edx]
test ah, ah
je 0x40bf7a
inc edx
inc ecx
lea ebx, [edi + 1]
cmp ah, al
je 0x40bf0a
mov edi, ebx
mov edx, ebx
je 0x40bef0
mov ecx, ebp
jmp 0x40bef0
mov byte [0x44a888], 1
mov eax, 0x44a88a
jmp 0x40bfa3
test edi, edi
je 0x40bf7a
mov byte [0x44a888], 1
mov dword [esp + 0x28], 0
mov eax, 0x44a88a
cmp esi, edi
jae 0x40bfa3
xor ebx, ebx
lea ebp, [esp + 0x28]
cmp byte [esi], 0
je 0x40bf9d
push ebp
push edi
push esi
call fcn.0040d6a0
add esp, 0xc
movzx edx, word [esp + 0x28]
lea ecx, [ebx + 2]
mov word [ebx + 0x44a88a], dx
cmp ebx, 0x1fb
ja 0x40bf72
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40bf43
lea eax, [ecx + 0x44a88a]
jmp 0x40bfa3
mov dword [esp + 8], 0
push dword [esp + 4]
call fcn.0043c040
add esp, 4
mov eax, dword [esp + 8]
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebx + 0x44a88a]
mov word [eax], 0
jmp 0x40bf82