Function at 0x409b80
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x110
cmp dword [ecx + 0x20], 0
je 0x40a0ea
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.004062f0
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x10], eax
movzx eax, byte [esi]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 6], al
mov byte [esp + 7], 0
mov eax, edx
and eax, 0x400
mov dword [esp + 0x14], edx
mov ecx, edx
xor ecx, 0x400
lea eax, [ecx + eax*2]
push eax
call fcn.004084d0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x74], 0x55457644
mov byte [esp + 0x78], 0xf0
mov dword [esp + 0x79], 0
mov word [esp + 0x7d], 0
mov eax, 0x4b9834d5
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x4b983461]
xor ecx, eax
mov edx, 1
sub edx, ecx
not edx
or edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0xd6
mov byte [esp + eax - 0x4b983461], cl
inc eax
cmp eax, 0x4b9834e0
jne 0x409c20
lea ebp, [esp + 0x74]
mov ecx, esi
push 0x44ce4c
push ebp
push dword [esp + 8]
call fcn.00409500
mov dword [esp + 0x74], 0x137e7880
mov eax, 0x1fefe7fb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [ebp]
mov edx, eax
or edx, ecx
lea edi, [edx + edx]
not edi
add edi, edx
lea edx, [eax - 0x1fefe700]
and edx, ecx
or edx, edi
mov ecx, edx
and ecx, 0x6b
xor edx, 0xeb
lea ecx, [edx + ecx*2]
inc cl
mov byte [ebp], cl
inc ebp
dec eax
cmp eax, 0x1fefe7f7
jne 0x409c80
lea eax, [esp + 6]
lea ebp, [esp + 0x74]
mov dword [esp + 8], esi
mov ecx, esi
push eax
push ebp
push dword [esp + 8]
call fcn.00409500
mov eax, dword [str.Dvh8ui__222]
mov dword [esp + 0xc], eax
mov dword [esp + 0x74], 0x57fae0fc
mov byte [esp + 0x78], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x74]
lea edi, [ecx + 0x251d106e]
mov eax, 0x5ae2ef91
sub eax, ecx
mov edx, eax
or edx, ebx
mov esi, 0x11
sub esi, ecx
and esi, ebx
xor esi, edx
lea edx, [ecx - 0x5ae2ef92]
and edx, esi
add edx, edx
xor edi, edx
and edx, eax
add edx, edx
sub edx, edi
mov eax, edx
xor eax, ebx
not edx
and edx, ebx
add edx, edx
sub edx, eax
lea eax, [edx + edx]
and eax, 0xcdd5bb2
xor edx, 0x466eadd9
mov esi, eax
and esi, edx
xor eax, edx
lea eax, [eax + esi*2]
and edx, 1
or eax, 1
add eax, edx
mov byte [esp + ecx + 0x74], al
add ecx, 0xb2a4292
mov eax, ecx
and eax, 0xf
xor ecx, 0xf4d5bd6f
lea ecx, [ecx + eax*2]
cmp ecx, 5
jb 0x409cf0
mov ecx, dword [esp + 8]
push dword [esp + 0xc]
push ebp
push dword [esp + 8]
call fcn.00409500
mov dword [esp + 0x74], 0x9d9098a9
mov dword [esp + 0x78], 0xb09d9481
mov dword [esp + 0x7c], 0x86879cb1
mov byte [esp + 0x80], 0x38
mov dword [esp + 0x81], 0
mov dword [esp + 0x84], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 9
xor cl, byte [esp + eax + 0x74]
add cl, 0xd3
mov byte [esp + eax + 0x74], cl
inc eax
cmp eax, 0x14
jne 0x409dc0
mov dword [esp + 0x18], 0x61eafac7
mov word [esp + 0x1c], 0
mov eax, 0x39899be7
mov ecx, 0x19
nop
movzx ebx, byte [esp + ecx - 1]
mov edx, ecx
and edx, ebx
mov esi, edx
and esi, 2
mov edi, edx
or edx, 2
imul edx, esi
xor esi, 2
and edi, 0x3d
imul edi, esi
add edx, edi
lea esi, [eax + edx]
xor esi, ebx
not edx
add edx, ecx
and edx, ebx
add edx, edx
sub edx, esi
add dl, 0x83
mov byte [esp + ecx - 1], dl
dec eax
inc ecx
cmp ecx, 0x1f
jne 0x409df0
lea eax, [esp + 0x18]
mov edi, dword [esp + 8]
mov ecx, edi
push ebp
push eax
push dword [esp + 8]
call fcn.00409500
mov dword [esp + 0x74], 0xbaa2a0a2
mov byte [esp + 0x78], 0xd4
mov word [esp + 0x79], 0
mov byte [esp + 0x7b], 0
mov eax, 0x2a6297b1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [ebp]
mov edx, eax
or edx, ecx
lea esi, [eax - 0x2a629700]
and esi, ecx
not edx
or edx, esi
mov ecx, edx
and ecx, 0x79
xor edx, 0x79
lea ecx, [edx + ecx*2]
inc cl
mov byte [ebp], cl
inc ebp
dec eax
cmp eax, 0x2a6297a9
jne 0x409e70
lea ebp, [esp + 0x74]
mov ecx, edi
push dword [esp + 0x14]
push dword [esp + 0x14]
push ebp
push dword [esp + 0xc]
call fcn.004097c0
mov dword [esp + 0x18], 0xffd09cf
mov dword [esp + 0x1c], 0x3f60dfe
mov dword [esp + 0x20], 0x7f401e5
mov dword [esp + 0x24], 0x1b2705f0
mov dword [esp + 0x28], 0x1f9719cc
mov dword [esp + 0x2c], 0x13f71dec
mov dword [esp + 0x30], 0x173611de
mov dword [esp + 0x34], 0x2bdf15e9
mov dword [esp + 0x38], 0x2fda29d4
mov dword [esp + 0x3c], 0x23d22dd5
mov dword [esp + 0x40], 0x27d021c1
mov dword [esp + 0x44], 0x3b0925d0
mov dword [esp + 0x48], 0x3fcd39c2
mov dword [esp + 0x4c], 0x33cf3dca
mov dword [esp + 0x50], 0x37d2310d
mov dword [esp + 0x54], 0xcb3e35d5
mov dword [esp + 0x58], 0xcf01c929
mov dword [esp + 0x5c], 0xc324cdec
mov dword [esp + 0x60], 0xc733c133
mov dword [esp + 0x64], 0xdb3ec536
mov dword [esp + 0x68], 0xdf28d939
mov dword [esp + 0x6c], 0xd31fdd55
mov dword [esp + 0x70], 0xd1d0
mov eax, 0x42
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x2a]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0xb6
mov byte [esp + eax - 0x2a], cl
inc eax
cmp eax, 0x9e
jne 0x409f80
movzx eax, word [esp + 0x18]
test ax, ax
je 0x409fd2
lea ebp, [esp + 0x74]
lea ecx, [esp + 0x1a]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebp], ax
add ebp, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409fc0
mov word [ebp], 0
movzx ecx, byte [edi + 0x60]
test cl, cl
je 0x40a002
lea eax, [edi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebp], cx
add ebp, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409ff0
mov dword [ebp], 0xa000d
mov word [ebp + 4], 0
mov eax, dword [edi + 0x80]
mov dword [esp + 0x18], 0x9737994b
mov dword [esp + 0x1c], 0x930b9504
mov word [esp + 0x20], 0x9190
mov dword [esp + 0x22], 0
mov byte [esp + 0x26], 0
xor ecx, ecx
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x18]
mov esi, ecx
xor esi, 0xc9266219
mov ebx, ecx
or ebx, 6
and ebx, esi
mov esi, ebx
and esi, 0xd
mov edi, ecx
and edi, 2
or ebx, 2
imul ebx, edi
mov ebp, edi
xor ebp, 2
imul ebp, esi
mov edi, ecx
xor edi, 0x36d99de6
add edi, ebp
add edi, ebx
xor edi, edx
mov edx, edi
xor edx, 0x7e
mov esi, edi
or esi, 1
and esi, edx
xor edi, 0x81
lea edx, [edi + esi*2]
inc dl
mov byte [esp + ecx + 0x18], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0xf
jb 0x40a040
lea ecx, [esp + 0x74]
push 0x493e0
push eax
mov esi, dword [esp + 8]
push esi
push 0
push 0
push ecx
lea eax, [esp + 0x30]
push eax
call fcn.0040c520
add esp, 0x1c
mov ebx, eax
push esi
call fcn.004084e0
add esp, 4
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x80]
add dword [ecx + 4], eax
mov dword [ecx + 0x80], 0
jmp 0x40a0ec
mov bl, 1
mov eax, ebx
add esp, 0x110
pop esi
pop edi
pop ebx
pop ebp
ret