Function at 0x40b4e0
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, 0xb0
mov dword [esp + 0x28], 0xeeb6c2cd
mov dword [esp + 0x2c], 0x3a3cc0bc
lea ebx, [esp + 0x30]
mov byte [esp + 0x30], 0xd4
mov dword [esp + 0x31], 0
mov dword [esp + 0x35], 0
mov word [esp + 0x39], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, eax
not edx
movzx ecx, byte [esp + eax + 0x28]
or edx, 0xbc99a585
mov edi, edx
and edi, 0xea3c4d7b
mov esi, eax
and esi, 0x1421200
or esi, edi
mov edi, eax
and edi, 0x43665a78
xor esi, 0x15c3b286
or esi, edi
not esi
imul esi, edi
and edx, 0x6c33516d
mov edi, eax
and edi, 0x3440a12
or edi, edx
mov edx, eax
and edx, 2
xor edi, 0x6c33516f
or edi, edx
imul edi, edx
mov edx, eax
xor edx, 0xc3665a7a
add edx, edi
add edx, esi
mov esi, ecx
not esi
and esi, edx
mov edi, edx
xor edi, ecx
add edx, ecx
sub ecx, edi
add ecx, esi
mov esi, ecx
and esi, 0xfffffffd
mov edi, ecx
and edi, 2
or ecx, 2
imul ecx, edi
xor edi, 2
imul edi, esi
add ecx, edi
mov esi, ecx
xor esi, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, esi
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
mov edx, ecx
xor edx, 0xa9
and ecx, 0x29
lea ecx, [edx + ecx*2]
inc cl
mov byte [esp + eax + 0x28], cl
inc eax
cmp eax, 0x13
jne 0x40b530
lea edi, [esp + 0xa3]
lea eax, [esp + 0x28]
mov ecx, 2
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0xab]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx eax, byte [esp + 0x30]
mov byte [esp + 0xab], al
mov dword [esp + 0x28], 0x53e1519b
mov dword [esp + 0x2c], 0x5fe05de4
mov dword [esp + 0x30], 0x5bee59f1
mov dword [esp + 0x34], 0x27d325e6
mov dword [esp + 0x38], 0x239b21fa
mov dword [esp + 0x3c], 0x2f832d92
mov dword [esp + 0x40], 0x2bc829d4
mov dword [esp + 0x44], 0x37843589
mov dword [esp + 0x48], 0x33843186
mov dword [esp + 0x4c], 0x3f913d99
mov dword [esp + 0x50], 0x3b84399d
mov dword [esp + 0x54], 0x7b50591
mov dword [esp + 0x58], 0x3f101b0
mov dword [esp + 0x5c], 0xffb0dba
mov dword [esp + 0x60], 0xbb109b7
mov dword [esp + 0x64], 0x17e315b3
mov dword [esp + 0x68], 0x13a111b8
mov dword [esp + 0x6c], 0x1fab1da0
mov dword [esp + 0x70], 0x1ba719e9
mov dword [esp + 0x74], 0xe750e5a8
mov dword [esp + 0x78], 0xe356e149
mov dword [esp + 0x7c], 0xef5ded4f
mov dword [esp + 0x80], 0xeb47e942
mov dword [esp + 0x84], 0xf7e3f546
mov dword [esp + 0x88], 0xf3f0f1fc
mov dword [esp + 0x8f], 0
mov dword [esp + 0x8c], 0
mov eax, 0x3fcff32
mov dword [esp + 4], 0xfc0300cd
mov dword [esp + 0x9c], eax
movzx edx, byte [esp + eax - 0x3fcff0a]
mov dword [esp + 0x98], edx
lea ecx, [eax + 1]
mov eax, ecx
mov edi, ecx
mov dword [esp], ecx
xor eax, edx
mov ecx, eax
and ecx, 2
mov esi, eax
or esi, 2
imul esi, ecx
xor ecx, 2
mov edx, eax
and edx, 0x7ffffffd
imul edx, ecx
add esi, edx
not esi
add esi, eax
and esi, edi
mov ecx, esi
not ecx
mov edx, ecx
or ecx, 2
lea eax, [ecx + ecx]
not eax
add eax, ecx
and edx, 2
mov ecx, edx
not ecx
and ecx, eax
imul ecx, edx
mov ebx, eax
and ebx, edx
or eax, edx
imul eax, ebx
mov edx, esi
and edx, 2
or esi, 2
imul esi, edx
lea edx, [esi + ecx]
mov edi, dword [esp + 4]
add edx, edi
add edx, eax
add esi, eax
add esi, ecx
mov ebx, dword [esp + 0x9c]
mov eax, ebx
sub eax, esi
mov ecx, dword [esp + 0x98]
xor edx, ecx
and eax, ecx
add eax, eax
sub eax, edx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
add al, 0x9a
mov byte [esp + ebx - 0x3fcff0a], al
dec edi
mov dword [esp + 4], edi
mov ecx, dword [esp]
mov eax, ecx
cmp ecx, 0x3fcff9d
jne 0x40b710
mov dword [esp + 8], 0x73d36d1f
mov dword [esp + 0xc], 0x77df71c0
mov word [esp + 0x10], 0x7574
mov dword [esp + 0x12], 0
mov dword [esp + 0x15], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 8]
lea esi, [ecx + 0x3fcbdc4e]
mov edi, 0xc03423b1
sub edi, ecx
lea eax, [edi + edi]
not eax
add eax, edi
and edi, 0x39d0893e
and eax, 0xc62f76c1
or eax, edi
xor eax, 0xc62f76c1
mov edi, eax
and edi, edx
lea ebx, [eax + edx]
or eax, edx
not edx
and edx, esi
not ebx
lea esi, [ebx + edi*2]
and eax, esi
mov esi, eax
xor esi, 0x79044b92
add eax, eax
and eax, 0xdf768da
sub esi, eax
lea eax, [esi + esi]
add eax, 0xdf768da
not eax
add eax, esi
add eax, 0x86fbb46d
add esi, 0x86fbb46d
not esi
and esi, eax
or esi, edx
mov dword [esp + 0x24], esi
mov eax, dword [esp + 0x24]
lea edx, [eax + eax]
not edx
add edx, eax
and edx, 0x22
and eax, 0xdd
sub eax, edx
mov byte [esp + ecx + 8], al
mov eax, ecx
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 0x11
jb 0x40b810
lea eax, [esp + 0x20]
lea ecx, [esp + 8]
push 0
push eax
push 8
lea eax, [esp + 0xaf]
push eax
lea eax, [esp + 0x38]
push eax
push ecx
push dword [ebp + 8]
call fcn.0040c470
add esp, 0x1c
test al, al
je 0x40bb26
mov word [esp + 0x28], 0xe4e7
mov byte [esp + 0x2a], 0x50
mov dword [esp + 0x2f], 0
mov dword [esp + 0x2b], 0
mov eax, 0xc33cff33
mov ecx, 0x3cc300cc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x3cc300f5]
mov edi, ecx
and edi, 0xb3
mov esi, eax
and esi, 0x4c
or esi, edi
xor esi, 0xb3
and esi, edx
not esi
or edx, eax
and edx, esi
mov dword [esp + 8], edx
mov edx, dword [esp + 8]
add dl, 0x9b
mov byte [esp + eax + 0x3cc300f5], dl
inc eax
dec ecx
cmp ecx, 0x3cc300c1
jne 0x40b910
xor ecx, ecx
mov eax, dword [esp + 0x20]
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [eax + ecx]
mov dh, byte [esp + ecx + 0x28]
test dl, dl
je 0x40b971
inc ecx
cmp dl, dh
je 0x40b960
mov bl, 1
cmp dl, dh
je 0x40bdc2
mov dword [esp + 0x28], 0x97e5e89b
mov dword [esp + 0x2c], 0x7949299
mov word [esp + 0x30], 0
mov dword [esp + 8], 0xd0c466cd
mov eax, dword [esp + 8]
add al, 0xa6
mov byte [esp + 0x28], al
movzx eax, byte [esp + 0x29]
mov ecx, eax
and ecx, 0x57
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0xd0c46657
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xa6
mov byte [esp + 0x29], al
movzx eax, byte [esp + 0x2a]
mov ecx, eax
and ecx, 0x58
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0xd0c46658
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xa6
mov byte [esp + 0x2a], al
movzx eax, byte [esp + 0x2b]
mov ecx, eax
and ecx, 0x59
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0xd0c46659
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xa6
mov byte [esp + 0x2b], al
movzx eax, byte [esp + 0x2c]
mov ecx, eax
and ecx, 0x5a
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0xd0c4665a
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xa6
mov byte [esp + 0x2c], al
movzx eax, byte [esp + 0x2d]
mov ecx, eax
and ecx, 0x5b
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0xd0c4665b
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xa6
mov byte [esp + 0x2d], al
movzx eax, byte [esp + 0x2e]
mov ecx, eax
and ecx, 0x5c
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0xd0c4665c
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xa6
mov byte [esp + 0x2e], al
movzx eax, byte [esp + 0x2f]
mov ecx, eax
and ecx, 0x5d
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0xd0c4665d
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xa6
mov byte [esp + 0x2f], al
movzx eax, byte [esp + 0x30]
mov ecx, eax
and ecx, 0x5e
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0xd0c4665e
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xa6
mov byte [esp + 0x30], al
movzx eax, byte [esp + 0x31]
mov ecx, eax
and ecx, 0x5f
add ecx, ecx
neg ecx
add eax, ecx
add eax, 0xd0c4665f
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xa6
mov byte [esp + 0x31], al
mov eax, dword [esp + 0x20]
movzx ebx, byte [esp + 0x28]
mov ecx, eax
test bl, bl
je 0x40bb2d
lea edx, [esp + 0x28]
mov esi, eax
mov ecx, eax
jmp 0x40bb07
movzx ebx, byte [edx]
test bl, bl
je 0x40bb2d
mov bh, byte [esi]
test bh, bh
je 0x40bc57
inc esi
inc edx
lea edi, [ecx + 1]
cmp bh, bl
je 0x40bb1e
mov ecx, edi
mov esi, edi
je 0x40bb00
lea edx, [esp + 0x28]
jmp 0x40bb00
xor ebx, ebx
jmp 0x40bdcb
test ecx, ecx
je 0x40bc57
mov dword [esp + 0x28], 0x8f70af4
mov dword [esp + 0x2c], 0xf30f4f21
mov dword [esp + 0x30], 0x4b42f8ff
mov dword [esp + 0x34], 0xcfc06f0
mov dword [esp + 0x38], 0x93bad6fd
lea eax, [esp + 0x3c]
mov dword [esp], eax
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov word [esp + 0x44], 0
mov ecx, 0x1868cd71
movzx eax, byte [esp + ecx - 0x1868cd49]
mov dword [esp + 4], eax
mov edx, eax
not edx
or edx, ecx
add edx, eax
inc edx
mov ebx, edx
or ebx, 0xfffffffd
lea edi, [ebx + 1]
mov esi, edx
and esi, 0xfffffffd
imul esi, edi
mov edi, edx
xor edx, 2
lea eax, [ebx + edx]
add edx, ebx
add edx, 3
and edi, 2
neg eax
and eax, edi
mov ebx, edi
not ebx
and ebx, edx
imul ebx, eax
mov eax, edx
and eax, edi
or edi, edx
imul edi, eax
add esi, dword [esp + 4]
sub esi, edi
sub esi, ebx
add esi, ecx
mov dword [esp + 8], esi
mov eax, dword [esp + 8]
add al, 0xe9
mov byte [esp + ecx - 0x1868cd49], al
inc ecx
cmp ecx, 0x1868cd8f
jne 0x40bb80
lea eax, [esp + 0x28]
lea esi, [esp + 8]
mov edi, esi
mov ecx, 5
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0x1c]
xor ecx, ecx
mov eax, dword [esp]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, dword [esp + 0x20]
movzx ebx, byte [esp + 8]
test bl, bl
je 0x40bc5e
mov edx, esi
mov dword [esp], ecx
jmp 0x40bc37
movzx ebx, byte [edx]
test bl, bl
je 0x40bc61
movzx eax, byte [ecx]
test al, al
je 0x40bdbc
inc ecx
inc edx
mov edi, dword [esp]
inc edi
cmp al, bl
je 0x40bc51
mov dword [esp], edi
mov ecx, edi
je 0x40bc30
mov edx, esi
jmp 0x40bc30
xor ebx, ebx
jmp 0x40bdc2
mov dword [esp], ecx
xor ebx, ebx
cmp dword [esp], 0
je 0x40bdbe
mov word [esp + 0x28], 0xc7d4
mov byte [esp + 0x2a], 0xb8
mov dword [esp + 0x2b], 0
mov dword [esp + 0x2f], 0
mov dword [esp + 0x33], 0
mov byte [esp + 0x37], 0
mov ecx, 0xffffffff
nop
nop
nop
nop
nop
mov dword [esp + 4], ebx
movzx edx, byte [esp + ebx + 0x28]
mov eax, ecx
or eax, 0x51035ae8
mov edi, ebx
and edi, 0x51035ae8
sub edi, eax
lea eax, [edi - 0x51035aea]
and eax, edx
mov esi, eax
or esi, 0xfffffffd
inc esi
mov ebx, eax
and ebx, 0xfffffffd
imul ebx, esi
mov esi, eax
and esi, 2
or eax, 2
imul eax, esi
add edx, edi
add edx, 0xaefca516
sub edx, eax
add edx, ebx
mov ebx, dword [esp + 4]
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x24]
mov edx, eax
xor edx, 0x5e
and eax, 0x5e
lea eax, [edx + eax*2]
inc al
mov byte [esp + ebx + 0x28], al
inc ebx
dec ecx
cmp ebx, 0x10
jne 0x40bca0
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40bd55
mov edi, dword [esp]
add edi, 0x13
lea ecx, [esp + 0x28]
mov edx, edi
mov dword [esp], edi
jmp 0x40bd39
movzx ebx, byte [ecx]
test bl, bl
mov edi, esi
je 0x40bd6a
movzx eax, byte [edx]
test al, al
je 0x40bdbc
inc edx
inc ecx
mov esi, edi
inc edi
cmp al, bl
je 0x40bd4d
mov esi, edi
mov edx, edi
je 0x40bd30
lea ecx, [esp + 0x28]
jmp 0x40bd30
mov byte [0x44b0b8], 1
mov ebx, 0x44b0ba
mov word [ebx], 0
mov bl, 1
jmp 0x40bdbe
test edi, edi
je 0x40bdbc
mov byte [0x44b0b8], 1
mov dword [esp + 0x28], 0
mov ebx, 0x44b0ba
mov eax, dword [esp]
cmp edi, eax
jbe 0x40bd61
cmp byte [eax], 0
je 0x40bd61
lea ecx, [esp + 0x28]
push ecx
push edi
push eax
mov esi, eax
call fcn.0040d150
add esp, 0xc
movzx ecx, word [esp + 0x28]
mov word [ebx], cx
add ebx, 2
cmp ebx, 0x44b2b8
jae 0x40bd61
add esi, eax
cmp esi, edi
mov eax, esi
jb 0x40bd89
jmp 0x40bd61
xor ebx, ebx
mov eax, dword [esp + 0x20]
push eax
call fcn.0043a980
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret