Function at 0x40b390
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 dword [esp + 0x38], 0x4e86726d
mov dword [esp + 0x3c], 0x7a7c707c
lea eax, [esp + 0x40]
mov dword [esp + 0xc], eax
mov byte [esp + 0x40], 4
mov dword [esp + 0x41], 0
mov dword [esp + 0x45], 0
mov dword [esp + 0x49], 0
mov word [esp + 0x4d], 0
lea eax, [esp + 0x38]
mov ecx, 0xccb1a9fb
mov edx, 0x6658d4fd
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 4], edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 8], eax
movzx edx, byte [eax]
mov edi, dword [esp + 4]
or edi, edx
mov ecx, edi
not ecx
lea eax, [edi + ecx*2]
mov ebx, 0xfffffffe
sub ebx, eax
mov eax, ebx
not eax
lea ecx, [edi + ecx*2]
inc ecx
and ebx, 2
and eax, 0xfffffffd
imul eax, ebx
mov ebx, ecx
and ebx, 2
or ecx, 2
imul ecx, ebx
mov ebx, edx
not ebx
mov esi, ebx
and esi, 0xd3b8f842
and edx, 0xffffffbd
or edx, esi
xor edx, 0x2c4707bd
and edx, ebx
lea esi, [edx + edx]
not esi
add esi, edx
add ecx, edi
mov edx, dword [esp + 4]
add eax, ecx
inc eax
and esi, edx
or eax, esi
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
mov eax, ecx
not eax
and eax, 0xe
and ecx, 0xf1
sub ecx, eax
mov eax, dword [esp + 8]
mov byte [eax], cl
mov ecx, dword [esp + 0x2c]
inc eax
add ecx, 0xfffffffe
dec edx
cmp ecx, 0xccb1a9cd
jne 0x40b3f0
lea edi, [esp + 0xab]
lea edx, [esp + 0x38]
mov ecx, 2
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xb3]
xor ecx, ecx
mov eax, dword [esp + 0xc]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
movzx ecx, byte [esp + 0x40]
mov byte [esp + 0xb3], cl
mov dword [esp + 0x38], 0xdb4dd91b
mov dword [esp + 0x3c], 0xd75ad542
mov dword [esp + 0x40], 0xd344d14d
mov dword [esp + 0x44], 0xcf1bcd40
mov dword [esp + 0x48], 0xcb43c964
mov dword [esp + 0x4c], 0xc75bc554
mov dword [esp + 0x50], 0xc322c10a
mov dword [esp + 0x54], 0xbf2ebd1d
mov dword [esp + 0x58], 0xbb2eb928
mov dword [esp + 0x5c], 0xb715b52d
mov dword [esp + 0x60], 0xb33eb111
mov dword [esp + 0x64], 0xaf39ad35
mov dword [esp + 0x68], 0xab7da93e
mov dword [esp + 0x6c], 0xa773a52c
mov dword [esp + 0x70], 0xa32da12f
mov dword [esp + 0x74], 0x9f4b9d13
mov dword [esp + 0x78], 0x9b0d9906
mov dword [esp + 0x7c], 0x97039506
mov dword [esp + 0x80], 0x931f9145
mov dword [esp + 0x84], 0x8f1a8d1e
mov dword [esp + 0x88], 0x8b1c8915
mov dword [esp + 0x8c], 0x87118527
mov dword [esp + 0x90], 0x831f811c
mov dword [esp + 0x94], 0x7f8b7de0
mov dword [esp + 0x98], 0x7b7a7982
mov word [esp + 0xa0], 0
mov dword [esp + 0x9c], 0
mov ecx, 0x69648224
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x696481ec]
lea esi, [ecx - 0x69648200]
and esi, edx
add esi, esi
sub edx, esi
add edx, ecx
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x10]
mov esi, edx
not esi
mov ebx, esi
shl ebx, 8
sub ebx, esi
sub ebx, esi
sub ebx, edx
add ebx, 0xfe
mov edi, esi
and edi, 0xfc
or esi, 0xfc
xor edx, 3
or edx, edi
and edx, esi
or ebx, 3
sub ebx, edx
mov byte [esp + ecx - 0x696481ec], bl
inc ecx
cmp ecx, 0x6964828e
jne 0x40b5c0
mov dword [esp + 0x10], 0x33ab3567
mov dword [esp + 0x14], 0x2fa731a2
mov word [esp + 0x18], 0x2d2e
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov byte [esp + 0x22], 0
xor ecx, ecx
xor edi, edi
nop
nop
nop
movzx eax, byte [esp + edi + 0x10]
mov dword [esp + 4], eax
mov ebx, ecx
and ebx, 0x12
mov esi, edi
xor esi, 0x9124fa09
add esi, ebx
mov ebx, eax
not ebx
lea eax, [eax + ebx*2]
inc eax
and eax, esi
lea edx, [esi + esi]
not edx
add edx, esi
or edx, ebx
mov esi, dword [esp + 4]
add edx, esi
inc edx
or edx, eax
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x34]
mov eax, edx
not eax
and eax, 0x3f
and edx, 0xc0
sub edx, eax
mov byte [esp + edi + 0x10], dl
inc edi
add ecx, 2
cmp edi, 0x13
jne 0x40b650
lea eax, [esp + 0x30]
lea ecx, [esp + 0x10]
push 0
push eax
push 8
lea eax, [esp + 0xb7]
push eax
lea eax, [esp + 0x48]
push eax
push ecx
push dword [ebp + 8]
call fcn.0040c4d0
add esp, 0x1c
xor ebx, ebx
test al, al
je 0x40bd4f
mov word [esp + 0x38], 0xa0f
mov byte [esp + 0x3a], 0xb2
mov dword [esp + 0x3b], 0
mov dword [esp + 0x3e], 0
mov dword [esp + 0x10], 0xcd445817
mov eax, dword [esp + 0x10]
add al, 0x58
mov byte [esp + 0x38], al
movzx eax, byte [esp + 0x39]
mov ecx, eax
and ecx, 0x19
mov edx, eax
xor edx, 0x32bba7e6
add edx, eax
sub edx, ecx
not eax
or eax, 0xcd445819
and eax, edx
not eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x58
mov byte [esp + 0x39], al
movzx eax, byte [esp + 0x3a]
mov ecx, eax
and ecx, 0x1a
mov edx, eax
xor edx, 0x32bba7e5
add edx, eax
sub edx, ecx
not eax
or eax, 0xcd44581a
and eax, edx
not eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x58
mov byte [esp + 0x3a], al
movzx eax, byte [esp + 0x3b]
mov ecx, eax
and ecx, 0x1b
mov edx, eax
xor edx, 0x32bba7e4
add edx, eax
sub edx, ecx
not eax
or eax, 0xcd44581b
and eax, edx
not eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x58
mov byte [esp + 0x3b], al
movzx eax, byte [esp + 0x3c]
mov ecx, eax
and ecx, 0x1c
mov edx, eax
xor edx, 0x32bba7e3
add edx, eax
sub edx, ecx
not eax
or eax, 0xcd44581c
and eax, edx
not eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x58
mov byte [esp + 0x3c], al
movzx eax, byte [esp + 0x3d]
mov ecx, eax
and ecx, 0x1d
mov edx, eax
xor edx, 0x32bba7e2
add edx, eax
sub edx, ecx
not eax
or eax, 0xcd44581d
and eax, edx
not eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x58
mov byte [esp + 0x3d], al
movzx eax, byte [esp + 0x3e]
mov ecx, eax
and ecx, 0x1e
mov edx, eax
xor edx, 0x32bba7e1
add edx, eax
sub edx, ecx
not eax
or eax, 0xcd44581e
and eax, edx
not eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x58
mov byte [esp + 0x3e], al
movzx eax, byte [esp + 0x3f]
mov ecx, eax
and ecx, 0x1f
mov edx, eax
xor edx, 0x32bba7e0
add edx, eax
sub edx, ecx
not eax
or eax, 0xcd44581f
and eax, edx
not eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x58
mov byte [esp + 0x3f], al
movzx eax, byte [esp + 0x40]
mov ecx, eax
and ecx, 0x20
mov edx, eax
xor edx, 0x32bba7df
add edx, eax
sub edx, ecx
not eax
or eax, 0xcd445820
and eax, edx
not eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x58
mov byte [esp + 0x40], al
movzx eax, byte [esp + 0x41]
mov ecx, eax
and ecx, 0x21
mov edx, eax
xor edx, 0x32bba7de
add edx, eax
sub edx, ecx
not eax
or eax, 0xcd445821
and eax, edx
not eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x58
mov byte [esp + 0x41], al
mov eax, dword [esp + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [eax + ebx]
movzx edx, byte [esp + ebx + 0x38]
test cl, cl
je 0x40b8d2
inc ebx
cmp cl, dl
je 0x40b8c0
mov bl, 1
cmp cl, dl
je 0x40bd46
mov dword [esp + 0x38], 0x9f818e93
mov dword [esp + 0x3c], 0x2f9a9885
mov dword [esp + 0x40], 0
mov word [esp + 0x44], 0
mov eax, 0x199cbc86
mov dword [esp + 8], 0x6663437a
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 4], eax
movzx ecx, byte [esp + eax - 0x199cbc4e]
mov edx, dword [esp + 4]
neg edx
mov eax, dword [esp + 4]
lea ebx, [eax - 1]
mov edi, ecx
xor edi, 0x453353f4
mov esi, ecx
or esi, 0xb
and esi, edi
mov edi, ecx
and edi, 0xfffffff4
and ebx, 0x40b
xor edi, esi
not esi
or esi, ecx
mov ecx, dword [esp + 8]
or ecx, 0xbaccac0b
add ecx, dword [esp + 4]
or ebx, ecx
not esi
and esi, 0xfffffff4
xor edi, 0x453353f4
or edi, esi
and edx, 0x453353f4
and ecx, edx
xor edx, ebx
or edx, ecx
mov ecx, edi
and ecx, edx
mov ebx, ecx
and ebx, 0xfffffffd
mov esi, ecx
or esi, 0xfffffffd
inc esi
imul esi, ebx
mov ebx, ecx
and ebx, 2
or ecx, 2
imul ecx, ebx
sub esi, ecx
add edx, edi
add edx, esi
mov dword [esp + 0x10], edx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x10]
add cl, 0x5d
mov byte [esp + eax - 0x199cbc4e], cl
inc eax
dec dword [esp + 8]
cmp eax, 0x199cbc94
jne 0x40b910
mov eax, dword [esp + 0x30]
movzx ebx, byte [esp + 0x38]
mov ecx, eax
test bl, bl
je 0x40ba06
lea edx, [esp + 0x38]
mov edi, eax
mov ecx, eax
jmp 0x40b9e7
movzx ebx, byte [edx]
test bl, bl
je 0x40ba06
mov bh, byte [edi]
test bh, bh
je 0x40bb34
inc edi
inc edx
lea esi, [ecx + 1]
cmp bh, bl
je 0x40b9fe
mov ecx, esi
mov edi, esi
je 0x40b9e0
lea edx, [esp + 0x38]
jmp 0x40b9e0
test ecx, ecx
je 0x40bb34
mov dword [esp + 0x38], 0x162f102e
mov dword [esp + 0x3c], 0x23175779
mov dword [esp + 0x40], 0x4b483237
mov dword [esp + 0x44], 0x3a320c3a
mov dword [esp + 0x48], 0xa3406c05
lea eax, [esp + 0x4c]
mov dword [esp + 8], eax
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov eax, 0x5d7d4f92
mov esi, 0x2ebea7c9
mov dword [esp + 4], eax
movzx eax, byte [esp + esi - 0x2ebea791]
mov edx, dword [esp + 4]
and edx, 0x8254890
mov ecx, esi
xor ecx, 0x513e448
mov ebx, 0xc8
sub ebx, edx
sub ebx, ecx
lea edi, [edx + ecx]
add edi, 0x37
add edx, ecx
add edx, 0xd1415837
lea ecx, [eax + eax]
not ecx
add ecx, eax
and edx, ecx
and ebx, 0x89
and edi, 0x76
or edi, ebx
xor edi, 0x76
and edi, eax
or edi, edx
mov dword [esp + 0x10], edi
mov ecx, dword [esp + 0x10]
mov edx, ecx
and edx, 7
xor ecx, 7
lea ecx, [ecx + edx*2]
mov eax, dword [esp + 4]
inc cl
mov byte [esp + esi - 0x2ebea791], cl
add eax, 2
inc esi
cmp eax, 0x5d7d4fd2
jne 0x40ba60
lea eax, [esp + 0x38]
mov ecx, 5
lea ebx, [esp + 0x10]
mov edi, ebx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0x24]
xor ecx, ecx
mov eax, dword [esp + 8]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, dword [esp + 0x30]
movzx eax, byte [esp + 0x10]
test al, al
je 0x40bb3b
mov edx, ebx
mov edi, ecx
jmp 0x40bb17
movzx eax, byte [edx]
test al, al
je 0x40bb3d
mov ah, byte [ecx]
test ah, ah
je 0x40bd31
inc ecx
inc edx
lea esi, [edi + 1]
cmp ah, al
je 0x40bb2e
mov edi, esi
mov ecx, esi
je 0x40bb10
mov edx, ebx
jmp 0x40bb10
xor ebx, ebx
jmp 0x40bd46
mov edi, ecx
xor ebx, ebx
test edi, edi
je 0x40bd42
mov dword [esp + 0xc], edi
mov word [esp + 0x38], 0x17f0
mov byte [esp + 0x3a], 0xd4
mov dword [esp + 0x3b], 0
mov dword [esp + 0x3f], 0
mov dword [esp + 0x42], 0
mov eax, 0xebaaae1d
mov dword [esp + 0x2c], 0x145551e2
nop
nop
nop
nop
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
lea edx, [eax + 0x145551e3]
and ebx, 4
mov ecx, dword [esp + 4]
movzx edi, byte [esp + ecx + 0x1455521b]
neg ebx
mov ecx, dword [esp + 4]
lea eax, [ecx + ebx]
add eax, 0x945551d5
and eax, edx
mov esi, eax
and esi, 2
mov edx, eax
or eax, 2
imul eax, esi
xor esi, 2
and edx, 0xd
imul edx, esi
mov ebx, dword [esp + 8]
and ebx, 0x1a
lea ecx, [eax + edx]
sub ecx, ebx
add ecx, dword [esp + 4]
mov esi, edi
not esi
lea esi, [edi + esi*2]
inc esi
and esi, ecx
sub ebx, edx
mov edx, esi
sub ebx, eax
add ebx, dword [esp + 0x2c]
and ebx, edi
mov eax, ebx
not eax
lea edi, [ebx + ebx]
not edi
add edi, ebx
or eax, 0x3fdba18e
add eax, ebx
inc eax
mov ebx, dword [esp + 8]
mov ecx, edi
and ecx, 0xc0245e71
xor esi, 0xc0245e71
or eax, ecx
mov ecx, eax
and ecx, esi
add eax, esi
not edx
add ecx, ecx
sub eax, ecx
or edi, edx
lea edx, [edi + edi]
not edx
add edx, edi
mov ecx, edi
and ecx, 0xf04ed1dc
and edx, 0xfb12e23
or edx, ecx
xor edx, eax
not edi
and edi, eax
xor edx, 0xf04ed1dc
or edi, edx
mov dword [esp + 0x34], edi
mov eax, dword [esp + 0x34]
add eax, 0xe27a646d
mov ecx, eax
xor ecx, 0x34
and eax, 0x34
lea eax, [ecx + eax*2]
add al, 0x94
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x1455521b], al
mov eax, dword [esp + 4]
inc eax
add ebx, 2
dec dword [esp + 0x2c]
cmp eax, 0xebaaae2b
jne 0x40bb80
movzx eax, byte [esp + 0x38]
test al, al
je 0x40bcc4
mov edi, dword [esp + 0xc]
add edi, 0x13
lea ebx, [esp + 0x38]
mov ecx, ebx
mov edx, edi
mov dword [esp + 0xc], edi
jmp 0x40bca7
movzx eax, byte [ecx]
test al, al
je 0x40bcd2
mov ah, byte [edx]
test ah, ah
je 0x40bd31
inc edx
inc ecx
lea esi, [edi + 1]
cmp ah, al
je 0x40bcbe
mov edi, esi
mov edx, esi
je 0x40bca0
mov ecx, ebx
jmp 0x40bca0
mov byte [0x44c304], 1
mov eax, 0x44c306
jmp 0x40bd3b
test edi, edi
je 0x40bd31
mov byte [0x44c304], 1
mov dword [esp + 0x38], 0
mov eax, 0x44c306
cmp dword [esp + 0xc], edi
jae 0x40bd3b
xor ebx, ebx
mov esi, dword [esp + 0xc]
cmp byte [esi], 0
je 0x40bd35
lea eax, [esp + 0x38]
push eax
push edi
push esi
call fcn.0040d6e0
add esp, 0xc
movzx edx, word [esp + 0x38]
lea ecx, [ebx + 2]
mov word [ebx + 0x44c306], dx
cmp ebx, 0x1fb
ja 0x40bd29
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40bcf6
lea eax, [ecx + 0x44c306]
jmp 0x40bd3b
xor ebx, ebx
jmp 0x40bd42
lea eax, [ebx + 0x44c306]
mov word [eax], 0
mov bl, 1
mov eax, dword [esp + 0x30]
push eax
call fcn.0043be60
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret