Function at 0x409a30
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 0x409f9a
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.004061a0
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 dword [esp + 8], edx
lea eax, [edx + 0x400]
push eax
call fcn.004083b0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x74], 0x555d4254
mov byte [esp + 0x78], 0xc8
mov dword [esp + 0x79], 0
mov dword [esp + 0x7c], 0
mov eax, 0xe09e31d3
mov ecx, 0x761ce2c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x1f61cea1]
mov ebx, ecx
and ebx, 0x6404809
mov edx, eax
and edx, 0x809631b6
or edx, ebx
xor edx, edi
mov edi, edx
and edi, 0x60
add edi, edi
xor edi, 0x80
xor edx, 0xfaa14ea9
add edi, edx
and edx, 1
xor edi, 1
lea edx, [edi + edx*2]
mov byte [esp + eax + 0x1f61cea1], dl
inc eax
dec ecx
cmp eax, 0xe09e31df
jne 0x409ad0
lea ebx, [esp + 0x74]
mov ecx, esi
push 0x44b9dc
push ebx
push dword [esp + 8]
call fcn.00409370
mov dword [esp + 0x74], 0x178a8088
mov word [esp + 0x78], 0
mov byte [esp + 0x7a], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, eax
and edx, 0xc
mov edi, ecx
xor edi, 0xbb1fec46
mov ebp, edx
and ebp, edi
xor edi, edx
lea edx, [edi + ebp*2]
xor dl, byte [esp + ecx + 0x74]
add dl, 0xa2
mov byte [esp + ecx + 0x74], dl
inc ecx
add eax, 2
cmp ecx, 7
jne 0x409b50
lea eax, [esp + 6]
mov ecx, esi
push eax
push ebx
push dword [esp + 8]
call fcn.00409370
mov eax, dword [str.LPnhqo__znnuaosvghun]
mov dword [esp + 0xc], eax
mov dword [esp + 0x74], 0x89363c38
mov byte [esp + 0x78], 0
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edi + 0x74]
lea edx, [edi + edi]
mov eax, edx
and eax, 6
mov ecx, edi
xor ecx, 0x34aea083
add ecx, eax
mov eax, 0xebfff25f
sub eax, ecx
add ecx, 0x14000ea0
xor eax, ecx
and eax, ebp
xor eax, ecx
add al, 0x51
mov byte [esp + edi + 0x74], al
and edx, 2
mov eax, edx
and eax, edi
xor edx, edi
xor edx, 1
lea edi, [edx + eax*2]
cmp edi, 5
jb 0x409bb0
mov ecx, esi
push dword [esp + 0xc]
push ebx
push dword [esp + 8]
call fcn.00409370
mov dword [esp + 0x74], 0x15681061
mov dword [esp + 0x78], 0x780d7419
mov dword [esp + 0x7c], 0xa0b0c79
mov byte [esp + 0x80], 0xe0
mov dword [esp + 0x81], 0
mov word [esp + 0x85], 0
xor eax, eax
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x74]
lea ecx, [eax + 0x2ef19aab]
xor ecx, edx
add ecx, 0x631ed17c
mov edx, ecx
xor edx, 0xd3
and ecx, 0x2c
add ecx, ecx
sub ecx, edx
mov byte [esp + eax + 0x74], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x13
jb 0x409c40
mov dword [esp + 0x14], 0x73ced2d1
mov dword [esp + 0x18], 0
mov eax, 0xb758d762
mov ecx, 0x6eb1aec4
movzx edi, byte [esp + eax + 0x48a728b2]
mov ebp, eax
xor ebp, 0xdc14e64e
mov edx, ecx
and edx, 0x46902242
sub edx, ebp
mov ebp, edx
and ebp, edi
add edx, edi
add ebp, ebp
sub edx, ebp
add dl, 0x9c
mov byte [esp + eax + 0x48a728b2], dl
inc eax
add ecx, 2
cmp eax, 0xb758d76a
jne 0x409c90
lea eax, [esp + 0x14]
mov ecx, esi
push ebx
push eax
push dword [esp + 8]
call fcn.00409370
mov dword [esp + 0x74], 0xd2dedcd6
mov byte [esp + 0x78], 0x48
mov dword [esp + 0x79], 0
mov byte [esp + 0x7d], 0
mov ebp, 0xb1150113
mov ecx, 0x4eeafeec
nop
nop
movzx edx, byte [esp + ebp + 0x4eeaff61]
mov edi, ecx
and edi, 0x29
mov eax, ebp
and eax, 0x16
or eax, edi
xor eax, edx
xor eax, 0x56
and eax, ebp
add al, al
sub dl, al
movzx eax, dl
add eax, ebp
add al, 0xa1
mov byte [esp + ebp + 0x4eeaff61], al
inc ebp
dec ecx
cmp ebp, 0xb115011d
jne 0x409d00
mov ecx, esi
push dword [esp + 8]
push dword [esp + 0x14]
push ebx
push dword [esp + 0xc]
call fcn.004095d0
mov dword [esp + 0x14], 0xff6df93f
mov dword [esp + 0x18], 0xe376fd6e
mov dword [esp + 0x1c], 0xe774e105
mov dword [esp + 0x20], 0xebc7e570
mov dword [esp + 0x24], 0xef77e91c
mov dword [esp + 0x28], 0x9377ed7c
mov dword [esp + 0x2c], 0x97b6914e
mov dword [esp + 0x30], 0x9b0f9579
mov dword [esp + 0x34], 0x9f0a9974
mov dword [esp + 0x38], 0x83129d75
mov dword [esp + 0x3c], 0x87108161
mov dword [esp + 0x40], 0x8b598510
mov dword [esp + 0x44], 0x8f1d8962
mov dword [esp + 0x48], 0xb35f8d1a
mov dword [esp + 0x4c], 0xb752b19d
mov dword [esp + 0x50], 0xbb2eb555
mov dword [esp + 0x54], 0xbf61b959
mov dword [esp + 0x58], 0xa344bd9c
mov dword [esp + 0x5c], 0xa733a133
mov dword [esp + 0x60], 0xab4ea536
mov dword [esp + 0x64], 0xaf38a949
mov dword [esp + 0x68], 0x538fad35
mov word [esp + 0x6c], 0x5150
mov word [esp + 0x72], 0
mov dword [esp + 0x6e], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, eax
not edx
or edx, 0xaa
mov ecx, eax
or ecx, 0xaa
add ecx, eax
add ecx, edx
inc cl
xor cl, byte [esp + eax + 0x14]
add cl, 0xae
mov byte [esp + eax + 0x14], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x60
jb 0x409e20
movzx eax, word [esp + 0x14]
test ax, ax
je 0x409e81
lea ebx, [esp + 0x74]
lea ecx, [esp + 0x16]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409e70
mov word [ebx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409eb1
lea eax, [esi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebx], cx
add ebx, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409ea0
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 8], eax
mov dword [esp + 0x14], 0xb9ddbbd5
mov dword [esp + 0x18], 0xbd21bf28
mov word [esp + 0x1c], 0xb3bc
mov dword [esp + 0x1e], 0
mov word [esp + 0x22], 0
xor ecx, ecx
nop
movzx edx, byte [esp + ecx + 0x14]
lea edi, [ecx - 0x83117e1]
mov ebp, 0x20
sub ebp, ecx
and ebp, 0x35
mov ebx, edi
and ebx, 0x230c400a
or ebx, ebp
xor ebx, edx
xor ebx, 0x230c400a
and ebx, edi
mov edi, ebx
and edi, 2
mov ebp, ebx
or ebp, 0xfd
inc ebp
mov eax, ebx
and eax, 0x3d
imul eax, ebp
or ebx, 2
imul ebx, edi
sub eax, ebx
add eax, ecx
add eax, 0xf7cee81f
add al, dl
add al, 0x65
mov byte [esp + ecx + 0x14], al
mov eax, ecx
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 0x10
jb 0x409ef0
lea eax, [esp + 0x74]
push 0x493e0
push dword [esp + 0xc]
mov edi, dword [esp + 8]
push edi
push 0
push 0
push eax
lea eax, [esp + 0x2c]
push eax
call fcn.0040c630
add esp, 0x1c
mov ebx, eax
push edi
call fcn.004083c0
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x409f9c
mov bl, 1
mov eax, ebx
add esp, 0x110
pop esi
pop edi
pop ebx
pop ebp
ret